r21324: Add linux setlease to the vfs layer. Next round, as Volker points out,
[metze/samba/wip.git] / source3 / modules / vfs_gpfs.c
index c8bb848d0f98716f9675ae134c9d2cb0cd4e6948..20c9f56a1707226bf6dd92d74f3c1490ada655a9 100644 (file)
@@ -52,6 +52,31 @@ static int vfs_gpfs_kernel_flock(vfs_handle_struct *handle, files_struct *fsp,
        return 0;
 }
 
+static int vfs_gpfs_setlease(vfs_handle_struct *handle, files_struct *fsp, 
+                                int fd, int leasetype)
+{
+       int ret;
+       
+       START_PROFILE(syscall_linux_setlease);
+       
+       if ( linux_set_lease_sighandler(fd) == -1)
+               return -1;
+
+       ret = set_gpfs_lease(fd,leasetype);
+       
+       if ( ret < 0 ) {
+               /* This must have come from GPFS not being available */
+               /* or some other error, hence call the default */
+               ret = linux_setlease(fd, leasetype);
+       }
+
+       END_PROFILE(syscall_linux_setlease);
+
+       return ret;
+}
+
+
+
 static void gpfs_dumpacl(int level, struct gpfs_acl *gacl)
 {
        int     i;
@@ -592,6 +617,10 @@ static vfs_op_tuple gpfs_op_tuples[] = {
         SMB_VFS_OP_KERNEL_FLOCK,
         SMB_VFS_LAYER_OPAQUE},
 
+       {SMB_VFS_OP(vfs_gpfs_setlease),
+        SMB_VFS_OP_LINUX_SETLEASE,
+        SMB_VFS_LAYER_OPAQUE},
+
        {SMB_VFS_OP(gpfsacl_fget_nt_acl),
         SMB_VFS_OP_FGET_NT_ACL,
         SMB_VFS_LAYER_TRANSPARENT},