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);
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);
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) {