|
@@ -64,7 +64,8 @@ int xfs_dqerror_mod = 33;
|
|
|
struct kmem_zone *xfs_qm_dqtrxzone;
|
|
|
static struct kmem_zone *xfs_qm_dqzone;
|
|
|
|
|
|
-static struct lock_class_key xfs_dquot_other_class;
|
|
|
+static struct lock_class_key xfs_dquot_group_class;
|
|
|
+static struct lock_class_key xfs_dquot_project_class;
|
|
|
|
|
|
/*
|
|
|
* This is called to free all the memory associated with a dquot
|
|
@@ -703,8 +704,20 @@ xfs_qm_dqread(
|
|
|
* Make sure group quotas have a different lock class than user
|
|
|
* quotas.
|
|
|
*/
|
|
|
- if (!(type & XFS_DQ_USER))
|
|
|
- lockdep_set_class(&dqp->q_qlock, &xfs_dquot_other_class);
|
|
|
+ switch (type) {
|
|
|
+ case XFS_DQ_USER:
|
|
|
+ /* uses the default lock class */
|
|
|
+ break;
|
|
|
+ case XFS_DQ_GROUP:
|
|
|
+ lockdep_set_class(&dqp->q_qlock, &xfs_dquot_group_class);
|
|
|
+ break;
|
|
|
+ case XFS_DQ_PROJ:
|
|
|
+ lockdep_set_class(&dqp->q_qlock, &xfs_dquot_project_class);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ ASSERT(0);
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
XFS_STATS_INC(xs_qm_dquot);
|
|
|
|