X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Finode_fixup.c;h=8e1579db014617ac94bad6778d83ce3409453d9b;hb=9f25365263682b2b8cb7ef760d9668157830f566;hp=51893fc19096463098f32151bef7304839abdf7a;hpb=588b06dbb0267153119678118a9cd618bfa01c19;p=wimlib diff --git a/src/inode_fixup.c b/src/inode_fixup.c index 51893fc1..8e1579db 100644 --- a/src/inode_fixup.c +++ b/src/inode_fixup.c @@ -72,7 +72,7 @@ inode_table_insert(struct wim_dentry *dentry, void *_params) } /* Try adding this dentry to an existing inode. */ - pos = d_inode->i_ino % table->capacity; + pos = hash_inode(table, d_inode->i_ino, 0); hlist_for_each_entry(inode, &table->array[pos], i_hlist_node) { if (inode->i_ino != d_inode->i_ino) { continue; @@ -108,6 +108,8 @@ inode_table_insert(struct wim_dentry *dentry, void *_params) /* Keep this dentry's inode. */ hlist_add_head(&d_inode->i_hlist_node, &table->array[pos]); + if (++table->filled > table->capacity) + enlarge_inode_table(table); return 0; } @@ -175,7 +177,7 @@ dentry_tree_fix_inodes(struct wim_dentry *root, struct hlist_head *inode_list) /* We use a hash table to map inode numbers to inodes. */ - ret = init_inode_table(¶ms.inode_table, 9001); + ret = init_inode_table(¶ms.inode_table, 64); if (ret) return ret; @@ -189,10 +191,6 @@ dentry_tree_fix_inodes(struct wim_dentry *root, struct hlist_head *inode_list) build_inode_list(¶ms.inode_table, inode_list); destroy_inode_table(¶ms.inode_table); - if (unlikely(params.num_inconsistent_inodes)) - WARNING("Fixed %lu invalid hard links in WIM image", - params.num_inconsistent_inodes); - if (unlikely(params.num_dir_hard_links)) WARNING("Ignoring %lu directory hard links", params.num_dir_hard_links);