return WIMLIB_ERR_INVALID_DENTRY;
}
/* Free the unneeded `struct wim_inode'. */
- dentry->d_inode->i_hlist.next = NULL;
- dentry->d_inode->i_hlist.pprev = NULL;
free_inode(dentry->d_inode);
dentry->d_inode = ref_inode;
ref_inode->i_nlink++;
INIT_LIST_HEAD(inode_list);
for (u64 i = 0; i < table->capacity; i++) {
hlist_for_each_entry_safe(inode, cur, tmp, &table->array[i], i_hlist) {
+ INIT_LIST_HEAD(&inode->i_list);
ret = fix_nominal_inode(inode, inode_list, ino_changes_needed);
if (ret)
return ret;
struct hlist_node *cur, *tmp;
u64 cur_ino = 1;
- INIT_LIST_HEAD(head);
+ list_for_each_entry(inode, head, i_list) {
+ if (inode->i_nlink > 1)
+ inode->i_ino = cur_ino++;
+ else
+ inode->i_ino = 0;
+ }
+
for (size_t i = 0; i < table->capacity; i++) {
hlist_for_each_entry_safe(inode, cur, tmp, &table->array[i], i_hlist)
{