libceph: un-backoff on tick when we have a authenticated session
This means that if we do some backoff, then authenticate, and are healthy for an extended period of time, a subsequent failure won't leave us starting our hunting sequence with a large backoff. Mirrors ceph.git commit d466bc6e66abba9b464b0b69687cf45c9dccf383. Cc: stable@vger.kernel.org # 4.7+ Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Jason Dillaman <dillaman@redhat.com>
This commit is contained in:
parent
f191982689
commit
facb9f6eba
|
@ -209,6 +209,14 @@ static void reopen_session(struct ceph_mon_client *monc)
|
|||
__open_session(monc);
|
||||
}
|
||||
|
||||
static void un_backoff(struct ceph_mon_client *monc)
|
||||
{
|
||||
monc->hunt_mult /= 2; /* reduce by 50% */
|
||||
if (monc->hunt_mult < 1)
|
||||
monc->hunt_mult = 1;
|
||||
dout("%s hunt_mult now %d\n", __func__, monc->hunt_mult);
|
||||
}
|
||||
|
||||
/*
|
||||
* Reschedule delayed work timer.
|
||||
*/
|
||||
|
@ -963,6 +971,7 @@ static void delayed_work(struct work_struct *work)
|
|||
if (!monc->hunting) {
|
||||
ceph_con_keepalive(&monc->con);
|
||||
__validate_auth(monc);
|
||||
un_backoff(monc);
|
||||
}
|
||||
|
||||
if (is_auth &&
|
||||
|
@ -1123,9 +1132,7 @@ static void finish_hunting(struct ceph_mon_client *monc)
|
|||
dout("%s found mon%d\n", __func__, monc->cur_mon);
|
||||
monc->hunting = false;
|
||||
monc->had_a_connection = true;
|
||||
monc->hunt_mult /= 2; /* reduce by 50% */
|
||||
if (monc->hunt_mult < 1)
|
||||
monc->hunt_mult = 1;
|
||||
un_backoff(monc);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue