mirror of
https://github.com/samba-team/samba.git
synced 2025-02-11 17:58:16 +03:00
r4406: - don't call the xattr unlink hook on unlink unless the link count is 1, otherwise
the xattrs of the remaining link are removed - fix the handling of attribute set on directories
This commit is contained in:
parent
b44d4d17df
commit
fa44e3cce0
@ -365,12 +365,10 @@ NTSTATUS pvfs_setfileinfo(struct ntvfs_module_context *ntvfs,
|
||||
/* possibly change the attribute */
|
||||
if (newstats.dos.attrib != h->name->dos.attrib) {
|
||||
mode_t mode = pvfs_fileperms(pvfs, newstats.dos.attrib);
|
||||
if (h->name->dos.attrib & FILE_ATTRIBUTE_DIRECTORY) {
|
||||
/* ignore on directories for now */
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
if (fchmod(h->fd, mode) == -1) {
|
||||
return pvfs_map_errno(pvfs, errno);
|
||||
if (!(h->name->dos.attrib & FILE_ATTRIBUTE_DIRECTORY)) {
|
||||
if (fchmod(h->fd, mode) == -1) {
|
||||
return pvfs_map_errno(pvfs, errno);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,9 +89,11 @@ static NTSTATUS pvfs_unlink_one(struct pvfs_state *pvfs,
|
||||
return NT_STATUS_FILE_IS_A_DIRECTORY;
|
||||
}
|
||||
|
||||
status = pvfs_xattr_unlink_hook(pvfs, name->full_name);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
if (name->st.st_nlink == 1) {
|
||||
status = pvfs_xattr_unlink_hook(pvfs, name->full_name);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
/* finally try the actual unlink */
|
||||
|
Loading…
x
Reference in New Issue
Block a user