diff options
| -rw-r--r-- | fs/xfs/quota/xfs_qm.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index 6b13960cf318..7a2beb64314f 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c | |||
| @@ -1070,6 +1070,13 @@ xfs_qm_sync( | |||
| 1070 | return 0; | 1070 | return 0; |
| 1071 | } | 1071 | } |
| 1072 | 1072 | ||
| 1073 | /* | ||
| 1074 | * The hash chains and the mplist use the same xfs_dqhash structure as | ||
| 1075 | * their list head, but we can take the mplist qh_lock and one of the | ||
| 1076 | * hash qh_locks at the same time without any problem as they aren't | ||
| 1077 | * related. | ||
| 1078 | */ | ||
| 1079 | static struct lock_class_key xfs_quota_mplist_class; | ||
| 1073 | 1080 | ||
| 1074 | /* | 1081 | /* |
| 1075 | * This initializes all the quota information that's kept in the | 1082 | * This initializes all the quota information that's kept in the |
| @@ -1105,6 +1112,8 @@ xfs_qm_init_quotainfo( | |||
| 1105 | } | 1112 | } |
| 1106 | 1113 | ||
| 1107 | xfs_qm_list_init(&qinf->qi_dqlist, "mpdqlist", 0); | 1114 | xfs_qm_list_init(&qinf->qi_dqlist, "mpdqlist", 0); |
| 1115 | lockdep_set_class(&qinf->qi_dqlist.qh_lock, &xfs_quota_mplist_class); | ||
| 1116 | |||
| 1108 | qinf->qi_dqreclaims = 0; | 1117 | qinf->qi_dqreclaims = 0; |
| 1109 | 1118 | ||
| 1110 | /* mutex used to serialize quotaoffs */ | 1119 | /* mutex used to serialize quotaoffs */ |
