[syslinux:master] ntfs: implement new_ntfs_inode()
syslinux-bot for Paulo Alcantara
pcacjr at gmail.com
Sat Dec 17 21:19:21 PST 2011
Commit-ID: 01bae76879d1720f136aa88e0b8984e15a3323bf
Gitweb: http://www.syslinux.org/commit/01bae76879d1720f136aa88e0b8984e15a3323bf
Author: Paulo Alcantara <pcacjr at gmail.com>
AuthorDate: Thu, 7 Jul 2011 22:17:10 +0000
Committer: Paulo Alcantara <pcacjr at gmail.com>
CommitDate: Wed, 7 Sep 2011 07:19:06 +0000
ntfs: implement new_ntfs_inode()
Signed-off-by: Paulo Alcantara <pcacjr at gmail.com>
---
core/fs/ntfs/ntfs.c | 11 +++++++++++
core/fs/ntfs/ntfs.h | 32 ++++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/core/fs/ntfs/ntfs.c b/core/fs/ntfs/ntfs.c
index 24c9859..de73f38 100644
--- a/core/fs/ntfs/ntfs.c
+++ b/core/fs/ntfs/ntfs.c
@@ -44,6 +44,17 @@ static inline int ntfs_check_sb_fields(const struct ntfs_bpb *sb)
!memcmp(sb->oem_name, "MSWIN4.1", 8));
}
+static inline struct inode *new_ntfs_inode(struct fs_info *fs)
+{
+ struct inode *inode;
+
+ inode = alloc_inode(fs, 0, sizeof(struct ntfs_inode));
+ if (!inode)
+ malloc_error("inode structure");
+
+ return inode;
+}
+
/* Initialize the filesystem metadata and return block size in bits */
static int ntfs_fs_init(struct fs_info *fs)
{
diff --git a/core/fs/ntfs/ntfs.h b/core/fs/ntfs/ntfs.h
index b5919a3..7e392c0 100644
--- a/core/fs/ntfs/ntfs.h
+++ b/core/fs/ntfs/ntfs.h
@@ -61,4 +61,36 @@ struct ntfs_sb_info {
} __attribute__((packed));
+/* The NTFS in-memory inode structure */
+struct ntfs_inode {
+ int64_t initialized_size;
+ int64_t allocated_size;
+ unsigned long mft_no; /* Number of the mft record / inode */
+ uint16_t seq_no; /* Sequence number of the mft record */
+ uint32_t type; /* Attribute type of this inode */
+ uint16_t *name;
+ uint32_t name_len;
+ uint32_t attr_list_size;
+ uint8_t *attr_list;
+ union {
+ struct { /* It is a directory, $MFT, or an index inode */
+ uint32_t block_size;
+ uint32_t vcn_size;
+ uint32_t collation_rule;
+ uint8_t block_size_shift; /* log2 of the above */
+ uint8_t vcn_size_shift; /* log2 of the above */
+ } index;
+ struct { /* It is a compressed/sparse file/attribute inode */
+ int64_t size;
+ uint32_t block_size;
+ uint8_t block_size_bits;
+ uint8_t block_clusters;
+ } compressed;
+ } itype;
+ uint32_t start_cluster; /* Starting cluster address */
+ sector_t start; /* Starting sector */
+ sector_t offset; /* Current sector offset */
+ sector_t here; /* Sector corresponding to offset */
+};
+
#endif /* _NTFS_H_ */
More information about the Syslinux-commits
mailing list