X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fquota%2Fqsd_lib.c;h=e3e2f7f8f64f1ebbcf1ec68c27ebcf5acc149da6;hb=df66537682aef976102a5b986ec2830f8d00b0c6;hp=dc4fdae1756a1fa429793cf111d38a02e77bf49f;hpb=282417b74919c6827ad293b9cc73fe996bd13c24;p=fs%2Flustre-release.git diff --git a/lustre/quota/qsd_lib.c b/lustre/quota/qsd_lib.c index dc4fdae..e3e2f7f 100644 --- a/lustre/quota/qsd_lib.c +++ b/lustre/quota/qsd_lib.c @@ -362,7 +362,6 @@ static int qsd_qtype_init(const struct lu_env *env, struct qsd_instance *qsd, thread_set_flags(&qqi->qqi_reint_thread, SVC_STOPPED); CFS_INIT_LIST_HEAD(&qqi->qqi_deferred_glb); CFS_INIT_LIST_HEAD(&qqi->qqi_deferred_slv); - memset(&qqi->qqi_lockh, 0, sizeof(qqi->qqi_lockh)); /* open accounting object */ LASSERT(qqi->qqi_acct_obj == NULL); @@ -462,14 +461,6 @@ void qsd_fini(const struct lu_env *env, struct qsd_instance *qsd) qsd->qsd_stopping = true; write_unlock(&qsd->qsd_lock); - /* remove from the list of fsinfo */ - if (!cfs_list_empty(&qsd->qsd_link)) { - LASSERT(qsd->qsd_fsinfo != NULL); - down(&qsd->qsd_fsinfo->qfs_sem); - cfs_list_del_init(&qsd->qsd_link); - up(&qsd->qsd_fsinfo->qfs_sem); - } - /* remove qsd proc entry */ if (qsd->qsd_proc != NULL) { lprocfs_remove(&qsd->qsd_proc); @@ -501,8 +492,14 @@ void qsd_fini(const struct lu_env *env, struct qsd_instance *qsd) lustre_deregister_osp_item(&qsd->qsd_exp); /* release per-filesystem information */ - if (qsd->qsd_fsinfo != NULL) + if (qsd->qsd_fsinfo != NULL) { + down(&qsd->qsd_fsinfo->qfs_sem); + /* remove from the list of fsinfo */ + cfs_list_del_init(&qsd->qsd_link); + up(&qsd->qsd_fsinfo->qfs_sem); qsd_put_fsinfo(qsd->qsd_fsinfo); + qsd->qsd_fsinfo = NULL; + } /* release quota root directory */ if (qsd->qsd_root != NULL) {