[PATCH 08/17] gfs2: Add qd_hash_lock

From: Matthew Wilcox (Oracle)
Date: Thu Apr 08 2021 - 22:57:29 EST


Allow lockdep to track the hash bit spin locks.

Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx>
---
fs/gfs2/quota.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
index 9b1aca7e1264..a933eb441ee9 100644
--- a/fs/gfs2/quota.c
+++ b/fs/gfs2/quota.c
@@ -80,6 +80,7 @@
static DEFINE_SPINLOCK(qd_lock);
struct list_lru gfs2_qd_lru;

+static DEFINE_SPLIT_LOCK(qd_hash_lock);
static struct hlist_bl_head qd_hash_table[GFS2_QD_HASH_SIZE];

static unsigned int gfs2_qd_hash(const struct gfs2_sbd *sdp,
@@ -95,12 +96,12 @@ static unsigned int gfs2_qd_hash(const struct gfs2_sbd *sdp,

static inline void spin_lock_bucket(unsigned int hash)
{
- hlist_bl_lock(&qd_hash_table[hash]);
+ hlist_bl_lock(&qd_hash_table[hash], &qd_hash_lock);
}

static inline void spin_unlock_bucket(unsigned int hash)
{
- hlist_bl_unlock(&qd_hash_table[hash]);
+ hlist_bl_unlock(&qd_hash_table[hash], &qd_hash_lock);
}

static void gfs2_qd_dealloc(struct rcu_head *rcu)
--
2.30.2