printf("Writing streams for `%s'\n", dentry->full_path_utf8);
}
- for (unsigned i = 0; i <= dentry->inode->num_ads; i++) {
- lte = inode_stream_lte(dentry->inode, i, w->lookup_table);
+ for (unsigned i = 0; i <= dentry->d_inode->num_ads; i++) {
+ lte = inode_stream_lte(dentry->d_inode, i, w->lookup_table);
if (lte && ++lte->out_refcnt == 1) {
ret = write_wim_resource(lte, w->out_fp, ctype,
<e->output_resource_entry);
dentry->prev = dentry;
if (ret != 0)
goto out_free_dentry_tree;
- list_add(&dentry->inode_dentry_list, &dentry->inode->dentry_list);
+ inode_add_dentry(dentry, dentry->d_inode);
/* Now read the entire directory entry tree into memory. */
DEBUG("Reading dentry tree");
for_dentry_in_tree(dentry, inode_table_insert, &inode_tab);
- DEBUG("Fixing inconsistencies in the link groups");
+ DEBUG("Fixing inconsistencies in the hard link groups");
ret = fix_inodes(&inode_tab, &inode_list);
destroy_inode_table(&inode_tab);
if (ret != 0)
goto out_free_dentry_tree;
DEBUG("Running miscellaneous verifications on the dentry tree");
+ for_lookup_table_entry(w->lookup_table, lte_zero_real_refcnt, NULL);
ret = for_dentry_in_tree(dentry, verify_dentry, w);
if (ret != 0)
goto out_free_dentry_tree;
DEBUG("Done reading image metadata");
- imd->root_dentry = dentry;
+ imd->root_dentry = dentry;
+ imd->inode_list = inode_list;
goto out_free_buf;
out_free_dentry_tree:
free_dentry_tree(dentry, NULL);
if (ret != 0)
goto out;
- /* It's very likely the SHA1 message digest of the metadata resource, so
- * re-insert the lookup table entry into the lookup table. */
+ /* It's very likely the SHA1 message digest of the metadata resource
+ * changed, so re-insert the lookup table entry into the lookup table.
+ * */
lookup_table_unlink(w->lookup_table, lte);
lookup_table_insert(w->lookup_table, lte);