ceph: renew mon subscription before it expires
Be conservative: renew subscription once half the interval has expired. Do not reuse sub expiration to control hunting. Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
@@ -213,7 +213,7 @@ static void handle_subscribe_ack(struct ceph_mon_client *monc,
|
|||||||
monc->hunting = false;
|
monc->hunting = false;
|
||||||
}
|
}
|
||||||
dout("handle_subscribe_ack after %d seconds\n", seconds);
|
dout("handle_subscribe_ack after %d seconds\n", seconds);
|
||||||
monc->sub_renew_after = monc->sub_sent + seconds*HZ - 1;
|
monc->sub_renew_after = monc->sub_sent + (seconds >> 1)*HZ - 1;
|
||||||
monc->sub_sent = 0;
|
monc->sub_sent = 0;
|
||||||
mutex_unlock(&monc->mutex);
|
mutex_unlock(&monc->mutex);
|
||||||
return;
|
return;
|
||||||
@@ -512,7 +512,7 @@ static void delayed_work(struct work_struct *work)
|
|||||||
if (monc->want_mount) {
|
if (monc->want_mount) {
|
||||||
__request_mount(monc);
|
__request_mount(monc);
|
||||||
} else {
|
} else {
|
||||||
if (__sub_expired(monc)) {
|
if (monc->hunting) {
|
||||||
__close_session(monc);
|
__close_session(monc);
|
||||||
__open_session(monc); /* continue hunting */
|
__open_session(monc); /* continue hunting */
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user