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");
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;
}
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");
static const char *qtype2acct_name(int qtype)
{
+ static char unknown[24];
+
switch (qtype) {
case USRQUOTA:
return "acct_user";
return "acct_project";
}
- LASSERTF(0, "invalid quota type: %d", qtype);
- return NULL;
+ snprintf(unknown, sizeof(unknown), "acct_unknown_%u", qtype);
+ return unknown;
}
static const char *qtype2glb_name(int qtype)
{
+ static char unknown[24];
+
switch (qtype) {
case USRQUOTA:
return "limit_user";
return "limit_project";
}
- LASSERTF(0, "invalid quota type: %d", qtype);
- return NULL;
+ snprintf(unknown, sizeof(unknown), "acct_unknown_%u", qtype);
+ return unknown;
}
/*
qsd->qsd_svname, qtype_name(qtype),
PTR_ERR(qqi->qqi_acct_obj));
qqi->qqi_acct_obj = NULL;
- qsd->qsd_acct_failed = true;
+ qqi->qqi_acct_failed = true;
}
/* open global index copy */
for (qtype = USRQUOTA; qtype < LL_MAXQUOTAS; qtype++) {
struct qsd_qtype_info *qqi = qsd->qsd_type_array[qtype];
- if (qsd_type_enabled(qsd, qtype) && qsd->qsd_acct_failed) {
+ if (qsd_type_enabled(qsd, qtype) &&
+ qqi->qqi_acct_failed) {
LCONSOLE_ERROR("%s: can't enable quota enforcement "
"since space accounting isn't functional"
". Please run tunefs.lustre --quota on "