X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Flookup_table.h;h=193cef03cefbd101d2aa1d504e594fba268e66a4;hb=63a5804943519281f206ca0fefacfe2b99fc9958;hp=f0d454a18e22d6f9bb75b3952e0a58f61355110d;hpb=eb066ffe5f37eae975c285cbbfc377247b0d60ff;p=wimlib diff --git a/src/lookup_table.h b/src/lookup_table.h index f0d454a1..193cef03 100644 --- a/src/lookup_table.h +++ b/src/lookup_table.h @@ -154,16 +154,7 @@ struct lookup_table_entry { #endif }; #ifdef WITH_FUSE - /* File descriptors table for this data stream. This is used if the WIM - * is mounted. Basically, each time a file is open()ed, a new file - * descriptor is added here, and each time a file is close()ed, the file - * descriptor is gotten rid of. If the stream is opened for writing, it - * will be extracted to the staging directory and there will be an - * actual native file descriptor associated with each "wimlib file - * descriptor". */ u16 num_opened_fds; - u16 num_allocated_fds; - struct wimlib_fd **fds; #endif /* When a WIM file is written, out_refcnt starts at 0 and is incremented @@ -173,6 +164,8 @@ struct lookup_table_entry { * dentries. */ u32 out_refcnt; + u32 real_refcnt; + /* When a WIM file is written, @output_resource_entry is filled * in with the resource entry for the output WIM. This will not * necessarily be the same as the @resource_entry since: @@ -189,13 +182,6 @@ struct lookup_table_entry { * */ char *extracted_file; - /* Circular linked list of streams that share the same lookup table - * entry. - * - * This list of streams may include streams from different hard link - * sets that happen to be the same. */ - struct list_head lte_group_list; - /* List of lookup table entries that correspond to streams that have * been extracted to the staging directory when modifying a read-write * mounted WIM. */ @@ -244,6 +230,12 @@ static inline void lookup_table_unlink(struct lookup_table *table, extern struct lookup_table_entry * lookup_table_decrement_refcnt(struct lookup_table* table, const u8 hash[]); +#ifdef WITH_FUSE +extern struct lookup_table_entry * +lte_decrement_num_opened_fds(struct lookup_table_entry *lte, + struct lookup_table *table); +#endif + extern struct lookup_table_entry * lte_decrement_refcnt(struct lookup_table_entry *lte, struct lookup_table *table); @@ -261,9 +253,11 @@ __lookup_resource(const struct lookup_table *table, const u8 hash[]); extern int lookup_resource(WIMStruct *w, const char *path, int lookup_flags, struct dentry **dentry_ret, struct lookup_table_entry **lte_ret, - unsigned *stream_idx_ret); + u16 *stream_idx_ret); -extern int zero_out_refcnts(struct lookup_table_entry *entry, void *ignore); +extern int lte_zero_out_refcnt(struct lookup_table_entry *entry, void *ignore); +extern int lte_zero_real_refcnt(struct lookup_table_entry *entry, void *ignore); +extern int lte_free_extracted_file(struct lookup_table_entry *lte, void *ignone); extern void print_lookup_table_entry(const struct lookup_table_entry *entry);