X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lustre%2Fquota%2Fqmt_dev.c;h=f785ac969696401c9e67dda5ed6eb11a1d52f4d4;hb=1f828c4699462936f75f18d8d8e8f33720e448fd;hp=19605fad2f34928edebf6ce260571c885ed0e083;hpb=c228613e18d4496d026d56040e394fe90273de2f;p=fs%2Flustre-release.git diff --git a/lustre/quota/qmt_dev.c b/lustre/quota/qmt_dev.c index 19605fa..f785ac9 100644 --- a/lustre/quota/qmt_dev.c +++ b/lustre/quota/qmt_dev.c @@ -110,6 +110,11 @@ static struct lu_device *qmt_device_fini(const struct lu_env *env, if (!qmt->qmt_child->dd_rdonly) qmt_stop_reba_thread(qmt); + if (qmt->qmt_root) { + dt_object_put(env, qmt->qmt_root); + qmt->qmt_root = NULL; + } + /* disconnect from OSD */ if (qmt->qmt_child_exp != NULL) { obd_disconnect(qmt->qmt_child_exp); @@ -241,8 +246,6 @@ static int qmt_device_init0(const struct lu_env *env, struct qmt_device *qmt, GOTO(out, rc); /* set up and start rebalance thread */ - thread_set_flags(&qmt->qmt_reba_thread, SVC_STARTING); - init_waitqueue_head(&qmt->qmt_reba_thread.t_ctl_waitq); INIT_LIST_HEAD(&qmt->qmt_reba_list); spin_lock_init(&qmt->qmt_reba_lock); if (!qmt->qmt_child->dd_rdonly) { @@ -276,6 +279,7 @@ static int qmt_device_init0(const struct lu_env *env, struct qmt_device *qmt, rc = qmt_pool_init(env, qmt); if (rc) GOTO(out, rc); + EXIT; out: if (rc) @@ -419,10 +423,14 @@ static int qmt_device_obd_disconnect(struct obd_export *exp) /* * obd device operations associated with the master target. */ -struct obd_ops qmt_obd_ops = { +static const struct obd_ops qmt_obd_ops = { .o_owner = THIS_MODULE, .o_connect = qmt_device_obd_connect, .o_disconnect = qmt_device_obd_disconnect, + .o_pool_new = qmt_pool_new, + .o_pool_rem = qmt_pool_rem, + .o_pool_add = qmt_pool_add, + .o_pool_del = qmt_pool_del, }; /* @@ -455,10 +463,9 @@ static int qmt_device_prepare(const struct lu_env *env, RETURN(rc); } + qmt->qmt_root = qmt_root; /* initialize on-disk indexes associated with each pool */ - rc = qmt_pool_prepare(env, qmt, qmt_root); - - dt_object_put(env, qmt_root); + rc = qmt_pool_prepare(env, qmt, qmt_root, NULL); RETURN(rc); }