-extern int calculate_dentry_full_path(struct dentry *dentry, void *ignore);
-extern void calculate_subdir_offsets(struct dentry *dentry, u64 *subdir_offset_p);
-extern int get_names(char **name_utf16_ret, char **name_utf8_ret,
- u16 *name_utf16_len_ret, u16 *name_utf8_len_ret,
- const char *name);
-extern int change_dentry_name(struct dentry *dentry, const char *new_name);
-extern int change_ads_name(struct ads_entry *entry, const char *new_name);
-
-extern void unlink_dentry(struct dentry *dentry);
-extern void link_dentry(struct dentry *dentry, struct dentry *parent);
-
-extern int print_dentry(struct dentry *dentry, void *lookup_table);
-extern int print_dentry_full_path(struct dentry *entry, void *ignore);
-
-extern struct dentry *get_dentry(struct WIMStruct *w, const char *path);
-extern struct inode *wim_pathname_to_inode(WIMStruct *w, const char *path);
-extern struct dentry *get_parent_dentry(struct WIMStruct *w, const char *path);
-extern struct dentry *get_dentry_child_with_name(const struct dentry *dentry,
- const char *name);
-extern void dentry_update_all_timestamps(struct dentry *dentry);
-extern void init_dentry(struct dentry *dentry, const char *name);
-extern struct dentry *new_dentry(const char *name);
-extern struct inode *new_inode();
-extern struct inode *new_timeless_inode();
-extern struct dentry *new_dentry_with_inode(const char *name);
-
-extern void free_ads_entry(struct ads_entry *entry);
-extern void inode_free_ads_entries(struct inode *inode);
-extern struct inode *free_dentry(struct dentry *dentry);
-extern void free_inode(struct inode *inode);
-extern struct inode *put_inode(struct inode *inode);
-extern struct dentry *clone_dentry(struct dentry *old);
-extern void put_dentry(struct dentry *dentry);
-extern void free_dentry_tree(struct dentry *root,
- struct lookup_table *lookup_table);
-extern int increment_dentry_refcnt(struct dentry *dentry, void *ignore);
-extern int decrement_dentry_refcnt(struct dentry *dentry, void *ignore);
-
-extern void calculate_dir_tree_statistics(struct dentry *root,
- struct lookup_table *table,
- u64 *dir_count_ret,
- u64 *file_count_ret,
- u64 *total_bytes_ret,
- u64 *hard_link_bytes_ret);
-
-extern int read_dentry(const u8 metadata_resource[], u64 metadata_resource_len,
- u64 offset, struct dentry *dentry);
-
-extern int verify_dentry(struct dentry *dentry, void *wim);
-
-extern int read_dentry_tree(const u8 metadata_resource[],
- u64 metadata_resource_len, struct dentry *dentry);
-
-extern u8 *write_dentry_tree(const struct dentry *tree, u8 *p);
-
-
-static inline struct dentry *inode_first_dentry(struct inode *inode)
-{
- return container_of(inode->dentry_list.next, struct dentry,
- inode_dentry_list);
-}
+ char *i_extracted_file;
+
+ /* Root of a red-black tree storing the children of this inode (if
+ * non-empty, implies the inode is a directory, although that is also
+ * noted in the @attributes field.) */
+ struct rb_root i_children;
+
+#ifdef WITH_FUSE
+ /* wimfs file descriptors table for the inode */
+ u16 i_num_opened_fds;
+ u16 i_num_allocated_fds;
+ struct wimfs_fd **i_fds;
+
+ /* Next alternate data stream ID to be assigned */
+ u32 i_next_stream_id;
+
+ /* This mutex protects the inode's file descriptors table during
+ * read-only mounts. Read-write mounts are still restricted to 1
+ * thread. */
+ pthread_mutex_t i_mutex;
+#endif
+};