[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