diff options
-rw-r--r-- | source4/ntvfs/posix/pvfs_setfileinfo.c | 10 | ||||
-rw-r--r-- | source4/ntvfs/posix/pvfs_unlink.c | 8 |
2 files changed, 9 insertions, 9 deletions
diff --git a/source4/ntvfs/posix/pvfs_setfileinfo.c b/source4/ntvfs/posix/pvfs_setfileinfo.c index 295d2e919e..31db6ce630 100644 --- a/source4/ntvfs/posix/pvfs_setfileinfo.c +++ b/source4/ntvfs/posix/pvfs_setfileinfo.c @@ -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); + } } } diff --git a/source4/ntvfs/posix/pvfs_unlink.c b/source4/ntvfs/posix/pvfs_unlink.c index 09732d7735..5f8a828f15 100644 --- a/source4/ntvfs/posix/pvfs_unlink.c +++ b/source4/ntvfs/posix/pvfs_unlink.c @@ -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 */ |