fs/ntfs3: Correct hard links updating when dealing with DOS names
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
parent
6a799c928b
commit
1918c10e13
@ -535,8 +535,20 @@ bool mi_remove_attr(struct ntfs_inode *ni, struct mft_inode *mi,
|
||||
return false;
|
||||
|
||||
if (ni && is_attr_indexed(attr)) {
|
||||
le16_add_cpu(&ni->mi.mrec->hard_links, -1);
|
||||
ni->mi.dirty = true;
|
||||
u16 links = le16_to_cpu(ni->mi.mrec->hard_links);
|
||||
struct ATTR_FILE_NAME *fname =
|
||||
attr->type != ATTR_NAME ?
|
||||
NULL :
|
||||
resident_data_ex(attr,
|
||||
SIZEOF_ATTRIBUTE_FILENAME);
|
||||
if (fname && fname->type == FILE_NAME_DOS) {
|
||||
/* Do not decrease links count deleting DOS name. */
|
||||
} else if (!links) {
|
||||
/* minor error. Not critical. */
|
||||
} else {
|
||||
ni->mi.mrec->hard_links = cpu_to_le16(links - 1);
|
||||
ni->mi.dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
used -= asize;
|
||||
|
Loading…
x
Reference in New Issue
Block a user