Fixed setting archive bit on file and alternated data stream creation
parent
1bdd93e237
commit
1bb7443eb6
|
@ -1396,6 +1396,7 @@ static ntfs_inode *__ntfs_create(ntfs_inode *dir_ni, le32 securid,
|
|||
si->file_attributes = FILE_ATTR_SYSTEM;
|
||||
ni->flags = FILE_ATTR_SYSTEM;
|
||||
}
|
||||
ni->flags |= FILE_ATTR_ARCHIVE;
|
||||
if ((dir_ni->flags & FILE_ATTR_COMPRESSED)
|
||||
&& (S_ISREG(type) || S_ISDIR(type)))
|
||||
ni->flags |= FILE_ATTR_COMPRESSED;
|
||||
|
@ -1525,6 +1526,7 @@ static ntfs_inode *__ntfs_create(ntfs_inode *dir_ni, le32 securid,
|
|||
fn->file_attributes = FILE_ATTR_SYSTEM;
|
||||
else
|
||||
fn->file_attributes |= ni->flags & FILE_ATTR_COMPRESSED;
|
||||
fn->file_attributes |= FILE_ATTR_ARCHIVE;
|
||||
fn->creation_time = ni->creation_time;
|
||||
fn->last_data_change_time = ni->last_data_change_time;
|
||||
fn->last_mft_change_time = ni->last_mft_change_time;
|
||||
|
|
|
@ -3244,7 +3244,10 @@ static void ntfs_fuse_setxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
|
|||
res = -errno;
|
||||
goto exit;
|
||||
}
|
||||
set_archive(ni);
|
||||
if (!(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
na = ntfs_attr_open(ni, AT_DATA, lename, lename_len);
|
||||
if (!na) {
|
||||
res = -errno;
|
||||
|
@ -3273,8 +3276,10 @@ static void ntfs_fuse_setxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
|
|||
&& (ni->flags & FILE_ATTR_ENCRYPTED))
|
||||
res = ntfs_efs_fixup_attribute(NULL,
|
||||
na);
|
||||
if (total)
|
||||
if (total && !(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
} else
|
||||
res = 0;
|
||||
exit:
|
||||
|
@ -3451,7 +3456,10 @@ static void ntfs_fuse_removexattr(fuse_req_t req, fuse_ino_t ino, const char *na
|
|||
errno = ENODATA;
|
||||
res = -errno;
|
||||
}
|
||||
set_archive(ni);
|
||||
if (!(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
exit:
|
||||
free(lename);
|
||||
if (ntfs_inode_close(ni))
|
||||
|
|
|
@ -3186,7 +3186,10 @@ static int ntfs_fuse_setxattr(const char *path, const char *name,
|
|||
res = -errno;
|
||||
goto exit;
|
||||
}
|
||||
set_archive(ni);
|
||||
if (!(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
na = ntfs_attr_open(ni, AT_DATA, lename, lename_len);
|
||||
if (!na) {
|
||||
res = -errno;
|
||||
|
@ -3215,8 +3218,10 @@ static int ntfs_fuse_setxattr(const char *path, const char *name,
|
|||
&& (ni->flags & FILE_ATTR_ENCRYPTED))
|
||||
res = ntfs_efs_fixup_attribute(NULL,
|
||||
na);
|
||||
if (total)
|
||||
if (total && !(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
} else
|
||||
res = 0;
|
||||
exit:
|
||||
|
@ -3413,7 +3418,10 @@ static int ntfs_fuse_removexattr(const char *path, const char *name)
|
|||
errno = ENODATA;
|
||||
res = -errno;
|
||||
}
|
||||
set_archive(ni);
|
||||
if (!(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
exit:
|
||||
free(lename);
|
||||
if (ntfs_inode_close(ni))
|
||||
|
|
Loading…
Reference in New Issue