}
GOTO(out, rc);
}
+ if (KEY_IS(KEY_MDS_CONN)) {
+ for (i = 0; i < lov->desc.ld_tgt_count; i++) {
+ if (!lov->lov_tgts[i] || !lov->lov_tgts[i]->ltd_exp)
+ continue;
+
+ if (!val && !lov->lov_tgts[i]->ltd_active)
+ continue;
- if (KEY_IS(KEY_MDS_CONN) || KEY_IS("unlinked")) {
+ err = obd_set_info_async(lov->lov_tgts[i]->ltd_exp,
+ keylen, key, vallen, val, set);
+ if (!rc)
+ rc = err;
+ }
+ GOTO(out, rc);
+ }
+
+ if (KEY_IS("unlinked")) {
if (vallen != 0 && KEY_IS("unlinked"))
GOTO(out, rc = -EINVAL);
} else {
spin_lock(&oscc->oscc_lock);
body->oa.o_id = oscc->oscc_last_id + oscc->oscc_grow_count;
- body->oa.o_valid |= OBD_MD_FLID;
+ body->oa.o_gr = oscc->oscc_oa.o_gr;
+ LASSERT(body->oa.o_gr > 0);
+ body->oa.o_valid |= OBD_MD_FLID | OBD_MD_FLGROUP;
spin_unlock(&oscc->oscc_lock);
CDEBUG(D_HA, "preallocating through id "LPU64" (last used "LPU64")\n",
body->oa.o_id, oscc->oscc_next_id);
LASSERT(oa->o_gr > 0);
LASSERT(oa->o_valid & OBD_MD_FLGROUP);
- /*
- * FIXME: Now we can only create the object without cache,
- * since we have only 1 oscc, only support one cache, will
- * fix it soon Wangdi
- */
- if ((oa->o_valid & OBD_MD_FLGROUP) && (oa->o_gr != 0))
- RETURN(osc_real_create(exp, oa, ea, oti));
+
if ((oa->o_valid & OBD_MD_FLFLAGS) &&
oa->o_flags == OBD_FL_RECREATE_OBJS) {
RETURN(osc_real_create(exp, oa, ea, oti));
if (req == NULL)
RETURN(-ENOMEM);
- if (KEY_IS("mds_conn"))
+ if (KEY_IS("mds_conn")) {
+ struct osc_creator *oscc = &obd->u.cli.cl_oscc;
+
+ oscc->oscc_oa.o_gr = (*(__u32 *)val);
+ LASSERT(oscc->oscc_oa.o_gr > 0);
req->rq_interpret_reply = osc_setinfo_mds_conn_interpret;
+ }
ptlrpc_req_set_repsize(req, 1, NULL);
ptlrpc_set_add_req(set, req);