From 1a0e9f18f8cb7178602a01994b38238fb614496b Mon Sep 17 00:00:00 2001 From: lsy Date: Mon, 5 Sep 2005 06:05:07 +0000 Subject: [PATCH] add some debug message for capbility key update. a small fix for key expiry. --- lustre/llite/llite_capa.c | 1 - lustre/mds/mds_capa.c | 30 ++++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/lustre/llite/llite_capa.c b/lustre/llite/llite_capa.c index e3ac909..841857b 100644 --- a/lustre/llite/llite_capa.c +++ b/lustre/llite/llite_capa.c @@ -52,7 +52,6 @@ static inline int have_expired_capa(void) if (!list_empty(ll_capa_list)) { ocapa = list_entry(ll_capa_list->next, struct obd_capa, c_list); expired = __capa_is_to_expire(ocapa); - if (!expired) { capa = &ocapa->c_capa; expiry = expiry_to_jiffies(capa->lc_expiry - diff --git a/lustre/mds/mds_capa.c b/lustre/mds/mds_capa.c index 06298e5..26ea186 100644 --- a/lustre/mds/mds_capa.c +++ b/lustre/mds/mds_capa.c @@ -184,8 +184,10 @@ int mds_read_capa_key(struct obd_device *obd, struct file *file) expiry = CUR_CAPA_KEY_JIFFIES(mds); spin_lock(&mds_capa_lock); if (time_before(expiry, mds_eck_timer.expires) || - !timer_pending(&mds_eck_timer)) + !timer_pending(&mds_eck_timer)) { mod_timer(&mds_eck_timer, expiry); + CDEBUG(D_INFO, "mds_eck_timer %lu", expiry); + } list_add_capa_key(&CUR_MDS_CAPA_KEY(mds), &mds_capa_key_list); spin_unlock(&mds_capa_lock); out: @@ -265,8 +267,10 @@ mds_update_capa_key(struct obd_device *obd, struct mds_capa_key *mkey, list_add_capa_key(&CUR_MDS_CAPA_KEY(mds), &mds_capa_key_list); if (time_before(expiry, mds_eck_timer.expires) || - !timer_pending(&mds_eck_timer)) + !timer_pending(&mds_eck_timer)) { mod_timer(&mds_eck_timer, expiry); + CDEBUG(D_INFO, "mds_eck_timer %lu", expiry); + } spin_unlock(&mds_capa_lock); DEBUG_MDS_CAPA_KEY(D_INFO, &CUR_MDS_CAPA_KEY(mds), @@ -278,6 +282,7 @@ out: static inline int have_expired_capa_key(void) { struct mds_capa_key *key; + unsigned long expiry; int expired = 0; ENTRY; @@ -286,8 +291,17 @@ static inline int have_expired_capa_key(void) key = list_entry(mds_capa_key_list.next, struct mds_capa_key, k_list); /* expiry is in sec, so in case it misses, the result will - * minus HZ and then compare with jiffies. */ - expired = time_before(CAPA_KEY_JIFFIES(key) - HZ, jiffies); + * minus 5 sec and then compare with jiffies. (in case the + * clock is innacurate) */ + expiry = CAPA_KEY_JIFFIES(key); + expired = time_before(expiry - 5 * HZ, jiffies); + if (!expired) { + if (time_before(expiry, mds_eck_timer.expires) || + !timer_pending(&mds_eck_timer)) { + mod_timer(&mds_eck_timer, expiry); + CDEBUG(D_INFO, "mds_eck_timer %lu", expiry); + } + } } spin_unlock(&mds_capa_lock); @@ -325,6 +339,7 @@ static int mds_capa_key_thread_main(void *arg) while (!mds_capa_key_check_stop()) { struct l_wait_info lwi = { 0 }; + unsigned long expiry; struct mds_capa_key *key, *tmp, *next = NULL; l_wait_event(mds_eck_thread.t_ctl_waitq, @@ -350,8 +365,11 @@ static int mds_capa_key_thread_main(void *arg) spin_lock(&mds_capa_lock); } - if (next) - mod_timer(&mds_eck_timer, CAPA_KEY_JIFFIES(next)); + if (next) { + expiry = CAPA_KEY_JIFFIES(next); + mod_timer(&mds_eck_timer, expiry); + CDEBUG(D_INFO, "mds_eck_timer %lu", expiry); + } spin_unlock(&mds_capa_lock); } -- 1.8.3.1