s3: locking: Move two leases functions into a new file.
authorJeremy Allison <jra@samba.org>
Tue, 14 Mar 2017 20:23:13 +0000 (13:23 -0700)
committerRalph Boehme <slow@samba.org>
Wed, 15 Mar 2017 15:14:08 +0000 (16:14 +0100)
map_oplock_to_lease_type(), fsp_lease_type().

BUG: https://bugzilla.samba.org/show_bug.cgi?id=12628

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/locking/leases_util.c [new file with mode: 0644]
source3/locking/proto.h
source3/smbd/files.c
source3/smbd/oplock.c
source3/smbd/proto.h
source3/wscript_build

diff --git a/source3/locking/leases_util.c b/source3/locking/leases_util.c
new file mode 100644 (file)
index 0000000..cb307c8
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+   Unix SMB/CIFS implementation.
+   Lease utility functions
+
+   Copyright (C) Jeremy Allison 2017.
+   Copyright (C) Stefan (metze) Metzmacher 2017.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#define DBGC_CLASS DBGC_LOCKING
+#include "includes.h"
+#include "../librpc/gen_ndr/open_files.h"
+#include "locking/proto.h"
+
+uint32_t map_oplock_to_lease_type(uint16_t op_type)
+{
+       uint32_t ret;
+
+       switch(op_type) {
+       case BATCH_OPLOCK:
+       case BATCH_OPLOCK|EXCLUSIVE_OPLOCK:
+               ret = SMB2_LEASE_READ|SMB2_LEASE_WRITE|SMB2_LEASE_HANDLE;
+               break;
+       case EXCLUSIVE_OPLOCK:
+               ret = SMB2_LEASE_READ|SMB2_LEASE_WRITE;
+               break;
+       case LEVEL_II_OPLOCK:
+               ret = SMB2_LEASE_READ;
+               break;
+       default:
+               ret = SMB2_LEASE_NONE;
+               break;
+       }
+       return ret;
+}
+
+uint32_t fsp_lease_type(struct files_struct *fsp)
+{
+       if (fsp->oplock_type == LEASE_OPLOCK) {
+               return fsp->lease->lease.lease_state;
+       }
+       return map_oplock_to_lease_type(fsp->oplock_type);
+}
index 13499cfbf41bed1d0c2b3e56ca57c5d701746a39..17cb1cdf86b4ef167231ce00500c6f4e2c38266e 100644 (file)
@@ -248,4 +248,8 @@ bool release_posix_lock_posix_flavour(files_struct *fsp,
                                const struct lock_struct *plocks,
                                int num_locks);
 
+/* The following definitions come from locking/leases_util.c */
+uint32_t map_oplock_to_lease_type(uint16_t op_type);
+uint32_t fsp_lease_type(struct files_struct *fsp);
+
 #endif /* _LOCKING_PROTO_H_ */
index 1ef1bc9ff9b297321d63928f5759e7a7a97ef41f..6d0f05b9db13e58b35368261ad3d62fc5a3ae129 100644 (file)
@@ -785,14 +785,6 @@ const struct GUID *fsp_client_guid(const files_struct *fsp)
        return &fsp->conn->sconn->client->connections->smb2.client.guid;
 }
 
-uint32_t fsp_lease_type(struct files_struct *fsp)
-{
-       if (fsp->oplock_type == LEASE_OPLOCK) {
-               return fsp->lease->lease.lease_state;
-       }
-       return map_oplock_to_lease_type(fsp->oplock_type);
-}
-
 size_t fsp_fullbasepath(struct files_struct *fsp, char *buf, size_t buflen)
 {
        int len;
index e8a5a161722df965ab1568e50b06b494ef3458a1..417eda530e397c8c8690b835f89d0cf805ee9f80 100644 (file)
@@ -150,28 +150,6 @@ static void downgrade_file_oplock(files_struct *fsp)
        TALLOC_FREE(fsp->oplock_timeout);
 }
 
-uint32_t map_oplock_to_lease_type(uint16_t op_type)
-{
-       uint32_t ret;
-
-       switch(op_type) {
-       case BATCH_OPLOCK:
-       case BATCH_OPLOCK|EXCLUSIVE_OPLOCK:
-               ret = SMB2_LEASE_READ|SMB2_LEASE_WRITE|SMB2_LEASE_HANDLE;
-               break;
-       case EXCLUSIVE_OPLOCK:
-               ret = SMB2_LEASE_READ|SMB2_LEASE_WRITE;
-               break;
-       case LEVEL_II_OPLOCK:
-               ret = SMB2_LEASE_READ;
-               break;
-       default:
-               ret = SMB2_LEASE_NONE;
-               break;
-       }
-       return ret;
-}
-
 uint32_t get_lease_type(const struct share_mode_data *d,
                        const struct share_mode_entry *e)
 {
index 06ab56f535fdd79716d2e609db388c0115142ef3..5671a9667613205944a1f80c8ffcc75ba31132f7 100644 (file)
@@ -409,7 +409,6 @@ NTSTATUS file_name_hash(connection_struct *conn,
 NTSTATUS fsp_set_smb_fname(struct files_struct *fsp,
                           const struct smb_filename *smb_fname_in);
 const struct GUID *fsp_client_guid(const files_struct *fsp);
-uint32_t fsp_lease_type(struct files_struct *fsp);
 size_t fsp_fullbasepath(struct files_struct *fsp, char *buf, size_t buflen);
 
 /* The following definitions come from smbd/ipc.c  */
@@ -703,7 +702,6 @@ NTSTATUS get_relative_fid_filename(connection_struct *conn,
 
 /* The following definitions come from smbd/oplock.c  */
 
-uint32_t map_oplock_to_lease_type(uint16_t op_type);
 uint32_t get_lease_type(const struct share_mode_data *d,
                        const struct share_mode_entry *e);
 bool update_num_read_oplocks(files_struct *fsp, struct share_mode_lock *lck);
index 74f87bb191db014e9dbbd8d685eb18942face9b3..c04e94a54adab36d8b2e63f093789e46a64aa818 100644 (file)
@@ -749,6 +749,7 @@ bld.SAMBA3_LIBRARY('smbd_base',
                         RPC_SERVICE
                         NDR_SMBXSRV
                         LEASES_DB
+                        LEASES_UTIL
                         sysquotas
                         NDR_SMB_ACL
                         netapi
@@ -771,6 +772,7 @@ bld.SAMBA3_SUBSYSTEM('LOCKING',
                          tdb
                          talloc
                          LEASES_DB
+                         LEASES_UTIL
                          NDR_OPEN_FILES
                          FNAME_UTIL
                          ''')
@@ -779,6 +781,10 @@ bld.SAMBA3_SUBSYSTEM('LEASES_DB',
                     source='locking/leases_db.c',
                     deps='NDR_LEASES_DB')
 
+bld.SAMBA3_SUBSYSTEM('LEASES_UTIL',
+                    source='locking/leases_util.c',
+                    deps='NDR_OPEN_FILES')
+
 if bld.CONFIG_GET("WITH_PROFILE"):
     bld.SAMBA3_SUBSYSTEM('PROFILE',
                          source='profile/profile.c',