We shouldn't assume that the attributes are consistent, so we should
check both ways for directory hard links. Specifically, in the case
where the being-inserted dentry is not marked as a directory but for some
reason it shares an inode number with a dentry marked as a directory, we
want to detect that as a directory hard link.
params->num_inconsistent_inodes++;
continue;
}
params->num_inconsistent_inodes++;
continue;
}
- if (unlikely(d_inode->i_attributes & FILE_ATTRIBUTE_DIRECTORY)) {
+ if (unlikely((d_inode->i_attributes & FILE_ATTRIBUTE_DIRECTORY) ||
+ (inode->i_attributes & FILE_ATTRIBUTE_DIRECTORY)))
+ {
params->num_dir_hard_links++;
if (params->num_dir_hard_links <=
MAX_DIR_HARD_LINK_WARNINGS)
params->num_dir_hard_links++;
if (params->num_dir_hard_links <=
MAX_DIR_HARD_LINK_WARNINGS)