X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fquota%2Fqsd_lib.c;h=cbdd74e5f77e5b00084cb3d1ef7552b87c08a645;hb=f07508d17b49574c7ea47a855c6e8af2b23c3add;hp=6aaed49a65f721b2abf0a35718f9c6d6108ea932;hpb=4414fd5365612a5fc1243e0e83f91d01949ba7d2;p=fs%2Flustre-release.git diff --git a/lustre/quota/qsd_lib.c b/lustre/quota/qsd_lib.c index 6aaed49..cbdd74e 100644 --- a/lustre/quota/qsd_lib.c +++ b/lustre/quota/qsd_lib.c @@ -90,12 +90,14 @@ static int qsd_state_seq_show(struct seq_file *m, void *data) if (strlen(enabled) == 0) strcat(enabled, "none"); + /* TODO: further pool ID should be removed or + * replaced with pool Name */ seq_printf(m, "target name: %s\n" "pool ID: %d\n" "type: %s\n" "quota enabled: %s\n" "conn to master: %s\n", - qsd->qsd_svname, qsd->qsd_pool_id, + qsd->qsd_svname, 0, qsd->qsd_is_md ? "md" : "dt", enabled, qsd->qsd_exp_valid ? "setup" : "not setup yet"); @@ -137,13 +139,13 @@ static int qsd_enabled_seq_show(struct seq_file *m, void *data) memset(enabled, 0, sizeof(enabled)); if (qsd_type_enabled(qsd, USRQUOTA)) - strcat(enabled, "u"); + strncat(enabled, "u", sizeof(enabled) - strlen(enabled)); if (qsd_type_enabled(qsd, GRPQUOTA)) - strcat(enabled, "g"); + strncat(enabled, "g", sizeof(enabled) - strlen(enabled)); if (qsd_type_enabled(qsd, PRJQUOTA)) - strncat(enabled, "p", 1); + strncat(enabled, "p", sizeof(enabled) - strlen(enabled)); if (strlen(enabled) == 0) - strcat(enabled, "none"); + strncat(enabled, "none", sizeof(enabled) - strlen(enabled)); seq_printf(m, "%s\n", enabled); return 0; @@ -166,6 +168,7 @@ static ssize_t qsd_enabled_seq_write(struct file *file, if (copy_from_user(valstr, buffer, count)) GOTO(out, count = -EFAULT); + valstr[sizeof(valstr) - 1] = 0; if (strchr(valstr, 'u')) enabled |= BIT(USRQUOTA); if (strchr(valstr, 'g')) @@ -198,7 +201,8 @@ static ssize_t lprocfs_force_reint_seq_write(struct file *file, const char __user *buffer, size_t count, loff_t *off) { - struct qsd_instance *qsd = ((struct seq_file *)file->private_data)->private; + struct seq_file *m = file->private_data; + struct qsd_instance *qsd = m->private; int rc = 0, qtype; LASSERT(qsd != NULL); @@ -245,7 +249,8 @@ static ssize_t qsd_timeout_seq_write(struct file *file, const char __user *buffer, size_t count, loff_t *off) { - struct qsd_instance *qsd = ((struct seq_file *)file->private_data)->private; + struct seq_file *m = file->private_data; + struct qsd_instance *qsd = m->private; time64_t timeout; int rc; @@ -472,8 +477,7 @@ static int qsd_qtype_init(const struct lu_env *env, struct qsd_instance *qsd, thread_set_flags(&qqi->qqi_reint_thread, SVC_STOPPED); INIT_LIST_HEAD(&qqi->qqi_deferred_glb); INIT_LIST_HEAD(&qqi->qqi_deferred_slv); - lquota_generate_fid(&qqi->qqi_fid, qsd->qsd_pool_id, - QSD_RES_TYPE(qsd), qtype); + lquota_generate_fid(&qqi->qqi_fid, QSD_RES_TYPE(qsd), qtype); /* open accounting object */ LASSERT(qqi->qqi_acct_obj == NULL); @@ -589,14 +593,6 @@ void qsd_fini(const struct lu_env *env, struct qsd_instance *qsd) qsd->qsd_ns = NULL; } - /* free per-quota type data */ - for (qtype = USRQUOTA; qtype < LL_MAXQUOTAS; qtype++) - qsd_qtype_fini(env, qsd, qtype); - - /* deregister connection to the quota master */ - qsd->qsd_exp_valid = false; - lustre_deregister_lwp_item(&qsd->qsd_exp); - /* release per-filesystem information */ if (qsd->qsd_fsinfo != NULL) { mutex_lock(&qsd->qsd_fsinfo->qfs_mutex); @@ -607,6 +603,14 @@ void qsd_fini(const struct lu_env *env, struct qsd_instance *qsd) qsd->qsd_fsinfo = NULL; } + /* free per-quota type data */ + for (qtype = USRQUOTA; qtype < LL_MAXQUOTAS; qtype++) + qsd_qtype_fini(env, qsd, qtype); + + /* deregister connection to the quota master */ + qsd->qsd_exp_valid = false; + lustre_deregister_lwp_item(&qsd->qsd_exp); + /* release quota root directory */ if (qsd->qsd_root != NULL) { dt_object_put(env, qsd->qsd_root); @@ -680,11 +684,6 @@ struct qsd_instance *qsd_init(const struct lu_env *env, char *svname, lu_ref_add(&dev->dd_lu_dev.ld_reference, "qsd", qsd); qsd->qsd_dev = dev; - /* we only support pool ID 0 (default data or metadata pool) for the - * time being. A different pool ID could be assigned to this target via - * the configuration log in the future */ - qsd->qsd_pool_id = 0; - /* get fsname from svname */ rc = server_name2fsname(svname, qti->qti_buf, NULL); if (rc) {