Whamcloud - gitweb
LU-12930 various: use schedule_timeout_*interruptible
[fs/lustre-release.git] / lustre / quota / qsd_config.c
index 3eb49c9..ed3415e 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "qsd_internal.h"
 
-static struct list_head qfs_list = LIST_HEAD_INIT(qfs_list);
+static LIST_HEAD(qfs_list);
 /* protect the qfs_list */
 static DEFINE_SPINLOCK(qfs_list_lock);
 
@@ -122,7 +122,7 @@ out:
 int qsd_config(char *valstr, char *fsname, int pool)
 {
        struct qsd_fsinfo *qfs;
-       int rc, enabled = 0;
+       int rc, enabled = 0, old_enabled = 0;
        bool reint = false;
 
        ENTRY;
@@ -148,6 +148,7 @@ int qsd_config(char *valstr, char *fsname, int pool)
        if ((qfs->qfs_enabled[pool - LQUOTA_FIRST_RES] & enabled) != enabled)
                reint = true;
 
+       old_enabled = qfs->qfs_enabled[pool - LQUOTA_FIRST_RES];
        qfs->qfs_enabled[pool - LQUOTA_FIRST_RES] = enabled;
 
        /* trigger reintegration for all qsd */
@@ -170,6 +171,12 @@ int qsd_config(char *valstr, char *fsname, int pool)
 
                        for (type = USRQUOTA; type < LL_MAXQUOTAS; type++) {
                                qqi = qsd->qsd_type_array[type];
+                               /* only trigger reintegration if this
+                                * type of quota is not enabled before */
+                               if ((old_enabled & 1 << type) ||
+                                   !(enabled & 1 << type))
+                                       continue;
+
                                if (qqi->qqi_acct_failed) {
                                        LCONSOLE_ERROR("%s: can't enable quota "
                                                       "enforcement since space "