Whamcloud - gitweb
LU-4017 quota: enable project quota limits 54/23954/14
authorLi Xi <lixi@ddn.com>
Wed, 2 Apr 2014 08:26:32 +0000 (16:26 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 13 Apr 2017 18:50:44 +0000 (18:50 +0000)
With this patch, lctl conf_param can be used to enable
or disable project quota limits

Signed-off-by: Li Xi <lixi@ddn.com>
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Change-Id: I051c1395f909891f7e0ff60fa2f98195914cfa4b
Reviewed-on: https://review.whamcloud.com/23954
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Niu Yawei <yawei.niu@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/mgs/mgs_llog.c
lustre/osd-ldiskfs/osd_quota_fmt.c
lustre/quota/qsd_config.c
lustre/quota/qsd_lib.c

index ad40f2e..81eb22f 100644 (file)
@@ -3128,6 +3128,7 @@ static int mgs_write_log_quota(const struct lu_env *env, struct mgs_device *mgs,
                CDEBUG(D_MGS, "global '%s'\n", quota);
 
                if (strchr(tmp, 'u') == NULL && strchr(tmp, 'g') == NULL &&
+                   strchr(tmp, 'p') == NULL &&
                    strcmp(tmp, "none") != 0) {
                        CERROR("enable option(%s) isn't supported\n", tmp);
                        return -EINVAL;
index 7f2a06e..1fb6529 100644 (file)
@@ -64,7 +64,8 @@ static ssize_t quota_read_blk(const struct lu_env *env,
        ENTRY;
 
        memset(buf, 0, LUSTRE_DQBLKSIZE);
-       LASSERTF((type == USRQUOTA || type == GRPQUOTA), "type=%d\n", type);
+       LASSERTF((type == USRQUOTA || type == GRPQUOTA || type == PRJQUOTA),
+                "type=%d\n", type);
 
        ret = sb->s_op->quota_read(sb, type, buf, LUSTRE_DQBLKSIZE,
                                   blk << LUSTRE_DQBLKSIZE_BITS);
index 4fc3a4d..08cbeb6 100644 (file)
@@ -159,6 +159,8 @@ int qsd_process_config(struct lustre_cfg *lcfg)
                enabled |= 1 << USRQUOTA;
        if (strchr(valstr, 'g'))
                enabled |= 1 << GRPQUOTA;
+       if (strchr(valstr, 'p'))
+               enabled |= 1 << PRJQUOTA;
 
        mutex_lock(&qfs->qfs_mutex);
        if (qfs->qfs_enabled[pool - LQUOTA_FIRST_RES] == enabled)
index 7ab8648..cc2bd32 100644 (file)
@@ -85,6 +85,8 @@ static int qsd_state_seq_show(struct seq_file *m, void *data)
                strcat(enabled, "u");
        if (qsd_type_enabled(qsd, GRPQUOTA))
                strcat(enabled, "g");
+       if (qsd_type_enabled(qsd, PRJQUOTA))
+               strncat(enabled, "p", 1);
        if (strlen(enabled) == 0)
                strcat(enabled, "none");
 
@@ -103,18 +105,24 @@ static int qsd_state_seq_show(struct seq_file *m, void *data)
                        strcat(enabled, "u");
                if (qsd->qsd_type_array[GRPQUOTA]->qqi_acct_obj != NULL)
                        strcat(enabled, "g");
+               if (qsd->qsd_type_array[PRJQUOTA]->qqi_acct_obj != NULL)
+                       strncat(enabled, "p", 1);
                if (strlen(enabled) == 0)
                        strcat(enabled, "none");
                seq_printf(m, "space acct:     %s\n"
                           "user uptodate:  glb[%d],slv[%d],reint[%d]\n"
-                          "group uptodate: glb[%d],slv[%d],reint[%d]\n",
+                          "group uptodate: glb[%d],slv[%d],reint[%d]\n"
+                          "project uptodate: glb[%d],slv[%d],reint[%d]\n",
                           enabled,
                           qsd->qsd_type_array[USRQUOTA]->qqi_glb_uptodate,
                           qsd->qsd_type_array[USRQUOTA]->qqi_slv_uptodate,
                           qsd->qsd_type_array[USRQUOTA]->qqi_reint,
                           qsd->qsd_type_array[GRPQUOTA]->qqi_glb_uptodate,
                           qsd->qsd_type_array[GRPQUOTA]->qqi_slv_uptodate,
-                          qsd->qsd_type_array[GRPQUOTA]->qqi_reint);
+                          qsd->qsd_type_array[GRPQUOTA]->qqi_reint,
+                          qsd->qsd_type_array[PRJQUOTA]->qqi_glb_uptodate,
+                          qsd->qsd_type_array[PRJQUOTA]->qqi_slv_uptodate,
+                          qsd->qsd_type_array[PRJQUOTA]->qqi_reint);
        }
        return 0;
 }
@@ -132,6 +140,8 @@ static int qsd_enabled_seq_show(struct seq_file *m, void *data)
                strcat(enabled, "u");
        if (qsd_type_enabled(qsd, GRPQUOTA))
                strcat(enabled, "g");
+       if (qsd_type_enabled(qsd, PRJQUOTA))
+               strncat(enabled, "p", 1);
        if (strlen(enabled) == 0)
                strcat(enabled, "none");