loff_t off = med->med_lr_off;
int rc = 0;
+/*
rc = mdt->mdt_last->do_body_ops->dbo_write(ctxt,
mdt->mdt_last,
mcd, sizeof(*mcd),
&off);
-
+*/
if (rc)
return rc;
CDEBUG(D_INFO, "wrote client mcd at idx %u off %llu (len %u)\n",
mdt->mdt_mount_count, mdt->mdt_last_transno);
msd->msd_last_transno = cpu_to_le64(mdt->mdt_last_transno);
+/*
rc = mdt->mdt_last->do_body_ops->dbo_write(ctxt,
mdt->mdt_last,
msd,
sizeof(*msd), &off);
+*/
RETURN(rc);
}
LBUG();
}
- memset(&mcd, 0, sizeof *mcd);
+ memset(mcd, 0, sizeof *mcd);
/*
rc = mdt->mdt_last->do_body_ops->dbo_write(ctxt,
mdt->mdt_last,
msd->msd_feature_incompat = cpu_to_le32(OBD_INCOMPAT_MDT |
OBD_INCOMPAT_COMMON_LR);
} else {
+/*
rc = mdt->mdt_last->do_body_ops->dbo_read(ctxt,
mdt->mdt_last,
msd,
sizeof(*msd), &off);
+*/
if (rc) {
CERROR("error reading MDS %s: rc %d\n", LAST_RCVD, rc);
GOTO(out, rc);
off = le32_to_cpu(msd->msd_client_start) +
cl_idx * le16_to_cpu(msd->msd_client_size);
+/*
rc = mdt->mdt_last->do_body_ops->dbo_read(ctxt,
mdt->mdt_last,
mcd,
sizeof(*mcd), &off);
+*/
if (rc) {
CERROR("error reading MDS %s idx %d, off %llu: rc %d\n",
LAST_RCVD, cl_idx, off, rc);
RETURN(result);
}
+/* FIXME: fake untill journal callback is OK.*/
+int mdt_update_last_transno(struct mdt_thread_info *info)
+{
+ __u64 last_transno;
+ __u64 last_committed;
+ struct mdt_device *mdt = info->mti_mdt;
+ struct ptlrpc_request * req = mdt_info_req(info);
+
+ LASSERT(mdt != NULL);
+ spin_lock(&mdt->mdt_transno_lock);
+ last_transno = ++ (mdt->mdt_last_transno);
+ last_committed = ++ (mdt->mdt_last_committed);
+ spin_unlock(&mdt->mdt_transno_lock);
+
+ CERROR("last_transno = %llu, last_committed = %llu\n",
+ last_transno, last_committed);
+ req->rq_repmsg->transno = req->rq_transno = last_transno;
+ req->rq_repmsg->last_xid = req->rq_xid;
+ req->rq_repmsg->last_committed = last_committed;
+ req->rq_export->exp_obd->obd_last_committed = last_committed;
+/*
+ req->rq_repmsg->last_xid = le64_to_cpu(req_exp_last_xid(req));
+ target_committed_to_req(req);
+*/
+ return 0;
+}
+
/*
* Invoke handler for this request opc. Also do necessary preprocessing
* (according to handler ->mh_flags), and post-processing (setting of
/* If we're DISCONNECTing, the mdt_export_data is already freed */
if (result == 0 && h->mh_opc != MDS_DISCONNECT) {
- /* FIXME: fake untill journal callback & open handling is OK.*/
- __u64 last_transno;
- __u64 last_committed;
- struct mdt_device *mdt = info->mti_mdt;
-
- LASSERT(mdt != NULL);
- spin_lock(&mdt->mdt_transno_lock);
- last_transno = ++ (mdt->mdt_last_transno);
- last_committed = ++ (mdt->mdt_last_committed);
- spin_unlock(&mdt->mdt_transno_lock);
-
- req->rq_repmsg->transno = req->rq_transno = last_transno;
- req->rq_repmsg->last_xid = req->rq_xid;
- req->rq_repmsg->last_committed = last_committed;
- req->rq_export->exp_obd->obd_last_committed = last_committed;
-#if 0
- req->rq_repmsg->last_xid = le64_to_cpu(req_exp_last_xid(req));
- target_committed_to_req(req);
-#endif
+ /* FIXME: fake untill journal callback is OK.*/
+ mdt_update_last_transno(info);
}
req_capsule_fini(&info->mti_pill);
RETURN(result);
ldlm_it2str(it->opc));
rc = mdt_intent_opc(it->opc, info, lockp, flags);
+ mdt_update_last_transno(info);
if (rc == 0)
rc = ELDLM_OK;
} else
spin_lock_init(&m->mdt_transno_lock);
/* FIXME: We need to load them from disk. But now fake it */
- m->mdt_last_transno = 0;
- m->mdt_last_committed = 0;
+ m->mdt_last_transno = 100;
+ m->mdt_last_committed = 99;
m->mdt_max_mdsize = MAX_MD_SIZE;
m->mdt_max_cookiesize = sizeof(struct llog_cookie);
struct mdt_device *mdt;
struct mdt_export_data *med;
struct mdt_client_data *mcd;
+ struct lu_context ctxt;
ENTRY;
+ rc = lu_context_init(&ctxt);
+ if (rc)
+ RETURN(rc);
+ lu_context_enter(&ctxt);
+
if (!conn || !obd || !cluuid)
RETURN(-EINVAL);
if (mcd != NULL) {
memcpy(mcd->mcd_uuid, cluuid, sizeof mcd->mcd_uuid);
med->med_mcd = mcd;
+ rc = mdt_client_add(&ctxt, mdt, med, -1);
} else
rc = -ENOMEM;
}
class_disconnect(exp);
else
class_export_put(exp);
+ lu_context_exit(&ctxt);
+ lu_context_fini(&ctxt);
RETURN(rc);
}
static int mdt_obd_disconnect(struct obd_export *exp)
{
- struct mdt_export_data *med = &exp->exp_mdt_data;
unsigned long irqflags;
int rc;
ENTRY;
}
spin_unlock_irqrestore(&exp->exp_lock, irqflags);
- OBD_FREE_PTR(med->med_mcd);
-
class_export_put(exp);
RETURN(rc);
}
static int mdt_init_export(struct obd_export *exp)
{
struct mdt_export_data *med = &exp->exp_mdt_data;
+ ENTRY;
INIT_LIST_HEAD(&med->med_open_head);
spin_lock_init(&med->med_open_lock);