From 892481ffbe558e29141e9dfe446cf90eb5644ccd Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Wed, 5 Sep 2012 15:51:04 +0800 Subject: [PATCH] LU-1832 ldlm: fix double list add Adding list to itself will cause kernel warning if CONFIG_DEBUG_LIST is on. Signed-off-by: Peng Tao Change-Id: Ibaf135c2c6ca6cc8ee4f0e6f270d738c6964fddb Reviewed-on: http://review.whamcloud.com/3880 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Fan Yong Reviewed-by: Keith Mannthey --- lustre/ldlm/ldlm_lock.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lustre/ldlm/ldlm_lock.c b/lustre/ldlm/ldlm_lock.c index 607c631..f575bda 100644 --- a/lustre/ldlm/ldlm_lock.c +++ b/lustre/ldlm/ldlm_lock.c @@ -982,9 +982,16 @@ static void ldlm_granted_list_add_lock(struct ldlm_lock *lock, LASSERT(cfs_list_empty(&lock->l_sl_mode)); LASSERT(cfs_list_empty(&lock->l_sl_policy)); - cfs_list_add(&lock->l_res_link, prev->res_link); - cfs_list_add(&lock->l_sl_mode, prev->mode_link); - cfs_list_add(&lock->l_sl_policy, prev->policy_link); + /* + * lock->link == prev->link means lock is first starting the group. + * Don't re-add to itself to suppress kernel warnings. + */ + if (&lock->l_res_link != prev->res_link) + cfs_list_add(&lock->l_res_link, prev->res_link); + if (&lock->l_sl_mode != prev->mode_link) + cfs_list_add(&lock->l_sl_mode, prev->mode_link); + if (&lock->l_sl_policy != prev->policy_link) + cfs_list_add(&lock->l_sl_policy, prev->policy_link); EXIT; } -- 1.8.3.1