Adding list to itself will cause kernel warning if
CONFIG_DEBUG_LIST is on.
Signed-off-by: Peng Tao <tao.peng@emc.com>
Change-Id: Ibaf135c2c6ca6cc8ee4f0e6f270d738c6964fddb
Reviewed-on: http://review.whamcloud.com/3880
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Fan Yong <yong.fan@whamcloud.com>
Reviewed-by: Keith Mannthey <kemannthey@gmail.com>
LASSERT(cfs_list_empty(&lock->l_sl_mode));
LASSERT(cfs_list_empty(&lock->l_sl_policy));
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);