X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fmetadata_resource.c;h=726deb54ecd91ee208c126f9cb36fe0239eeae78;hb=82e0045e9a93baed16ca1fa1bbe5accfcf11cf6c;hp=4f8be14161845874f757203700c5a4084e1251c4;hpb=c6e063fcb2b1ffa76df62ab902a38bf5f604d2e2;p=wimlib diff --git a/src/metadata_resource.c b/src/metadata_resource.c index 4f8be141..726deb54 100644 --- a/src/metadata_resource.c +++ b/src/metadata_resource.c @@ -48,7 +48,6 @@ int read_metadata_resource(WIMStruct *w, struct image_metadata *imd) u32 dentry_offset; int ret; struct dentry *dentry; - struct inode_table inode_tab; const struct lookup_table_entry *metadata_lte; u64 metadata_len; struct hlist_head inode_list; @@ -157,16 +156,7 @@ int read_metadata_resource(WIMStruct *w, struct image_metadata *imd) goto out_free_dentry_tree; /* Build hash table that maps hard link group IDs to dentry sets */ - DEBUG("Building link group table"); - ret = init_inode_table(&inode_tab, 9001); - if (ret != 0) - goto out_free_dentry_tree; - - for_dentry_in_tree(dentry, inode_table_insert, &inode_tab); - - DEBUG("Fixing inconsistencies in the hard link groups"); - ret = fix_inodes(&inode_tab, &inode_list); - destroy_inode_table(&inode_tab); + ret = dentry_tree_fix_inodes(dentry, &inode_list); if (ret != 0) goto out_free_dentry_tree; @@ -182,6 +172,8 @@ int read_metadata_resource(WIMStruct *w, struct image_metadata *imd) imd->root_dentry = dentry; imd->inode_list = inode_list; + if (imd->inode_list.first) + imd->inode_list.first->pprev = &imd->inode_list.first; goto out_free_buf; out_free_dentry_tree: free_dentry_tree(dentry, NULL);