ceph: don't reset s_cap_ttl to zero
Alex Elder [Fri, 13 Jan 2012 01:48:11 +0000 (17:48 -0800)]
Avoid the need to check for a special zero s_cap_ttl value by just
using (jiffies - 1) as the value assigned to indicate "sometime in
the past."

Signed-off-by: Alex Elder <elder@dreamhost.com>
Reviewed-by: Sage Weil <sage@newdream.net>

fs/ceph/mds_client.c

index 866e8d7..89971e1 100644 (file)
@@ -402,7 +402,7 @@ static struct ceph_mds_session *register_session(struct ceph_mds_client *mdsc,
 
        spin_lock_init(&s->s_gen_ttl_lock);
        s->s_cap_gen = 0;
-       s->s_cap_ttl = 0;
+       s->s_cap_ttl = jiffies - 1;
 
        spin_lock_init(&s->s_cap_lock);
        s->s_renew_requested = 0;
@@ -1083,8 +1083,7 @@ static void renewed_caps(struct ceph_mds_client *mdsc,
        int wake = 0;
 
        spin_lock(&session->s_cap_lock);
-       was_stale = is_renew && (session->s_cap_ttl == 0 ||
-                                time_after_eq(jiffies, session->s_cap_ttl));
+       was_stale = is_renew && time_after_eq(jiffies, session->s_cap_ttl);
 
        session->s_cap_ttl = session->s_renew_requested +
                mdsc->mdsmap->m_session_timeout*HZ;
@@ -2332,7 +2331,7 @@ static void handle_session(struct ceph_mds_session *session,
                        session->s_mds);
                spin_lock(&session->s_gen_ttl_lock);
                session->s_cap_gen++;
-               session->s_cap_ttl = 0;
+               session->s_cap_ttl = jiffies - 1;
                spin_unlock(&session->s_gen_ttl_lock);
                send_renew_caps(mdsc, session);
                break;