struct wim_inode *inode;
if (d_inode->i_ino == 0) {
- hlist_add_head(&d_inode->i_hlist, &table->extra_inodes);
+ hlist_add_head(&d_inode->i_hlist_node, &table->extra_inodes);
return 0;
}
/* Try adding this dentry to an existing inode. */
- pos = d_inode->i_ino % table->capacity;
- hlist_for_each_entry(inode, &table->array[pos], i_hlist) {
+ 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;
}
WARNING("Unsupported directory hard link "
"\"%"TS"\" <=> \"%"TS"\"",
dentry_full_path(dentry),
- inode_first_full_path(inode));
+ inode_any_full_path(inode));
} else if (params->num_dir_hard_links ==
MAX_DIR_HARD_LINK_WARNINGS + 1)
{
}
/* Keep this dentry's inode. */
- hlist_add_head(&d_inode->i_hlist, &table->array[pos]);
+ hlist_add_head(&d_inode->i_hlist_node, &table->array[pos]);
+ if (++table->filled > table->capacity)
+ enlarge_inode_table(table);
return 0;
}
struct wim_inode *inode;
u64 cur_ino = 1;
- hlist_for_each_entry(inode, inode_list, i_hlist)
+ hlist_for_each_entry(inode, inode_list, i_hlist_node)
inode->i_ino = cur_ino++;
}
/* 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;
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);