* last_rcvd update callbacks
*/
extern struct lu_context_key mdt_txn_key;
+extern struct lu_context_key mdt_thread_key;
#define MDT_TXN_LAST_RCVD_CREDITS 1
/* add credits for last_rcvd update */
struct thandle *txn, void *cookie)
{
struct mdt_device *mdt = cookie;
- struct mdt_txn_info *txni, *thdi;
+ struct mdt_txn_info *txni;
+ struct mdt_thread_info *mti;
/* transno in two contexts - for commit_cb and for thread */
txni = lu_context_key_get(&txn->th_ctx, &mdt_txn_key);
- thdi = lu_context_key_get(ctx, &mdt_txn_key);
+ mti = lu_context_key_get(ctx, &mdt_thread_key);
/*TODO: checks for recovery cases, see mds_finish_transno */
spin_lock(&mdt->mdt_transno_lock);
- if (thdi->txi_transno == 0) {
- thdi->txi_transno = ++ mdt->mdt_last_transno;
+ if (mti->mti_transno == 0) {
+ mti->mti_transno = ++ mdt->mdt_last_transno;
} else {
/* replay */
- if (thdi->txi_transno > mdt->mdt_last_transno)
- mdt->mdt_last_transno = thdi->txi_transno;
+ if (mti->mti_transno > mdt->mdt_last_transno)
+ mdt->mdt_last_transno = mti->mti_transno;
}
spin_unlock(&mdt->mdt_transno_lock);
-
- txni->txi_transno = thdi->txi_transno;
+ /* save transno for the commit callback */
+ txni->txi_transno = mti->mti_transno;
/*
TODO: write last_rcvd
*/
static struct mdt_device *mdt_dev (struct lu_device *d);
static int mdt_unpack_req_pack_rep(struct mdt_thread_info *info, __u32 flags);
-static struct lu_context_key mdt_thread_key;
+struct lu_context_key mdt_thread_key;
static struct lu_object_operations mdt_obj_ops;
{
struct mdt_device *mdt = info->mti_mdt;
struct ptlrpc_request * req = mdt_info_req(info);
- struct mdt_txn_info *txi;
__u64 last_transno;
__u64 last_committed;
/*last_committed = (mdt->mdt_last_committed);*/
last_committed = last_transno;
#endif
- txi = lu_context_key_get(info->mti_ctxt, &mdt_txn_key);
- last_transno = txi->txi_transno;
- CDEBUG(D_INFO, "last_transno = %llu, last_committed = %llu\n",
+ last_transno = info->mti_transno;
+ CDEBUG(D_INFO, "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;
OBD_FREE_PTR(info);
}
-static struct lu_context_key mdt_thread_key = {
+struct lu_context_key mdt_thread_key = {
.lct_tags = LCT_MD_THREAD,
.lct_init = mdt_thread_init,
.lct_fini = mdt_thread_fini
}
struct lu_context_key mdt_txn_key = {
- .lct_tags = LCT_TX_HANDLE|LCT_MD_THREAD,
+ .lct_tags = LCT_TX_HANDLE,
.lct_init = mdt_txn_init,
.lct_fini = mdt_txn_fini
};