s3:blocking: move from 'timeout' to 'smbd_smb1_do_locks_state->timeout'
authorStefan Metzmacher <metze@samba.org>
Tue, 13 Aug 2019 16:34:36 +0000 (18:34 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 9 Sep 2019 14:23:39 +0000 (14:23 +0000)
This will make it possible to just use smbd_smb1_do_locks_try()
in a later commit.

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

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/smbd/blocking.c
source3/smbd/proto.h

index 0fa39ae58ab909d0bcf25dca99d9cc8fc9e651ba..81facc43154d5e465cd617d6d163ac77fde29ab9 100644 (file)
@@ -101,6 +101,7 @@ struct smbd_smb1_do_locks_state {
        struct tevent_context *ev;
        struct smb_request *smbreq;
        struct files_struct *fsp;
+       uint32_t timeout;
        struct timeval endtime;
        bool large_offset;      /* required for correct cancel */
        enum brl_flavour lock_flav;
@@ -119,7 +120,7 @@ struct tevent_req *smbd_smb1_do_locks_send(
        struct tevent_context *ev,
        struct smb_request **smbreq, /* talloc_move()d into our state */
        struct files_struct *fsp,
-       uint32_t timeout,
+       uint32_t lock_timeout,
        bool large_offset,
        enum brl_flavour lock_flav,
        uint16_t num_locks,
@@ -142,6 +143,7 @@ struct tevent_req *smbd_smb1_do_locks_send(
        state->ev = ev;
        state->smbreq = talloc_move(state, smbreq);
        state->fsp = fsp;
+       state->timeout = lock_timeout;
        state->large_offset = large_offset;
        state->lock_flav = lock_flav;
        state->num_locks = num_locks;
@@ -155,13 +157,13 @@ struct tevent_req *smbd_smb1_do_locks_send(
                return tevent_req_post(req, ev);
        }
 
-       if ((timeout != 0) && (timeout != UINT32_MAX)) {
+       if ((state->timeout != 0) && (state->timeout != UINT32_MAX)) {
                /*
                 * Windows internal resolution for blocking locks
                 * seems to be about 200ms... Don't wait for less than
                 * that. JRA.
                 */
-               timeout = MAX(timeout, lp_lock_spin_time());
+               state->timeout = MAX(state->timeout, lp_lock_spin_time());
        }
 
        lck = get_existing_share_mode_lock(state, state->fsp->file_id);
@@ -187,7 +189,7 @@ struct tevent_req *smbd_smb1_do_locks_send(
                goto done;
        }
 
-       if (timeout == 0) {
+       if (state->timeout == 0) {
                struct smbd_lock_element *blocker = &locks[state->blocker];
 
                if ((blocker->offset >= 0xEF000000) &&
@@ -196,7 +198,7 @@ struct tevent_req *smbd_smb1_do_locks_send(
                         * This must be an optimization of an ancient
                         * application bug...
                         */
-                       timeout = lp_lock_spin_time();
+                       state->timeout = lp_lock_spin_time();
                }
 
                if ((fsp->lock_failure_seen) &&
@@ -208,15 +210,15 @@ struct tevent_req *smbd_smb1_do_locks_send(
                         */
                        DBG_DEBUG("Delaying lock request due to previous "
                                  "failure\n");
-                       timeout = lp_lock_spin_time();
+                       state->timeout = lp_lock_spin_time();
                }
        }
 
        DBG_DEBUG("timeout=%"PRIu32", blocking_smblctx=%"PRIu64"\n",
-                 timeout,
+                 state->timeout,
                  blocking_smblctx);
 
-       if (timeout == 0) {
+       if (state->timeout == 0) {
                tevent_req_nterror(req, status);
                goto done;
        }
@@ -229,7 +231,7 @@ struct tevent_req *smbd_smb1_do_locks_send(
        TALLOC_FREE(lck);
        tevent_req_set_callback(subreq, smbd_smb1_do_locks_retry, req);
 
-       state->endtime = timeval_current_ofs_msec(timeout);
+       state->endtime = timeval_current_ofs_msec(state->timeout);
        endtime = state->endtime;
 
        if (blocking_smblctx == UINT64_MAX) {
index ef24cf0578d455674fe5800f1d1a3021431ab745..99458e50df9a9ed9df7cea28b1de041a9a1de641 100644 (file)
@@ -108,7 +108,7 @@ struct tevent_req *smbd_smb1_do_locks_send(
        struct tevent_context *ev,
        struct smb_request **smbreq, /* talloc_move()d into our state */
        struct files_struct *fsp,
-       uint32_t timeout,
+       uint32_t lock_timeout,
        bool large_offset,
        enum brl_flavour lock_flav,
        uint16_t num_locks,