X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fdentry.h;h=68f118d8a2bdc3cc14e0d44840a53a0084a315c6;hb=52cccded7706cd556f78ce7d2506937d2a216293;hp=841c9ca935bda23c420bff4b841cb099b7e4a222;hpb=45c3ad86e44a05a169bfb1fa8ff318861bbf9fbf;p=wimlib diff --git a/src/dentry.h b/src/dentry.h index 841c9ca9..68f118d8 100644 --- a/src/dentry.h +++ b/src/dentry.h @@ -8,6 +8,10 @@ #include "rbtree.h" #include +#ifdef WITH_FUSE +#include +#endif + struct stat; struct lookup_table; struct WIMStruct; @@ -161,13 +165,7 @@ struct dentry { /* Byte 48 */ - union { - struct list_head tmp_list; - struct { - void *tmp_ptr_1; - void *tmp_ptr_2; - }; - }; + struct list_head tmp_list; /* Byte 64 */ @@ -208,6 +206,8 @@ struct dentry { * WIMStructs */ u32 refcnt; + u32 full_path_utf8_len; + /* Pointer to the UTF-16 short filename (malloc()ed buffer) */ char *short_name; @@ -216,7 +216,6 @@ struct dentry { /* Full path (UTF-8) to this dentry (malloc()ed buffer). */ char *full_path_utf8; - u32 full_path_utf8_len; }; #define rbnode_dentry(node) container_of(node, struct dentry, rb_node) @@ -300,6 +299,11 @@ struct inode { /* Next alternate data stream ID to be assigned */ u32 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 }; @@ -326,7 +330,6 @@ static inline bool dentry_is_first_in_inode(const struct dentry *dentry) extern u64 dentry_correct_total_length(const struct dentry *dentry); -extern void stbuf_to_inode(const struct stat *stbuf, struct inode *inode); extern int inode_to_stbuf(const struct inode *inode, struct lookup_table_entry *lte, struct stat *stbuf);