return WIMLIB_ERR_NOMEM;
table->num_entries = 0;
table->capacity = capacity;
- INIT_LIST_HEAD(&table->extra_inodes);
+ INIT_HLIST_HEAD(&table->extra_inodes);
return 0;
}
ret = new_dentry_with_new_inode(name, false, &dentry);
if (ret)
return ret;
- list_add_tail(&dentry->d_inode->i_list, &table->extra_inodes);
+ hlist_add_head(&dentry->d_inode->i_hlist_node, &table->extra_inodes);
} else {
size_t pos;
- struct hlist_node *cur;
/* File that can be hardlinked--- search the table for an
* existing inode matching the inode number and device. */
pos = hash_u64(hash_u64(ino) + hash_u64(devno)) % table->capacity;
- hlist_for_each_entry(inode, cur, &table->array[pos], i_hlist) {
+ hlist_for_each_entry(inode, &table->array[pos], i_hlist_node) {
if (inode->i_ino == ino && inode->i_devno == devno) {
/* Found; use the existing inode. */
return new_dentry_with_existing_inode(name, inode,
inode = dentry->d_inode;
inode->i_ino = ino;
inode->i_devno = devno;
- hlist_add_head(&inode->i_hlist, &table->array[pos]);
+ hlist_add_head(&inode->i_hlist_node, &table->array[pos]);
table->num_entries++;
}
*dentry_ret = dentry;
*/
void
inode_table_prepare_inode_list(struct wim_inode_table *table,
- struct list_head *head)
+ struct hlist_head *head)
{
- struct wim_inode *inode, *tmp_inode;
- struct hlist_node *cur, *tmp;
+ struct wim_inode *inode;
+ struct hlist_node *tmp;
u64 cur_ino = 1;
/* Re-assign inode numbers in the existing list to avoid duplicates. */
- list_for_each_entry(inode, head, i_list)
+ hlist_for_each_entry(inode, head, i_hlist_node)
inode->i_ino = cur_ino++;
/* Assign inode numbers to the new inodes and move them to the image's
* inode list. */
for (size_t i = 0; i < table->capacity; i++) {
- hlist_for_each_entry_safe(inode, cur, tmp, &table->array[i], i_hlist)
- {
+ hlist_for_each_entry_safe(inode, tmp, &table->array[i], i_hlist_node) {
inode->i_ino = cur_ino++;
inode->i_devno = 0;
- list_add_tail(&inode->i_list, head);
+ hlist_add_head(&inode->i_hlist_node, head);
}
INIT_HLIST_HEAD(&table->array[i]);
}
- list_for_each_entry_safe(inode, tmp_inode, &table->extra_inodes, i_list)
- {
+ hlist_for_each_entry_safe(inode, tmp, &table->extra_inodes, i_hlist_node) {
inode->i_ino = cur_ino++;
inode->i_devno = 0;
- list_add_tail(&inode->i_list, head);
+ hlist_add_head(&inode->i_hlist_node, head);
}
- INIT_LIST_HEAD(&table->extra_inodes);
+ INIT_HLIST_HEAD(&table->extra_inodes);
table->num_entries = 0;
}