- /* Number of dentries that are aliases for this inode. */
- u32 i_nlink;
-
- /* Number of alternate data streams (ADS) associated with this inode */
- u16 i_num_ads;
-
- /* Flag that indicates whether this inode's streams have been
- * "resolved". By default, the inode starts as "unresolved", meaning
- * that the i_hash field, along with the hash field of any associated
- * wim_ads_entry's, are valid and should be used as keys in the WIM
- * lookup table to find the associated `struct wim_lookup_table_entry'.
- * But if the inode has been resolved, then each of these fields is
- * replaced with a pointer directly to the appropriate `struct
- * wim_lookup_table_entry', or NULL if the stream is empty. */
- u8 i_resolved : 1;
-
- /* 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;
-
- /* Set if the DOS name of an inode has already been extracted. */
- u8 i_dos_name_extracted : 1;
-
- /* 1 iff all ADS entries of this inode are named or if this inode
- * has no ADS entries */
- u8 i_canonical_streams : 1;
-
- /* Pointer to a malloc()ed array of i_num_ads alternate data stream
- * entries for this inode. */
- struct wim_ads_entry *i_ads_entries;
-
- /* Creation time, last access time, and last write time for this inode, in
- * 100-nanosecond intervals since 12:00 a.m UTC January 1, 1601. They
- * should correspond to the times gotten by calling GetFileTime() on
- * Windows. */
- u64 i_creation_time;
- u64 i_last_access_time;
- u64 i_last_write_time;
-
- /* Corresponds to 'security_id' in `struct wim_dentry_on_disk': The
- * index of this inode's security descriptor in the WIM image's table of
- * security descriptors, or -1. Note: in verify_inode(), called
- * whenever a WIM image is loaded, out-of-bounds indices are set to -1,
- * so the extraction code does not need to do bounds checks. */
- int32_t i_security_id;
-
- /* Identity of a reparse point. See
- * http://msdn.microsoft.com/en-us/library/windows/desktop/aa365503(v=vs.85).aspx
- * for what a reparse point is. */
- u32 i_reparse_tag;
-
- /* Unused/unknown fields that we just read into memory so we can
- * re-write them unchanged. */
- u32 i_rp_unknown_1;
- u16 i_rp_unknown_2;
-
- /* Corresponds to not_rpfixed in `struct wim_dentry_on_disk': Set to 0
- * if reparse point fixups have been done. Otherwise set to 1. Note:
- * this actually may reflect the SYMBOLIC_LINK_RELATIVE flag.
- */
- u16 i_not_rpfixed;
-
- /* Inode number; corresponds to hard_link_group_id in the `struct
- * wim_dentry_on_disk'. */
- u64 i_ino;
-
- union {
- /* Device number, used only during image capture, so we can
- * identify hard linked files by the combination of inode number
- * and device number (rather than just inode number, which could
- * be ambigious if the captured tree spans a mountpoint). Set
- * to 0 otherwise. */
- u64 i_devno;
-
- struct {
-
- /* Used only during image extraction: pointer to the first path
- * (malloc()ed buffer) at which this inode has been extracted.
- * Freed and set to NULL after the extraction is done (either
- * success or failure). */
- tchar *i_extracted_file;
-
- /** Used only during image extraction: "cookie" that
- * identifies this extracted file (inode), for example
- * an inode number. Only used if supported by the
- * extraction mode. */
- u64 extract_cookie;
- };
-
-#ifdef WITH_FUSE
- /* Used only during image mount: Table of file descriptors that
- * have been opened to this inode. The table is automatically
- * freed when the last file descriptor is closed. */
- struct wimfs_fd **i_fds;
-#endif