]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: move files_struct.kernel_share_modes_taken to a bitfield
authorRalph Boehme <slow@samba.org>
Wed, 1 Apr 2020 09:59:10 +0000 (11:59 +0200)
committerJeremy Allison <jra@samba.org>
Fri, 3 Apr 2020 19:05:43 +0000 (19:05 +0000)
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/include/vfs.h
source3/modules/vfs_gpfs.c
source3/smbd/close.c
source3/smbd/open.c

index fe3156738230bbf1060790096b415d7f443797c8..b05ff13504bd70c169698700e2fc2f6b1bfd2156 100644 (file)
@@ -357,7 +357,9 @@ typedef struct files_struct {
        uint64_t vuid; /* SMB2 compat */
        struct timeval open_time;
        uint32_t access_mask;           /* NTCreateX access bits (FILE_READ_DATA etc.) */
-       bool kernel_share_modes_taken;
+       struct {
+               bool kernel_share_modes_taken : 1;
+       } fsp_flags;
 
        bool update_write_time_triggered;
        struct tevent_timer *update_write_time_event;
index 115459bd15d674d3c0ceb922d6073f63e0950b53..ea88db868fc76c5b0d936526b85b968279221ab7 100644 (file)
@@ -200,7 +200,9 @@ static int vfs_gpfs_close(vfs_handle_struct *handle, files_struct *fsp)
                                struct gpfs_config_data,
                                return -1);
 
-       if (config->sharemodes && fsp->kernel_share_modes_taken) {
+       if (config->sharemodes &&
+           (fsp->fsp_flags.kernel_share_modes_taken))
+       {
                /*
                 * Always clear GPFS sharemode in case the actual
                 * close gets deferred due to outstanding POSIX locks
index d5af62a277c70248a25f92bb396f289f6e74474c..86412dc2bca96792a2665e0ea1120d48ca97685f 100644 (file)
@@ -455,7 +455,7 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
                }
        }
 
-       if (fsp->kernel_share_modes_taken) {
+       if (fsp->fsp_flags.kernel_share_modes_taken) {
                int ret_flock;
 
                /*
@@ -468,7 +468,7 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
                                  fsp_str_dbg(fsp), strerror(errno));
                }
 
-               fsp->kernel_share_modes_taken = false;
+               fsp->fsp_flags.kernel_share_modes_taken = false;
        }
 
 
@@ -509,7 +509,7 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
                pop_sec_ctx();
        }
 
-       if (fsp->kernel_share_modes_taken) {
+       if (fsp->fsp_flags.kernel_share_modes_taken) {
                int ret_flock;
 
                /* remove filesystem sharemodes */
index 378c43272ab6147404f989d3943bf2434ecf358a..41f253c77e43ee18c1905be175e09d75615fc1b9 100644 (file)
@@ -3898,7 +3898,7 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
                        return NT_STATUS_SHARING_VIOLATION;
                }
 
-               fsp->kernel_share_modes_taken = true;
+               fsp->fsp_flags.kernel_share_modes_taken = true;
        }
 
        /*