X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fquota%2Fqmt_dev.c;h=25684fdbf75f1c8f06846072fb192b0b22ac24fc;hb=8a71fd5061bd073e055e6cbba1d238305e6827bb;hp=28783a03601b6b9682261fda25dde3fe1e4639d1;hpb=d8fdc4c1603726e0b893571960938ea9dfe28658;p=fs%2Flustre-release.git diff --git a/lustre/quota/qmt_dev.c b/lustre/quota/qmt_dev.c index 28783a0..25684fd 100644 --- a/lustre/quota/qmt_dev.c +++ b/lustre/quota/qmt_dev.c @@ -21,7 +21,7 @@ * GPL HEADER END */ /* - * Copyright (c) 2012, Intel Corporation. + * Copyright (c) 2012, 2017, Intel Corporation. * Use is subject to license terms. * * Author: Johann Lombardi @@ -202,12 +202,17 @@ static int qmt_device_init0(const struct lu_env *env, struct qmt_device *qmt, struct lu_device *ld = qmt2lu_dev(qmt); struct obd_device *obd, *mdt_obd; struct obd_type *type; + char *svname = lustre_cfg_string(cfg, 0); int rc; ENTRY; + if (svname == NULL) + RETURN(-EINVAL); + /* record who i am, it might be useful ... */ - strncpy(qmt->qmt_svname, lustre_cfg_string(cfg, 0), - sizeof(qmt->qmt_svname) - 1); + rc = strlcpy(qmt->qmt_svname, svname, sizeof(qmt->qmt_svname)); + if (rc >= sizeof(qmt->qmt_svname)) + RETURN(-E2BIG); /* look-up the obd_device associated with the qmt */ obd = class_name2obd(qmt->qmt_svname); @@ -237,13 +242,15 @@ static int qmt_device_init0(const struct lu_env *env, struct qmt_device *qmt, /* set up and start rebalance thread */ thread_set_flags(&qmt->qmt_reba_thread, SVC_STOPPED); init_waitqueue_head(&qmt->qmt_reba_thread.t_ctl_waitq); - CFS_INIT_LIST_HEAD(&qmt->qmt_reba_list); + INIT_LIST_HEAD(&qmt->qmt_reba_list); spin_lock_init(&qmt->qmt_reba_lock); - rc = qmt_start_reba_thread(qmt); - if (rc) { - CERROR("%s: failed to start rebalance thread (%d)\n", - qmt->qmt_svname, rc); - GOTO(out, rc); + if (!qmt->qmt_child->dd_rdonly) { + rc = qmt_start_reba_thread(qmt); + if (rc) { + CERROR("%s: failed to start rebalance thread (%d)\n", + qmt->qmt_svname, rc); + GOTO(out, rc); + } } /* at the moment there is no linkage between lu_type and obd_type, so @@ -252,8 +259,8 @@ static int qmt_device_init0(const struct lu_env *env, struct qmt_device *qmt, LASSERT(type != NULL); /* register proc directory associated with this qmt */ - qmt->qmt_proc = lprocfs_seq_register(qmt->qmt_svname, type->typ_procroot, - NULL, NULL); + qmt->qmt_proc = lprocfs_register(qmt->qmt_svname, type->typ_procroot, + NULL, NULL); if (IS_ERR(qmt->qmt_proc)) { rc = PTR_ERR(qmt->qmt_proc); CERROR("%s: failed to create qmt proc entry (%d)\n", @@ -447,7 +454,7 @@ static int qmt_device_prepare(const struct lu_env *env, /* initialize on-disk indexes associated with each pool */ rc = qmt_pool_prepare(env, qmt, qmt_root); - lu_object_put(env, &qmt_root->do_lu); + dt_object_put(env, qmt_root); RETURN(rc); } @@ -467,9 +474,6 @@ int qmt_glb_init(void) ENTRY; rc = class_register_type(&qmt_obd_ops, NULL, true, NULL, -#ifndef HAVE_ONLY_PROCFS_SEQ - NULL, -#endif LUSTRE_QMT_NAME, &qmt_device_type); RETURN(rc); }