The branch, master has been updated
       via  adf4833... This patch looks bigger than it is. It does 2 things. 
1). Renames smbpid -> smblctx in our locking code. 2). Widens smblctx to 
64-bits internally. Preparing to use the SMB2 handle as the locking context.
      from  6fd4861... s4-devel: a very useful script when dealing with 
library/linking issues

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit adf4833792f36653bc8a854aeff47598a046dad6
Author: Jeremy Allison <[email protected]>
Date:   Fri May 7 06:20:50 2010 -0700

    This patch looks bigger than it is. It does 2 things. 1). Renames smbpid -> 
smblctx in our locking code. 2). Widens smblctx to 64-bits internally. 
Preparing to use the SMB2 handle as the locking context.
    
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source3/include/locking.h |    8 +++---
 source3/include/proto.h   |   32 ++++++++++++------------
 source3/locking/brlock.c  |   52 +++++++++++++++++++-------------------
 source3/locking/locking.c |   30 +++++++++++-----------
 source3/smbd/aio.c        |    4 +-
 source3/smbd/blocking.c   |   54 ++++++++++++++++++++--------------------
 source3/smbd/globals.h    |    4 +-
 source3/smbd/reply.c      |   60 ++++++++++++++++++++++----------------------
 source3/smbd/smb2_lock.c  |   28 ++++++++++----------
 source3/smbd/trans2.c     |   28 ++++++++++----------
 10 files changed, 150 insertions(+), 150 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/locking.h b/source3/include/locking.h
index ee59cad..88104b0 100644
--- a/source3/include/locking.h
+++ b/source3/include/locking.h
@@ -36,7 +36,7 @@ enum brl_flavour {WINDOWS_LOCK = 0, POSIX_LOCK = 1};
    this client */
 
 struct lock_context {
-       uint32 smbpid;
+       uint64_t smblctx;
        uint16 tid;
        struct server_id pid;
 };
