diff --git a/lustre/quota/quota_interface.c b/lustre/quota/quota_interface.c
index af3c6f5b477c36d74d644c484e950078ab6ccd22..4680496e444e80779ddeae672d720961b70e21af 100644
--- a/lustre/quota/quota_interface.c
+++ b/lustre/quota/quota_interface.c
@@ -603,17 +603,14 @@ static int mds_quota_cleanup(struct obd_device *obd)
 static int mds_quota_fs_cleanup(struct obd_device *obd)
 {
         struct mds_obd *mds = &obd->u.mds;
-        int i;
+        struct obd_quotactl oqctl;
         ENTRY;
 
-        /* close admin quota files */
+        memset(&oqctl, 0, sizeof(oqctl));
+        oqctl.qc_type = UGQUOTA;
+
         down(&mds->mds_qonoff_sem);
-        for (i = 0; i < MAXQUOTAS; i++) {
-                if (mds->mds_quota_info.qi_files[i]) {
-                        filp_close(mds->mds_quota_info.qi_files[i], 0);
-                        mds->mds_quota_info.qi_files[i] = NULL;
-                }
-        }
+        mds_admin_quota_off(obd, &oqctl);
         up(&mds->mds_qonoff_sem);
         RETURN(0);
 }
diff --git a/lustre/quota/quota_internal.h b/lustre/quota/quota_internal.h
index d269c0b1265d50e61e33f14151c2ac610d86e06c..3b321029970af5c91a59b5c418261ff11c40c788 100644
--- a/lustre/quota/quota_internal.h
+++ b/lustre/quota/quota_internal.h
@@ -102,6 +102,7 @@ int mds_quota_invalidate(struct obd_device *obd, struct obd_quotactl *oqctl);
 int mds_admin_quota_on(struct obd_device *obd, struct obd_quotactl *oqctl);
 int mds_quota_on(struct obd_device *obd, struct obd_quotactl *oqctl);
 int mds_quota_off(struct obd_device *obd, struct obd_quotactl *oqctl);
+int mds_admin_quota_off(struct obd_device *obd, struct obd_quotactl *oqctl);
 int mds_set_dqinfo(struct obd_device *obd, struct obd_quotactl *oqctl);
 int mds_get_dqinfo(struct obd_device *obd, struct obd_quotactl *oqctl);
 int mds_set_dqblk(struct obd_device *obd, struct obd_quotactl *oqctl);
diff --git a/lustre/quota/quota_master.c b/lustre/quota/quota_master.c
index 31dc70fdc39ef99cc638a9f64178540532e32203..2ae2718af8e2b28a5a43772800c86d3f959b885c 100644
--- a/lustre/quota/quota_master.c
+++ b/lustre/quota/quota_master.c
@@ -810,8 +810,8 @@ int mds_admin_quota_on(struct obd_device *obd, struct obd_quotactl *oqctl)
         RETURN(rc);
 }
 
-static int mds_admin_quota_off(struct obd_device *obd,
-                               struct obd_quotactl *oqctl)
+int mds_admin_quota_off(struct obd_device *obd,
+                        struct obd_quotactl *oqctl)
 {
         struct mds_obd *mds = &obd->u.mds;
         struct lustre_quota_info *qinfo = &mds->mds_quota_info;