summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
5376482)
It's quota config vs umount race
Remove qsd from the list of fsinfo before
freeing per-quota type data.
Change-Id: Ib7c3a94b3222ffd229da1a384113b3befc19665b
Cray-bug-id: LUS-5896
Signed-off-by: Andriy Skulysh <c17819@cray.com>
Reviewed-on: https://review.whamcloud.com/32715
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alexandr Boyko <c17825@cray.com>
Reviewed-by: Alexander Zarochentsev <c17826@cray.com>
Reviewed-by: Vitaly Fertman <c17818@cray.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
- /* free per-quota type data */
- for (qtype = USRQUOTA; qtype < LL_MAXQUOTAS; qtype++)
- qsd_qtype_fini(env, qsd, qtype);
-
- /* deregister connection to the quota master */
- qsd->qsd_exp_valid = false;
- lustre_deregister_lwp_item(&qsd->qsd_exp);
-
/* release per-filesystem information */
if (qsd->qsd_fsinfo != NULL) {
mutex_lock(&qsd->qsd_fsinfo->qfs_mutex);
/* release per-filesystem information */
if (qsd->qsd_fsinfo != NULL) {
mutex_lock(&qsd->qsd_fsinfo->qfs_mutex);
qsd->qsd_fsinfo = NULL;
}
qsd->qsd_fsinfo = NULL;
}
+ /* free per-quota type data */
+ for (qtype = USRQUOTA; qtype < LL_MAXQUOTAS; qtype++)
+ qsd_qtype_fini(env, qsd, qtype);
+
+ /* deregister connection to the quota master */
+ qsd->qsd_exp_valid = false;
+ lustre_deregister_lwp_item(&qsd->qsd_exp);
+
/* release quota root directory */
if (qsd->qsd_root != NULL) {
dt_object_put(env, qsd->qsd_root);
/* release quota root directory */
if (qsd->qsd_root != NULL) {
dt_object_put(env, qsd->qsd_root);