summaryrefslogtreecommitdiff
path: root/source3/modules/vfs_gpfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/modules/vfs_gpfs.c')
-rw-r--r--source3/modules/vfs_gpfs.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c
index 3967a7c723a..1c843db503d 100644
--- a/source3/modules/vfs_gpfs.c
+++ b/source3/modules/vfs_gpfs.c
@@ -252,6 +252,7 @@ static int vfs_gpfs_setlease(vfs_handle_struct *handle,
if (config->leases) {
int gpfs_lease_type = lease_type_to_gpfs(leasetype);
+ int saved_errno = 0;
/*
* Ensure the lease owner is root to allow
@@ -259,7 +260,14 @@ static int vfs_gpfs_setlease(vfs_handle_struct *handle,
*/
become_root();
ret = gpfswrap_set_lease(fsp->fh->fd, gpfs_lease_type);
+ if (ret < 0) {
+ saved_errno = errno;
+ }
unbecome_root();
+
+ if (saved_errno != 0) {
+ errno = saved_errno;
+ }
}
failure: