diff options
-rw-r--r-- | source3/locking/brlock.c | 16 | ||||
-rw-r--r-- | source3/locking/locking.c | 15 | ||||
-rw-r--r-- | source3/locking/posix.c | 2 | ||||
-rw-r--r-- | source3/param/loadparm.c | 8 | ||||
-rw-r--r-- | source3/script/mkproto.awk | 5 |
5 files changed, 26 insertions, 20 deletions
diff --git a/source3/locking/brlock.c b/source3/locking/brlock.c index 00cbed6b84..872ed2bbea 100644 --- a/source3/locking/brlock.c +++ b/source3/locking/brlock.c @@ -333,7 +333,7 @@ static NTSTATUS brl_lock_windows(struct byte_range_lock *br_lck, be mapped into a lower level POSIX one, and if so can we get it ? */ - if (!IS_PENDING_LOCK(plock->lock_type) && lp_posix_locking(SNUM(fsp->conn))) { + if (!IS_PENDING_LOCK(plock->lock_type) && lp_posix_locking(fsp->conn->params)) { int errno_ret; if (!set_posix_lock_windows_flavour(fsp, plock->start, @@ -654,7 +654,7 @@ static NTSTATUS brl_lock_posix(struct byte_range_lock *br_lck, be mapped into a lower level POSIX one, and if so can we get it ? */ - if (!IS_PENDING_LOCK(plock->lock_type) && lp_posix_locking(SNUM(br_lck->fsp->conn))) { + if (!IS_PENDING_LOCK(plock->lock_type) && lp_posix_locking(br_lck->fsp->conn->params)) { int errno_ret; /* The lower layer just needs to attempt to @@ -829,7 +829,7 @@ static BOOL brl_unlock_windows(struct byte_range_lock *br_lck, const struct lock br_lck->modified = True; /* Unlock the underlying POSIX regions. */ - if(lp_posix_locking(SNUM(br_lck->fsp->conn))) { + if(lp_posix_locking(br_lck->fsp->conn->params)) { release_posix_lock_windows_flavour(br_lck->fsp, plock->start, plock->size, @@ -978,7 +978,7 @@ static BOOL brl_unlock_posix(struct byte_range_lock *br_lck, const struct lock_s } /* Unlock any POSIX regions. */ - if(lp_posix_locking(SNUM(br_lck->fsp->conn))) { + if(lp_posix_locking(br_lck->fsp->conn->params)) { release_posix_lock_posix_flavour(br_lck->fsp, plock->start, plock->size, @@ -1103,7 +1103,7 @@ BOOL brl_locktest(struct byte_range_lock *br_lck, * This only conflicts with Windows locks, not POSIX locks. */ - if(lp_posix_locking(SNUM(fsp->conn)) && (lock_flav == WINDOWS_LOCK)) { + if(lp_posix_locking(fsp->conn->params) && (lock_flav == WINDOWS_LOCK)) { ret = is_posix_locked(fsp, &start, &size, &lock_type, WINDOWS_LOCK); DEBUG(10,("brl_locktest: posix start=%.0f len=%.0f %s for fnum %d file %s\n", @@ -1169,7 +1169,7 @@ NTSTATUS brl_lockquery(struct byte_range_lock *br_lck, * see if there is a POSIX lock from a UNIX or NFS process. */ - if(lp_posix_locking(SNUM(fsp->conn))) { + if(lp_posix_locking(fsp->conn->params)) { BOOL ret = is_posix_locked(fsp, pstart, psize, plock_type, POSIX_LOCK); DEBUG(10,("brl_lockquery: posix start=%.0f len=%.0f %s for fnum %d file %s\n", @@ -1252,7 +1252,7 @@ void brl_close_fnum(struct byte_range_lock *br_lck) struct process_id pid = procid_self(); BOOL unlock_individually = False; - if(lp_posix_locking(SNUM(fsp->conn))) { + if(lp_posix_locking(fsp->conn->params)) { /* Check if there are any Windows locks associated with this dev/ino pair that are not this fnum. If so we need to call unlock on each @@ -1358,7 +1358,7 @@ void brl_close_fnum(struct byte_range_lock *br_lck) } } - if(lp_posix_locking(SNUM(fsp->conn)) && num_deleted_windows_locks) { + if(lp_posix_locking(fsp->conn->params) && num_deleted_windows_locks) { /* Reduce the Windows lock POSIX reference count on this dev/ino pair. */ reduce_windows_lock_ref_count(fsp, num_deleted_windows_locks); } diff --git a/source3/locking/locking.c b/source3/locking/locking.c index fbe22f4e1d..13c7724656 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -80,8 +80,7 @@ BOOL is_locked(files_struct *fsp, SMB_BIG_UINT offset, enum brl_type lock_type) { - int snum = SNUM(fsp->conn); - int strict_locking = lp_strict_locking(snum); + int strict_locking = lp_strict_locking(fsp->conn->params); enum brl_flavour lock_flav = lp_posix_cifsu_locktype(); BOOL ret = True; @@ -89,7 +88,7 @@ BOOL is_locked(files_struct *fsp, return False; } - if (!lp_locking(snum) || !strict_locking) { + if (!lp_locking(fsp->conn->params) || !strict_locking) { return False; } @@ -156,7 +155,7 @@ NTSTATUS query_lock(files_struct *fsp, return fsp->is_directory ? NT_STATUS_INVALID_DEVICE_REQUEST : NT_STATUS_INVALID_HANDLE; } - if (!lp_locking(SNUM(fsp->conn))) { + if (!lp_locking(fsp->conn->params)) { return NT_STATUS_OK; } @@ -197,7 +196,7 @@ struct byte_range_lock *do_lock(files_struct *fsp, return NULL; } - if (!lp_locking(SNUM(fsp->conn))) { + if (!lp_locking(fsp->conn->params)) { *perr = NT_STATUS_OK; return NULL; } @@ -243,7 +242,7 @@ NTSTATUS do_unlock(files_struct *fsp, return fsp->is_directory ? NT_STATUS_INVALID_DEVICE_REQUEST : NT_STATUS_INVALID_HANDLE; } - if (!lp_locking(SNUM(fsp->conn))) { + if (!lp_locking(fsp->conn->params)) { return NT_STATUS_OK; } @@ -290,7 +289,7 @@ NTSTATUS do_lock_cancel(files_struct *fsp, NT_STATUS_INVALID_DEVICE_REQUEST : NT_STATUS_INVALID_HANDLE; } - if (!lp_locking(SNUM(fsp->conn))) { + if (!lp_locking(fsp->conn->params)) { return NT_STATUS_DOS(ERRDOS, ERRcancelviolation); } @@ -327,7 +326,7 @@ void locking_close_file(files_struct *fsp) { struct byte_range_lock *br_lck; - if (!lp_locking(SNUM(fsp->conn))) { + if (!lp_locking(fsp->conn->params)) { return; } diff --git a/source3/locking/posix.c b/source3/locking/posix.c index 8e27d4523b..806018da81 100644 --- a/source3/locking/posix.c +++ b/source3/locking/posix.c @@ -643,7 +643,7 @@ int fd_close_posix(struct connection_struct *conn, files_struct *fsp) int *fd_array = NULL; size_t count, i; - if (!lp_locking(SNUM(fsp->conn)) || !lp_posix_locking(SNUM(conn))) { + if (!lp_locking(fsp->conn->params) || !lp_posix_locking(conn->params)) { /* * No locking or POSIX to worry about or we want POSIX semantics * which will lose all locks on all fd's open on this dev/inode, diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index fea41a880f..68dd9d5a97 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -1752,6 +1752,8 @@ static char *lp_string(const char *s) #define FN_LOCAL_PARM_BOOL(fn_name,val) \ BOOL fn_name(const struct share_params *p) {return(LP_SNUM_OK(p->service)? ServicePtrs[(p->service)]->val : sDefault.val);} +#define FN_LOCAL_PARM_INTEGER(fn_name,val) \ + int fn_name(const struct share_params *p) {return(LP_SNUM_OK(p->service)? ServicePtrs[(p->service)]->val : sDefault.val);} #define FN_LOCAL_PARM_STRING(fn_name,val) \ char *fn_name(const struct share_params *p) {return(lp_string((LP_SNUM_OK(p->service) && ServicePtrs[(p->service)]->val) ? ServicePtrs[(p->service)]->val : sDefault.val));} #define FN_LOCAL_CHAR(fn_name,val) \ @@ -2020,9 +2022,9 @@ FN_LOCAL_BOOL(lp_map_hidden, bMap_hidden) FN_LOCAL_BOOL(lp_map_archive, bMap_archive) FN_LOCAL_BOOL(lp_store_dos_attributes, bStoreDosAttributes) FN_LOCAL_BOOL(lp_dmapi_support, bDmapiSupport) -FN_LOCAL_BOOL(lp_locking, bLocking) -FN_LOCAL_INTEGER(lp_strict_locking, iStrictLocking) -FN_LOCAL_BOOL(lp_posix_locking, bPosixLocking) +FN_LOCAL_PARM_BOOL(lp_locking, bLocking) +FN_LOCAL_PARM_INTEGER(lp_strict_locking, iStrictLocking) +FN_LOCAL_PARM_BOOL(lp_posix_locking, bPosixLocking) FN_LOCAL_BOOL(lp_share_modes, bShareModes) FN_LOCAL_BOOL(lp_oplocks, bOpLocks) FN_LOCAL_BOOL(lp_level2_oplocks, bLevel2OpLocks) diff --git a/source3/script/mkproto.awk b/source3/script/mkproto.awk index 97578b046f..65a10c856e 100644 --- a/source3/script/mkproto.awk +++ b/source3/script/mkproto.awk @@ -53,6 +53,11 @@ END { printf "BOOL %s(const struct share_params *p );\n", a[2] } +/^FN_LOCAL_PARM_INTEGER/ { + split($0,a,"[,()]") + printf "int %s(const struct share_params *p );\n", a[2] +} + /^FN_LOCAL_LIST/ { split($0,a,"[,()]") printf "const char **%s(int );\n", a[2] |