/* List of dentries that are aliases for this inode. There will be
* i_nlink dentries in this list. */
- struct list_head i_dentry;
+ struct hlist_head i_dentry;
/* Field to place this inode into a list. While reading a WIM image or
* adding files to a WIM image this is owned by the inode table;
struct hlist_node i_hlist;
/* Number of dentries that are aliases for this inode. */
- u32 i_nlink;
+ u32 i_nlink : 30;
/* Flag used to mark this inode as visited; this is used when visiting
* all the inodes in a dentry tree exactly once. It will be 0 by
* default and must be cleared following the tree traversal, even in
* error paths. */
- u8 i_visited : 1;
+ u32 i_visited : 1;
/* Cached value */
- u8 i_can_externally_back : 1;
+ u32 i_can_externally_back : 1;
/* If not NULL, a pointer to the extra data that was read from the
* dentry. This should be a series of tagged items, each of which
/* Iterate through each alias of the specified inode. */
#define inode_for_each_dentry(dentry, inode) \
- list_for_each_entry((dentry), &(inode)->i_dentry, d_alias)
+ hlist_for_each_entry((dentry), &(inode)->i_dentry, d_alias)
/* Return an alias of the specified inode. */
#define inode_first_dentry(inode) \
- container_of(inode->i_dentry.next, struct wim_dentry, d_alias)
+ hlist_entry(inode->i_dentry.first, struct wim_dentry, d_alias)
/* Return the full path of an alias of the specified inode, or NULL if a full
* path could not be determined. */