aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/lustre/lnet/libcfs/libcfs_lock.c
diff options
context:
space:
mode:
authorLiang Zhen <liang.zhen@intel.com>2016-03-27 20:26:26 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-03-29 12:10:20 -0700
commit2dc09ea8d91a97dd01c675f2903ce5b4d1fd48d3 (patch)
tree318437d500bf134e3525c0233562b1250018b81e /drivers/staging/lustre/lnet/libcfs/libcfs_lock.c
parentstaging: lustre: libcfs: move all cpt handling to libcfs_cpu.h (diff)
downloadlinux-dev-2dc09ea8d91a97dd01c675f2903ce5b4d1fd48d3.tar.xz
linux-dev-2dc09ea8d91a97dd01c675f2903ce5b4d1fd48d3.zip
staging: lustre: libcfs: add lock-class for cfs_percpt_lock
initialise lock-class for each sublock of cfs_percpt_lock to eliminate false alarm ""possible recursive locking detected" Signed-off-by: Liang Zhen <liang.zhen@intel.com> Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6432 Reviewed-on: http://review.whamcloud.com/14368 Reviewed-by: James Simmons <uja.ornl@yahoo.com> Reviewed-by: Andreas Dilger <andreas.dilger@intel.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/lustre/lnet/libcfs/libcfs_lock.c')
-rw-r--r--drivers/staging/lustre/lnet/libcfs/libcfs_lock.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/staging/lustre/lnet/libcfs/libcfs_lock.c b/drivers/staging/lustre/lnet/libcfs/libcfs_lock.c
index d38954a38f9e..83543f928279 100644
--- a/drivers/staging/lustre/lnet/libcfs/libcfs_lock.c
+++ b/drivers/staging/lustre/lnet/libcfs/libcfs_lock.c
@@ -49,7 +49,8 @@ EXPORT_SYMBOL(cfs_percpt_lock_free);
* reason we always allocate cacheline-aligned memory block.
*/
struct cfs_percpt_lock *
-cfs_percpt_lock_alloc(struct cfs_cpt_table *cptab)
+cfs_percpt_lock_create(struct cfs_cpt_table *cptab,
+ struct lock_class_key *keys)
{
struct cfs_percpt_lock *pcl;
spinlock_t *lock;
@@ -67,12 +68,18 @@ cfs_percpt_lock_alloc(struct cfs_cpt_table *cptab)
return NULL;
}
- cfs_percpt_for_each(lock, i, pcl->pcl_locks)
+ if (!keys)
+ CWARN("Cannot setup class key for percpt lock, you may see recursive locking warnings which are actually fake.\n");
+
+ cfs_percpt_for_each(lock, i, pcl->pcl_locks) {
spin_lock_init(lock);
+ if (keys != NULL)
+ lockdep_set_class(lock, &keys[i]);
+ }
return pcl;
}
-EXPORT_SYMBOL(cfs_percpt_lock_alloc);
+EXPORT_SYMBOL(cfs_percpt_lock_create);
/**
* lock a CPU partition