X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=include%2Fwimlib%2Flookup_table.h;h=097750588454a733ad3167cc085b5e9dd2470eb4;hp=2b2cfcd9184c65f8b311e328198c52c6ff7f033e;hb=c9482ee98e12fa3f1073e4fc3c56f5eef3c40f32;hpb=f3ab01445d6184f7c5ffd0251667de7ef7437f9a diff --git a/include/wimlib/lookup_table.h b/include/wimlib/lookup_table.h index 2b2cfcd9..09775058 100644 --- a/include/wimlib/lookup_table.h +++ b/include/wimlib/lookup_table.h @@ -138,15 +138,21 @@ struct wim_lookup_table_entry { u16 resource_location : 5; /* 1 if this stream is a unique size (only set while writing streams). */ - u8 unique_size : 1; + u16 unique_size : 1; /* 1 if this stream has not had a SHA1 message digest calculated for it * yet */ - u8 unhashed : 1; + u16 unhashed : 1; - u8 deferred : 1; + u16 deferred : 1; - u8 no_progress : 1; + u16 no_progress : 1; + + /* If resource_location == RESOURCE_IN_WIM, this will be a cached value + * that specifies the compression type of this stream as one of + * WIMLIB_COMPRESSION_TYPE_*. Otherwise this will be 0, which is the + * same as WIMLIB_COMPRESSION_TYPE_NONE. */ + u16 compression_type : 2; /* (On-disk field) * Number of times this lookup table entry is referenced by dentries. @@ -259,7 +265,7 @@ wim_resource_size(const struct wim_lookup_table_entry *lte) static inline u64 wim_resource_chunks(const struct wim_lookup_table_entry *lte) { - return (wim_resource_size(lte) + WIM_CHUNK_SIZE - 1) / WIM_CHUNK_SIZE; + return DIV_ROUND_UP(wim_resource_size(lte), WIM_CHUNK_SIZE); } static inline u64 @@ -268,8 +274,12 @@ wim_resource_compressed_size(const struct wim_lookup_table_entry *lte) return lte->resource_entry.size; } -extern int -wim_resource_compression_type(const struct wim_lookup_table_entry *lte); +static inline int +wim_resource_compression_type(const struct wim_lookup_table_entry *lte) +{ + BUILD_BUG_ON(WIMLIB_COMPRESSION_TYPE_NONE != 0); + return lte->compression_type; +} static inline bool lte_filename_valid(const struct wim_lookup_table_entry *lte) @@ -370,7 +380,7 @@ lte_zero_real_refcnt(struct wim_lookup_table_entry *entry, void *ignore); extern int lte_free_extracted_file(struct wim_lookup_table_entry *lte, void *ignore); -extern void +extern int inode_resolve_ltes(struct wim_inode *inode, struct wim_lookup_table *table); extern void