@@ -88,8 +88,8 @@ struct blocking_lock_record {
        int lock_num;
        uint64_t offset;
        uint64_t count;
-       uint32_t lock_pid;
-       uint32_t blocking_pid; /* PID that blocks us. */
+       uint64_t smblctx;
+       uint64_t blocking_smblctx; /* Context that blocks us. */
        enum brl_flavour lock_flav;
        enum brl_type lock_type;
        struct smb_request *req;
@@ -97,7 +97,7 @@ struct blocking_lock_record {
 };
 
 struct smbd_lock_element {
-       uint32_t smbpid;
+       uint64_t smblctx;
        enum brl_type brltype;
        uint64_t offset;
        uint64_t count;
diff --git a/source3/include/proto.h b/source3/include/proto.h
index f05f76b..a3ba747 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -3374,18 +3374,18 @@ NTSTATUS brl_lock_windows_default(struct 
byte_range_lock *br_lck,
 
 NTSTATUS brl_lock(struct messaging_context *msg_ctx,
                struct byte_range_lock *br_lck,
-               uint32 smbpid,
+               uint64_t smblctx,
                struct server_id pid,
                br_off start,
                br_off size, 
                enum brl_type lock_type,
                enum brl_flavour lock_flav,
                bool blocking_lock,
-               uint32 *psmbpid,
+               uint64_t *psmblctx,
                struct blocking_lock_record *blr);
 bool brl_unlock(struct messaging_context *msg_ctx,
                struct byte_range_lock *br_lck,
-               uint32 smbpid,
+               uint64_t smblctx,
                struct server_id pid,
                br_off start,
                br_off size,
@@ -3394,21 +3394,21 @@ bool brl_unlock_windows_default(struct 
messaging_context *msg_ctx,
                               struct byte_range_lock *br_lck,
                               const struct lock_struct *plock);
 bool brl_locktest(struct byte_range_lock *br_lck,
-               uint32 smbpid,
+               uint64_t smblctx,
                struct server_id pid,
                br_off start,
                br_off size, 
                enum brl_type lock_type,
                enum brl_flavour lock_flav);
 NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
-               uint32 *psmbpid,
+               uint64_t *psmblctx,
                struct server_id pid,
                br_off *pstart,
                br_off *psize, 
                enum brl_type *plock_type,
                enum brl_flavour lock_flav);
 bool brl_lock_cancel(struct byte_range_lock *br_lck,
-               uint32 smbpid,
+               uint64_t smblctx,
                struct server_id pid,
                br_off start,
                br_off size,
@@ -3434,7 +3434,7 @@ void brl_register_msgs(struct messaging_context *msg_ctx);
 const char *lock_type_name(enum brl_type lock_type);
 const char *lock_flav_name(enum brl_flavour lock_flav);
 void init_strict_lock_struct(files_struct *fsp,
-                               uint32 smbpid,
+                               uint64_t smblctx,
                                br_off start,
                                br_off size,
                                enum brl_type lock_type,
@@ -3444,30 +3444,30 @@ bool strict_lock_default(files_struct *fsp,
 void strict_unlock_default(files_struct *fsp,
                                struct lock_struct *plock);
 NTSTATUS query_lock(files_struct *fsp,
-                       uint32 *psmbpid,
+                       uint64_t *psmblctx,
                        uint64_t *pcount,
                        uint64_t *poffset,
                        enum brl_type *plock_type,
                        enum brl_flavour lock_flav);
 struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
                        files_struct *fsp,
-                       uint32 lock_pid,
+                       uint64_t smblctx,
                        uint64_t count,
                        uint64_t offset,
                        enum brl_type lock_type,
                        enum brl_flavour lock_flav,
                        bool blocking_lock,
                        NTSTATUS *perr,
-                       uint32 *plock_pid,
+                       uint64_t *psmblctx,
                        struct blocking_lock_record *blr);
 NTSTATUS do_unlock(struct messaging_context *msg_ctx,
                        files_struct *fsp,
-                       uint32 lock_pid,
+                       uint64_t smblctx,
                        uint64_t count,
                        uint64_t offset,
                        enum brl_flavour lock_flav);
 NTSTATUS do_lock_cancel(files_struct *fsp,
-                       uint32 lock_pid,
+                       uint64 smblctx,
                        uint64_t count,
                        uint64_t offset,
                        enum brl_flavour lock_flav,
@@ -5997,19 +5997,19 @@ bool push_blocking_lock_request( struct byte_range_lock 
*br_lck,
                files_struct *fsp,
                int lock_timeout,
                int lock_num,
-               uint32 lock_pid,
+               uint64_t smblctx,
                enum brl_type lock_type,
                enum brl_flavour lock_flav,
                uint64_t offset,
                uint64_t count,
-               uint32 blocking_pid);
+               uint64_t blocking_smblctx);
 void cancel_pending_lock_requests_by_fid(files_struct *fsp,
                        struct byte_range_lock *br_lck,
                        enum file_close_type close_type);
 void remove_pending_lock_requests_by_mid_smb1(uint64_t mid);
 bool blocking_lock_was_deferred_smb1(uint64_t mid);
 struct blocking_lock_record *blocking_lock_cancel_smb1(files_struct *fsp,
-                       uint32 lock_pid,
+                       uint64_t smblctx,
                        uint64_t offset,
                        uint64_t count,
                        enum brl_flavour lock_flav,
@@ -6868,7 +6868,7 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
                        int count,
                        bool target_is_directory);
 void reply_copy(struct smb_request *req);
-uint32 get_lock_pid(const uint8_t *data, int data_offset,
+uint64_t get_lock_pid(const uint8_t *data, int data_offset,
                    bool large_file_format);
 uint64_t get_lock_count(const uint8_t *data, int data_offset,
                        bool large_file_format);
diff --git a/source3/locking/brlock.c b/source3/locking/brlock.c
index c462217..985b98a 100644
--- a/source3/locking/brlock.c
+++ b/source3/locking/brlock.c
@@ -42,9 +42,9 @@ static struct db_context *brlock_db;
 
 static void print_lock_struct(unsigned int i, struct lock_struct *pls)
 {
-       DEBUG(10,("[%u]: smbpid = %u, tid = %u, pid = %s, ",
+       DEBUG(10,("[%u]: smblctx = %llu, tid = %u, pid = %s, ",
                        i,
-                       (unsigned int)pls->context.smbpid,
+                       (unsigned long long)pls->context.smblctx,
                        (unsigned int)pls->context.tid,
                        procid_str(talloc_tos(), &pls->context.pid) ));
        
@@ -64,7 +64,7 @@ bool brl_same_context(const struct lock_context *ctx1,
                             const struct lock_context *ctx2)
 {
        return (procid_equal(&ctx1->pid, &ctx2->pid) &&
-               (ctx1->smbpid == ctx2->smbpid) &&
+               (ctx1->smblctx == ctx2->smblctx) &&
                (ctx1->tid == ctx2->tid));
 }
 
@@ -342,7 +342,7 @@ NTSTATUS brl_lock_windows_default(struct byte_range_lock 
*br_lck,
                /* Do any Windows or POSIX locks conflict ? */
                if (brl_conflict(&locks[i], plock)) {
                        /* Remember who blocked us. */
-                       plock->context.smbpid = locks[i].context.smbpid;
+                       plock->context.smblctx = locks[i].context.smblctx;
                        return brl_lock_failed(fsp,plock,blocking_lock);
                }
 #if ZERO_ZERO
@@ -373,7 +373,7 @@ NTSTATUS brl_lock_windows_default(struct byte_range_lock 
*br_lck,
                                &errno_ret)) {
 
                        /* We don't know who blocked us. */
-                       plock->context.smbpid = 0xFFFFFFFF;
+                       plock->context.smblctx = 0xFFFFFFFFFFFFFFFFLL;
 
                        if (errno_ret == EACCES || errno_ret == EAGAIN) {
                                status = NT_STATUS_FILE_LOCK_CONFLICT;
@@ -747,7 +747,7 @@ static NTSTATUS brl_lock_posix(struct messaging_context 
*msg_ctx,
                                /* No games with error messages. */
                                SAFE_FREE(tp);
                                /* Remember who blocked us. */
-                               plock->context.smbpid = 
curr_lock->context.smbpid;
+                               plock->context.smblctx = 
curr_lock->context.smblctx;
                                return NT_STATUS_FILE_LOCK_CONFLICT;
                        }
                        /* Just copy the Windows lock into the new array. */
@@ -762,7 +762,7 @@ static NTSTATUS brl_lock_posix(struct messaging_context 
*msg_ctx,
                                /* No games with error messages. */
                                SAFE_FREE(tp);
                                /* Remember who blocked us. */
-                               plock->context.smbpid = 
curr_lock->context.smbpid;
+                               plock->context.smblctx = 
curr_lock->context.smblctx;
                                return NT_STATUS_FILE_LOCK_CONFLICT;
                        }
 
@@ -822,7 +822,7 @@ static NTSTATUS brl_lock_posix(struct messaging_context 
*msg_ctx,
                                &errno_ret)) {
 
                        /* We don't know who blocked us. */
-                       plock->context.smbpid = 0xFFFFFFFF;
+                       plock->context.smblctx = 0xFFFFFFFFFFFFFFFFLL;
 
                        if (errno_ret == EACCES || errno_ret == EAGAIN) {
                                SAFE_FREE(tp);
@@ -902,14 +902,14 @@ NTSTATUS smb_vfs_call_brl_lock_windows(struct 
vfs_handle_struct *handle,
 
 NTSTATUS brl_lock(struct messaging_context *msg_ctx,
                struct byte_range_lock *br_lck,
-               uint32 smbpid,
+               uint64_t smblctx,
                struct server_id pid,
                br_off start,
                br_off size, 
                enum brl_type lock_type,
                enum brl_flavour lock_flav,
                bool blocking_lock,
-               uint32 *psmbpid,
+               uint64_t *psmblctx,
                struct blocking_lock_record *blr)
 {
        NTSTATUS ret;
@@ -926,7 +926,7 @@ NTSTATUS brl_lock(struct messaging_context *msg_ctx,
        memset(&lock, '\0', sizeof(lock));
 #endif
 
-       lock.context.smbpid = smbpid;
+       lock.context.smblctx = smblctx;
        lock.context.pid = pid;
        lock.context.tid = br_lck->fsp->conn->cnum;
        lock.start = start;
@@ -948,8 +948,8 @@ NTSTATUS brl_lock(struct messaging_context *msg_ctx,
 #endif
 
        /* If we're returning an error, return who blocked us. */
-       if (!NT_STATUS_IS_OK(ret) && psmbpid) {
-               *psmbpid = lock.context.smbpid;
+       if (!NT_STATUS_IS_OK(ret) && psmblctx) {
+               *psmblctx = lock.context.smblctx;
        }
        return ret;
 }
@@ -1235,7 +1235,7 @@ bool smb_vfs_call_brl_unlock_windows(struct 
vfs_handle_struct *handle,
 
 bool brl_unlock(struct messaging_context *msg_ctx,
                struct byte_range_lock *br_lck,
-               uint32 smbpid,
+               uint64_t smblctx,
                struct server_id pid,
                br_off start,
                br_off size,
@@ -1243,7 +1243,7 @@ bool brl_unlock(struct messaging_context *msg_ctx,
 {
        struct lock_struct lock;
 
-       lock.context.smbpid = smbpid;
+       lock.context.smblctx = smblctx;
        lock.context.pid = pid;
        lock.context.tid = br_lck->fsp->conn->cnum;
        lock.start = start;
@@ -1266,7 +1266,7 @@ bool brl_unlock(struct messaging_context *msg_ctx,
 ****************************************************************************/
 
 bool brl_locktest(struct byte_range_lock *br_lck,
-               uint32 smbpid,
+               uint64_t smblctx,
                struct server_id pid,
                br_off start,
                br_off size, 
@@ -1279,7 +1279,7 @@ bool brl_locktest(struct byte_range_lock *br_lck,
        const struct lock_struct *locks = br_lck->lock_data;
        files_struct *fsp = br_lck->fsp;
 
-       lock.context.smbpid = smbpid;
+       lock.context.smblctx = smblctx;
        lock.context.pid = pid;
        lock.context.tid = br_lck->fsp->conn->cnum;
        lock.start = start;
@@ -1324,7 +1324,7 @@ bool brl_locktest(struct byte_range_lock *br_lck,
 ****************************************************************************/
 
 NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
-               uint32 *psmbpid,
+               uint64_t *psmblctx,
                struct server_id pid,
                br_off *pstart,
                br_off *psize, 
@@ -1336,7 +1336,7 @@ NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
        const struct lock_struct *locks = br_lck->lock_data;
        files_struct *fsp = br_lck->fsp;
 
-       lock.context.smbpid = *psmbpid;
+       lock.context.smblctx = *psmblctx;
        lock.context.pid = pid;
        lock.context.tid = br_lck->fsp->conn->cnum;
        lock.start = *pstart;
@@ -1357,7 +1357,7 @@ NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
                }
 
                if (conflict) {
-                       *psmbpid = exlock->context.smbpid;
+                       *psmblctx = exlock->context.smblctx;
                        *pstart = exlock->start;
                        *psize = exlock->size;
                        *plock_type = exlock->lock_type;
@@ -1378,8 +1378,8 @@ NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
                        fsp->fnum, fsp_str_dbg(fsp)));
 
                if (ret) {
-                       /* Hmmm. No clue what to set smbpid to - use -1. */
-                       *psmbpid = 0xFFFF;
+                       /* Hmmm. No clue what to set smblctx to - use -1. */
+                       *psmblctx = 0xFFFFFFFFFFFFFFFFLL;
                        return NT_STATUS_LOCK_NOT_GRANTED;
                }
         }
@@ -1401,7 +1401,7 @@ bool smb_vfs_call_brl_cancel_windows(struct 
vfs_handle_struct *handle,
  Remove a particular pending lock.
 ****************************************************************************/
 bool brl_lock_cancel(struct byte_range_lock *br_lck,
-               uint32 smbpid,
+               uint64_t smblctx,
                struct server_id pid,
                br_off start,
                br_off size,
@@ -1411,7 +1411,7 @@ bool brl_lock_cancel(struct byte_range_lock *br_lck,
        bool ret;
        struct lock_struct lock;
 
-       lock.context.smbpid = smbpid;
+       lock.context.smblctx = smblctx;
        lock.context.pid = pid;
        lock.context.tid = br_lck->fsp->conn->cnum;
        lock.start = start;
@@ -1533,7 +1533,7 @@ void brl_close_fnum(struct messaging_context *msg_ctx,
                                                (lock->fnum == fnum)) {
                                        brl_unlock(msg_ctx,
                                                br_lck,
-                                               lock->context.smbpid,
+                                               lock->context.smblctx,
                                                pid,
                                                lock->start,
                                                lock->size,
@@ -1646,7 +1646,7 @@ static bool validate_lock_entries(unsigned int 
*pnum_entries, struct lock_struct
                        num_valid_entries = 0;
                        for (i = 0; i < *pnum_entries; i++) {
                                struct lock_struct *lock_data = &locks[i];
-                               if (lock_data->context.smbpid &&
+                               if (lock_data->context.smblctx &&
                                                lock_data->context.tid) {
                                        /* Valid (nonzero) entry - copy it. */
                                        
memcpy(&new_lock_data[num_valid_entries],
diff --git a/source3/locking/locking.c b/source3/locking/locking.c
index dc43f9e..917b436 100644
--- a/source3/locking/locking.c
+++ b/source3/locking/locking.c
@@ -77,7 +77,7 @@ const char *lock_flav_name(enum brl_flavour lock_flav)
 ****************************************************************************/
 
 void init_strict_lock_struct(files_struct *fsp,
-                               uint32 smbpid,
+                               uint64_t smblctx,
                                br_off start,
                                br_off size,
                                enum brl_type lock_type,
@@ -85,7 +85,7 @@ void init_strict_lock_struct(files_struct *fsp,
 {
        SMB_ASSERT(lock_type == READ_LOCK || lock_type == WRITE_LOCK);
 
-       plock->context.smbpid = smbpid;
+       plock->context.smblctx = smblctx;
         plock->context.tid = fsp->conn->cnum;
         plock->context.pid = procid_self();
         plock->start = start;
@@ -124,7 +124,7 @@ bool strict_lock_default(files_struct *fsp, struct 
lock_struct *plock)
                                return True;
                        }
                        ret = brl_locktest(br_lck,
-                                       plock->context.smbpid,
+                                       plock->context.smblctx,
                                        plock->context.pid,
                                        plock->start,
                                        plock->size,
@@ -139,7 +139,7 @@ bool strict_lock_default(files_struct *fsp, struct 
lock_struct *plock)
                        return True;
                }
                ret = brl_locktest(br_lck,
-                               plock->context.smbpid,
+                               plock->context.smblctx,
                                plock->context.pid,
                                plock->start,
                                plock->size,
@@ -166,7 +166,7 @@ void strict_unlock_default(files_struct *fsp, struct 
lock_struct *plock)
 ****************************************************************************/
 
 NTSTATUS query_lock(files_struct *fsp,
-                       uint32 *psmbpid,
+                       uint64_t *psmblctx,
                        uint64_t *pcount,
                        uint64_t *poffset,
                        enum brl_type *plock_type,
@@ -188,7 +188,7 @@ NTSTATUS query_lock(files_struct *fsp,
        }
 
        return brl_lockquery(br_lck,
-                       psmbpid,
+                       psmblctx,
                        procid_self(),
                        poffset,
                        pcount,
@@ -230,14 +230,14 @@ static void decrement_current_lock_count(files_struct 
*fsp,
 
 struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
                        files_struct *fsp,
-                       uint32 lock_pid,
+                       uint64_t smblctx,
                        uint64_t count,
                        uint64_t offset,
                        enum brl_type lock_type,
                        enum brl_flavour lock_flav,
                        bool blocking_lock,
                        NTSTATUS *perr,
-                       uint32 *plock_pid,
+                       uint64_t *psmblctx,
                        struct blocking_lock_record *blr)
 {
        struct byte_range_lock *br_lck = NULL;
@@ -274,14 +274,14 @@ struct byte_range_lock *do_lock(struct messaging_context 
*msg_ctx,
 
        *perr = brl_lock(msg_ctx,
                        br_lck,
-                       lock_pid,
+                       smblctx,
                        procid_self(),
                        offset,
-                       count, 
+                       count,
                        lock_type,
                        lock_flav,
                        blocking_lock,
-                       plock_pid,
+                       psmblctx,
                        blr);
 
        DEBUG(10, ("do_lock: returning status=%s\n", nt_errstr(*perr)));
@@ -296,7 +296,7 @@ struct byte_range_lock *do_lock(struct messaging_context 
*msg_ctx,
 
 NTSTATUS do_unlock(struct messaging_context *msg_ctx,
                        files_struct *fsp,
-                       uint32 lock_pid,
+                       uint64_t smblctx,
                        uint64_t count,
                        uint64_t offset,
                        enum brl_flavour lock_flav)
@@ -323,7 +323,7 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx,
 
        ok = brl_unlock(msg_ctx,
                        br_lck,
-                       lock_pid,
+                       smblctx,
                        procid_self(),
                        offset,
                        count,
@@ -345,7 +345,7 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx,
 ****************************************************************************/
 
 NTSTATUS do_lock_cancel(files_struct *fsp,
-                       uint32 lock_pid,
+                       uint64 smblctx,
                        uint64_t count,
                        uint64_t offset,
                        enum brl_flavour lock_flav,
@@ -373,7 +373,7 @@ NTSTATUS do_lock_cancel(files_struct *fsp,
        }


-- 
Samba Shared Repository

Reply via email to