diff options
author | Amitay Isaacs <amitay@gmail.com> | 2017-05-18 10:15:01 +1000 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2017-05-24 17:03:27 +0200 |
commit | a50b25d0ebbe731a766f8d2ce1924b34d6041668 (patch) | |
tree | 8cbb532f5c042893fc19bc12536c360fc0fb93c4 /ctdb | |
parent | 02a76d86db0cbe79fcaf1a500630e24d961fa149 (diff) | |
download | samba-a50b25d0ebbe731a766f8d2ce1924b34d6041668.tar.gz |
Revert "ctdb-readonly: Avoid a tight loop waiting for revoke to complete"
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12697
This reverts commit ad758cb869ac83534993caa212abc9fe9905ec68.
This is an incomplete fix and introduces a regression.
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb')
-rw-r--r-- | ctdb/server/ctdb_call.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/ctdb/server/ctdb_call.c b/ctdb/server/ctdb_call.c index 3b84e754008..ed0817db1cb 100644 --- a/ctdb/server/ctdb_call.c +++ b/ctdb/server/ctdb_call.c @@ -1609,6 +1609,7 @@ static int deferred_call_destructor(struct revokechild_deferred_call *deferred_c { struct ctdb_context *ctdb = deferred_call->ctdb; struct revokechild_requeue_handle *requeue_handle = talloc(ctdb, struct revokechild_requeue_handle); + struct ctdb_req_call_old *c = (struct ctdb_req_call_old *)deferred_call->hdr; requeue_handle->ctdb = ctdb; requeue_handle->hdr = deferred_call->hdr; @@ -1616,12 +1617,9 @@ static int deferred_call_destructor(struct revokechild_deferred_call *deferred_c requeue_handle->ctx = deferred_call->ctx; talloc_steal(requeue_handle, requeue_handle->hdr); - /* Always delay revoke requests. Either wait for the read/write - * operation to complete, or if revoking failed wait for recovery to - * complete - */ + /* when revoking, any READONLY requests have 1 second grace to let read/write finish first */ tevent_add_timer(ctdb->ev, requeue_handle, - timeval_current_ofs(1, 0), + timeval_current_ofs(c->flags & CTDB_WANT_READONLY ? 1 : 0, 0), deferred_call_requeue, requeue_handle); return 0; |