]> wimlib.net Git - wimlib/blobdiff - include/wimlib/metadata.h
Save memory by consolidating inode flags
[wimlib] / include / wimlib / metadata.h
index 6e4212044d5f730a52e868702ebf17538325dc43..00647a1cf6e4f5e0bb614dad8ed3a259d628500c 100644 (file)
@@ -5,10 +5,6 @@
 #include "wimlib/types.h"
 #include "wimlib/wim.h"
 
-#ifdef WITH_NTFS_3G
-struct _ntfs_volume;
-#endif
-
 /* Metadata for a WIM image  */
 struct wim_image_metadata {
 
@@ -22,28 +18,23 @@ struct wim_image_metadata {
        /* Pointer to the security data of the image. */
        struct wim_security_data *security_data;
 
-       /* Pointer to the lookup table entry for this image's metadata resource
-        */
-       struct wim_lookup_table_entry *metadata_lte;
+       /* Pointer to the blob descriptor for this image's metadata resource */
+       struct blob_descriptor *metadata_blob;
 
        /* Linked list of 'struct wim_inode's for this image. */
-       struct list_head inode_list;
-
-       /* Linked list of 'struct wim_lookup_table_entry's for this image that
-        * are referred to in the dentry tree, but have not had a SHA1 message
-        * digest calculated yet and therefore have not been inserted into the
-        * WIM's lookup table.  This list is added to during wimlib_add_image()
-        * and wimlib_mount_image() (read-write only). */
-       struct list_head unhashed_streams;
-
-       /* 1 iff the dentry tree has been modified.  If this is the case, the
-        * memory for the dentry tree should not be freed when switching to a
-        * different WIM image. */
+       struct hlist_head inode_list;
+
+       /* Linked list of 'struct blob_descriptor's for blobs that are
+        * referenced by this image's dentry tree, but have not had their SHA-1
+        * message digests calculated yet and therefore have not been inserted
+        * into the WIMStruct's blob table.  This list is appended to when files
+        * are scanned for inclusion in this WIM image.  */
+       struct list_head unhashed_blobs;
+
+       /* 1 iff the dentry tree has been modified from the original stored in
+        * the WIM file.  If this is the case, the memory for the dentry tree
+        * should not be freed when switching to a different WIM image. */
        u8 modified : 1;
-
-#ifdef WITH_NTFS_3G
-       struct _ntfs_volume *ntfs_vol;
-#endif
 };
 
 /* Retrieve the metadata of the image in @wim currently selected with
@@ -70,27 +61,25 @@ wim_get_current_security_data(WIMStruct *wim)
        return wim_get_current_image_metadata(wim)->security_data;
 }
 
-/* Iterate over each inode in a WIM image that has not yet been hashed */
+/* Iterate over each inode in a WIM image  */
 #define image_for_each_inode(inode, imd) \
-       list_for_each_entry(inode, &imd->inode_list, i_list)
+       hlist_for_each_entry(inode, &(imd)->inode_list, i_hlist)
 
-/* Iterate over each stream in a WIM image that has not yet been hashed */
-#define image_for_each_unhashed_stream(lte, imd) \
-       list_for_each_entry(lte, &imd->unhashed_streams, unhashed_list)
+/* Iterate over each inode in a WIM image (safe against inode removal)  */
+#define image_for_each_inode_safe(inode, tmp, imd) \
+       hlist_for_each_entry_safe(inode, tmp, &(imd)->inode_list, i_hlist)
 
-/* Iterate over each stream in a WIM image that has not yet been hashed (safe
- * against stream removal) */
-#define image_for_each_unhashed_stream_safe(lte, tmp, imd) \
-       list_for_each_entry_safe(lte, tmp, &imd->unhashed_streams, unhashed_list)
+/* Iterate over each blob in a WIM image that has not yet been hashed */
+#define image_for_each_unhashed_blob(blob, imd) \
+       list_for_each_entry(blob, &(imd)->unhashed_blobs, unhashed_list)
 
-extern void
-destroy_image_metadata(struct wim_image_metadata *imd,
-                      struct wim_lookup_table *table,
-                      bool free_metadata_lte);
+/* Iterate over each blob in a WIM image that has not yet been hashed (safe
+ * against blob removal) */
+#define image_for_each_unhashed_blob_safe(blob, tmp, imd) \
+       list_for_each_entry_safe(blob, tmp, &(imd)->unhashed_blobs, unhashed_list)
 
 extern void
-put_image_metadata(struct wim_image_metadata *imd,
-                  struct wim_lookup_table *table);
+put_image_metadata(struct wim_image_metadata *imd, struct blob_table *table);
 
 extern int
 append_image_metadata(WIMStruct *wim, struct wim_image_metadata *imd);
@@ -98,7 +87,4 @@ append_image_metadata(WIMStruct *wim, struct wim_image_metadata *imd);
 extern struct wim_image_metadata *
 new_image_metadata(void) _malloc_attribute;
 
-extern struct wim_image_metadata **
-new_image_metadata_array(unsigned num_images) _malloc_attribute;
-
 #endif /* _WIMLIB_METADATA_H */