if (!lu_device_is_md(&d->dd_lu_dev) && rc == -ENOSPC)
CERROR("%s: failed to start transaction due to ENOSPC. "
"Metadata overhead is underestimated or "
- "grant_ratio is too low.\n",
- osd->od_dt_dev.dd_lu_dev.ld_obd->obd_name);
+ "grant_ratio is too low.\n", osd->od_svname);
else
CERROR("%s: can't assign tx: rc = %d\n",
- osd->od_dt_dev.dd_lu_dev.ld_obd->obd_name, rc);
+ osd->od_svname, rc);
} else {
/* add commit callback */
dmu_tx_callback_register(oh->ot_tx, osd_trans_commit_cb, oh);
o->arc_prune_cb = arc_add_prune_callback(arc_prune_func, o);
+ /* initialize quota slave instance */
+ o->od_quota_slave = qsd_init(env, o->od_svname, &o->od_dt_dev,
+ o->od_proc_entry);
+ if (IS_ERR(o->od_quota_slave)) {
+ rc = PTR_ERR(o->od_quota_slave);
+ o->od_quota_slave = NULL;
+ GOTO(err, rc);
+ }
err:
RETURN(rc);
}
ENTRY;
+ osd_shutdown(env, o);
osd_oi_fini(env, o);
if (o->od_objset.os) {
static int osd_recovery_complete(const struct lu_env *env, struct lu_device *d)
{
+ struct osd_device *osd = osd_dev(d);
+ int rc = 0;
ENTRY;
- RETURN(0);
+
+ if (osd->od_quota_slave == NULL)
+ RETURN(0);
+
+ /* start qsd instance on recovery completion, this notifies the quota
+ * slave code that we are about to process new requests now */
+ rc = qsd_start(env, osd->od_quota_slave);
+ RETURN(rc);
}
/*
RETURN(rc);
}
- /* initialize quota slave instance */
- osd->od_quota_slave = qsd_init(env, osd->od_svname, &osd->od_dt_dev,
- osd->od_proc_entry);
- if (IS_ERR(osd->od_quota_slave)) {
- rc = PTR_ERR(osd->od_quota_slave);
- osd->od_quota_slave = NULL;
- }
+ if (osd->od_quota_slave != NULL)
+ /* set up quota slave objects */
+ rc = qsd_prepare(env, osd->od_quota_slave);
RETURN(rc);
}