/* %true iff verify_inode() has run on this inode. */
u8 i_verified : 1;
+ u8 i_visited : 1;
+
/* Used only in NTFS-mode extraction */
u8 i_dos_name_extracted : 1;
lte = inode_unnamed_lte_resolved(inode);
if (lte) {
- maybe_add_stream_for_extraction(lte, stream_list);
+ if (!inode->i_visited)
+ maybe_add_stream_for_extraction(lte, stream_list);
list_add_tail(&dentry->tmp_list, <e->lte_dentry_list);
dentry_added = true;
}
if (inode->i_ads_entries[i].stream_name_nbytes != 0) {
lte = inode->i_ads_entries[i].lte;
if (lte) {
- maybe_add_stream_for_extraction(lte,
- stream_list);
+ if (!inode->i_visited) {
+ maybe_add_stream_for_extraction(lte,
+ stream_list);
+ }
if (!dentry_added) {
list_add_tail(&dentry->tmp_list,
<e->lte_dentry_list);
}
}
}
+ inode->i_visited = 1;
return 0;
}
dentry_reset_needs_extraction(struct wim_dentry *dentry, void *_ignore)
{
dentry->needs_extraction = 0;
+ dentry->d_inode->i_visited = 0;
return 0;
}