Ensure gpfs kernel leases are wrapped in a become_root()/unbecome_root() pair.
authorRalph Wuerthner <ralphw@de.ibm.com>
Wed, 31 Jul 2013 23:33:48 +0000 (16:33 -0700)
committerKarolin Seeger <kseeger@samba.org>
Wed, 7 Aug 2013 09:25:10 +0000 (11:25 +0200)
Ensures correct lease owner for signal delivery.

Signed-off-by: Ralph Wuerthner <ralphw@de.ibm.com>
Reviewed-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Simo Sorce <idra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Thu Aug  1 03:57:11 CEST 2013 on sn-devel-104

The last 2 patches address bug #10064 - Linux kernel oplock breaks can miss
signals.

source3/modules/vfs_gpfs.c

index 7bc2832708c7e270c2430e1544c7f7293d68cf59..4aad679347dc0d755b369b88762ed7e01ad694e2 100644 (file)
@@ -97,7 +97,13 @@ static int vfs_gpfs_setlease(vfs_handle_struct *handle, files_struct *fsp,
                return -1;
 
        if (config->leases) {
+               /*
+                * Ensure the lease owner is root to allow
+                * correct delivery of lease-break signals.
+                */
+               become_root();
                ret = set_gpfs_lease(fsp->fh->fd,leasetype);
+               unbecome_root();
        }
 
        if (ret < 0) {