From 0656d11ba6ffa3dee0e8916a1903f96185651217 Mon Sep 17 00:00:00 2001
From: Sage Weil <sage@newdream.net>
Date: Thu, 8 Oct 2009 10:25:46 -0700
Subject: [PATCH] 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>
---
 fs/ceph/mon_client.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ceph/mon_client.c b/fs/ceph/mon_client.c
index b0c95cec5df8..9c34df17fa4b 100644
--- a/fs/ceph/mon_client.c
+++ b/fs/ceph/mon_client.c
@@ -213,7 +213,7 @@ static void handle_subscribe_ack(struct ceph_mon_client *monc,
 		monc->hunting = false;
 	}
 	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;
 	mutex_unlock(&monc->mutex);
 	return;
@@ -512,7 +512,7 @@ static void delayed_work(struct work_struct *work)
 	if (monc->want_mount) {
 		__request_mount(monc);
 	} else {
-		if (__sub_expired(monc)) {
+		if (monc->hunting) {
 			__close_session(monc);
 			__open_session(monc);  /* continue hunting */
 		} else {
-- 
GitLab