diff options
author | Christoph Hellwig <hch@lst.de> | 2009-01-19 02:03:25 +0100 |
---|---|---|
committer | Lachlan McIlroy <lachlan@sgi.com> | 2009-01-19 14:44:59 +1100 |
commit | 5aa2dc0a0697c762874241fa9ddbecd2d878b934 (patch) | |
tree | 48ceaae74318d871b5b1d0a75484b02283712697 /fs/xfs | |
parent | 4f2d4ac6e5eb7d72e8df7f3fbf67a78dab8b91cf (diff) | |
download | linux-5aa2dc0a0697c762874241fa9ddbecd2d878b934.tar.gz linux-5aa2dc0a0697c762874241fa9ddbecd2d878b934.tar.bz2 linux-5aa2dc0a0697c762874241fa9ddbecd2d878b934.zip |
xfs: add a lock class for group/project dquots
We can have both a user and a group/project dquot locked at the same time,
as long as the user dquot is locked first. Tell lockdep about that fact
by making the group/project dquots a different lock class.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/quota/xfs_dquot.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c index 36d1bb6140d1..f0bc7846580b 100644 --- a/fs/xfs/quota/xfs_dquot.c +++ b/fs/xfs/quota/xfs_dquot.c @@ -73,6 +73,8 @@ int xfs_dqreq_num; int xfs_dqerror_mod = 33; #endif +static struct lock_class_key xfs_dquot_other_class; + /* * Allocate and initialize a dquot. We don't always allocate fresh memory; * we try to reclaim a free dquot if the number of incore dquots are above @@ -139,7 +141,15 @@ xfs_qm_dqinit( ASSERT(dqp->q_trace); xfs_dqtrace_entry(dqp, "DQRECLAIMED_INIT"); #endif - } + } + + /* + * In either case we need to make sure group quotas have a different + * lock class than user quotas, to make sure lockdep knows we can + * locks of one of each at the same time. + */ + if (!(type & XFS_DQ_USER)) + lockdep_set_class(&dqp->q_qlock, &xfs_dquot_other_class); /* * log item gets initialized later |