summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2009-11-20 10:39:57 +0100
committerKarolin Seeger <kseeger@samba.org>2011-03-05 14:34:54 +0100
commit2f810e81944f0eebfb30a64523971c1f0ec29633 (patch)
treebe54a4e647b0c9e833df67d1487ca460bc942ae9
parent505056084568429cc32f69099f1d478430c487ff (diff)
downloadsamba-2f810e81944f0eebfb30a64523971c1f0ec29633.tar.gz
samba-2f810e81944f0eebfb30a64523971c1f0ec29633.tar.xz
samba-2f810e81944f0eebfb30a64523971c1f0ec29633.zip
s3:vfs:gpfs: fix logic when gpfs:winattr is false (the default!)
On my autocluster setup, it's not set. Maybe it should be? Otherwise smbclient and some Windows client programs will get errors like: # smbclient //localhost/data -Uadministrator%XXX Domain=[VSOFS1] OS=[Unix] Server=[Samba 3.4.2-ctdb-10] smb: \> put /etc/resolv.conf resolv.conf NT_STATUS_ACCESS_DENIED closing remote file \resolv.conf smb: \> Caused by attempting to update the time on close. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Michael Adam <obnox@samba.org> (cherry picked from commit 385d925f7e0fedca7d480e4f25d89e3194433b88) Fix bug #7498 (robocopy fails to a GPFS share when setting the date). (cherry picked from commit fd6af89cb86c7ffb99ba4de986d932ec58182c81)
-rw-r--r--source3/modules/vfs_gpfs.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c
index 7c481d6ba0f..262d1679a8b 100644
--- a/source3/modules/vfs_gpfs.c
+++ b/source3/modules/vfs_gpfs.c
@@ -939,6 +939,11 @@ static int gpfs_set_xattr(struct vfs_handle_struct *handle, const char *path,
ret = set_gpfs_winattrs(CONST_DISCARD(char *, path),
GPFS_WINATTR_SET_ATTRS, &attrs);
if ( ret == -1){
+ if (errno == ENOSYS) {
+ return SMB_VFS_NEXT_SETXATTR(handle, path, name, value,
+ size, flags);
+ }
+
DEBUG(1, ("gpfs_set_xattr:Set GPFS attributes failed %d\n",ret));
return -1;
}
@@ -964,6 +969,11 @@ static ssize_t gpfs_get_xattr(struct vfs_handle_struct *handle, const char *pat
ret = get_gpfs_winattrs(CONST_DISCARD(char *, path), &attrs);
if ( ret == -1){
+ if (errno == ENOSYS) {
+ return SMB_VFS_NEXT_GETXATTR(handle, path, name, value,
+ size);
+ }
+
DEBUG(1, ("gpfs_get_xattr: Get GPFS attributes failed: %d\n",ret));
return -1;
}
@@ -1095,7 +1105,7 @@ static int vfs_gpfs_ntimes(struct vfs_handle_struct *handle,
ret = set_gpfs_winattrs(CONST_DISCARD(char *, path),
GPFS_WINATTR_SET_CREATION_TIME, &attrs);
- if(ret == -1){
+ if(ret == -1 && errno != ENOSYS){
DEBUG(1,("vfs_gpfs_ntimes: set GPFS ntimes failed %d\n",ret));
return -1;
}