static inline void msd_le_to_cpu(struct mdt_server_data *buf,
struct mdt_server_data *msd)
{
+ memcpy(msd->msd_uuid, buf->msd_uuid, sizeof (msd->msd_uuid));
msd->msd_last_transno = le64_to_cpu(buf->msd_last_transno);
msd->msd_mount_count = le64_to_cpu(buf->msd_mount_count);
msd->msd_feature_compat = le32_to_cpu(buf->msd_feature_compat);
static inline void msd_cpu_to_le(struct mdt_server_data *msd,
struct mdt_server_data *buf)
{
+ memcpy(buf->msd_uuid, msd->msd_uuid, sizeof (msd->msd_uuid));
buf->msd_last_transno = cpu_to_le64(msd->msd_last_transno);
buf->msd_mount_count = cpu_to_le64(msd->msd_mount_count);
buf->msd_feature_compat = cpu_to_le32(msd->msd_feature_compat);
static inline void mcd_le_to_cpu(struct mdt_client_data *buf,
struct mdt_client_data *mcd)
{
+ memcpy(mcd->mcd_uuid, buf->mcd_uuid, sizeof (mcd->mcd_uuid));
mcd->mcd_last_transno = le64_to_cpu(buf->mcd_last_transno);
mcd->mcd_last_xid = le64_to_cpu(buf->mcd_last_xid);
mcd->mcd_last_result = le32_to_cpu(buf->mcd_last_result);
static inline void mcd_cpu_to_le(struct mdt_client_data *mcd,
struct mdt_client_data *buf)
{
+ memcpy(buf->mcd_uuid, mcd->mcd_uuid, sizeof (mcd->mcd_uuid));
buf->mcd_last_transno = cpu_to_le64(mcd->mcd_last_transno);
buf->mcd_last_xid = cpu_to_le64(mcd->mcd_last_xid);
buf->mcd_last_result = cpu_to_le32(mcd->mcd_last_result);
/* temporary stuff for read */
tmp = &mti->mti_msd;
off = &mti->mti_off;
+ *off = 0;
rc = mdt_record_read(ctx, mdt->mdt_last_rcvd,
tmp, sizeof(*tmp), off);
- if (rc == 0) {
- memcpy(msd->msd_uuid, tmp->msd_uuid, sizeof (msd->msd_uuid));
+ if (rc == 0)
msd_le_to_cpu(tmp, msd);
- }
- return 0;
+
+ CDEBUG(D_INFO, "read last_rcvd header rc = %d:\n"
+ "uuid = %s\n"
+ "last_transno = "LPU64"\n",
+ rc,
+ msd->msd_uuid,
+ msd->msd_last_transno);
+ return rc;
}
static int mdt_last_rcvd_header_write(const struct lu_context *ctx,
/* temporary stuff for read */
tmp = &mti->mti_msd;
off = &mti->mti_off;
-
- memcpy(tmp->msd_uuid, msd->msd_uuid, sizeof (msd->msd_uuid));
+ *off = 0;
+
msd_cpu_to_le(msd, tmp);
rc = mdt_record_write(ctx, mdt->mdt_last_rcvd,
tmp, sizeof(*tmp), off, th);
- CDEBUG(D_INFO, "write last_rcvd header (rc = %d):\n"
- "uuid = %s\nlast_transno = "LPU64"\n",
- rc, msd->msd_uuid, msd->msd_last_transno);
-
mdt_trans_stop(ctx, mdt, th);
+
+ CDEBUG(D_INFO, "write last_rcvd header rc = %d:\n"
+ "uuid = %s\n"
+ "last_transno = "LPU64"\n",
+ rc,
+ msd->msd_uuid,
+ msd->msd_last_transno);
return rc;
}
mti = lu_context_key_get(ctx, &mdt_thread_key);
tmp = &mti->mti_mcd;
rc = mdt_record_read(ctx, mdt->mdt_last_rcvd, tmp, sizeof(*tmp), off);
- if (rc == 0) {
- memcpy(mcd->mcd_uuid, tmp->mcd_uuid, sizeof (mcd->mcd_uuid));
+ if (rc == 0)
mcd_le_to_cpu(tmp, mcd);
- }
+
+ CDEBUG(D_INFO, "read mcd @%d rc = %d:\n"
+ "uuid = %s\n"
+ "last_transno = "LPU64"\n"
+ "last_xid = "LPU64"\n"
+ "last_result = %d\n"
+ "last_data = %d\n"
+ "last_close_transno = "LPU64"\n"
+ "last_close_xid = "LPU64"\n"
+ "last_close_result = %d\n",
+ (int)*off - sizeof(*tmp),
+ rc,
+ mcd->mcd_uuid,
+ mcd->mcd_last_transno,
+ mcd->mcd_last_xid,
+ mcd->mcd_last_result,
+ mcd->mcd_last_data,
+ mcd->mcd_last_close_transno,
+ mcd->mcd_last_close_xid,
+ mcd->mcd_last_close_result);
+
return rc;
}
mti = lu_context_key_get(ctx, &mdt_thread_key);
tmp = &mti->mti_mcd;
- memcpy(mcd->mcd_uuid, tmp->mcd_uuid, sizeof (mcd->mcd_uuid));
mcd_cpu_to_le(mcd, tmp);
rc = mdt_record_write(ctx, mdt->mdt_last_rcvd,
tmp, sizeof(*tmp), off, th);
- CDEBUG(D_INFO, "write mcd rc = %d:\n"
+ CDEBUG(D_INFO, "write mcd @%d rc = %d:\n"
"uuid = %s\n"
"last_transno = "LPU64"\n"
"last_xid = "LPU64"\n"
"last_close_transno = "LPU64"\n"
"last_close_xid = "LPU64"\n"
"last_close_result = %d\n",
+ (int)*off - sizeof(*tmp),
rc,
mcd->mcd_uuid,
mcd->mcd_last_transno,
msd->msd_feature_incompat = OBD_INCOMPAT_MDT |
OBD_INCOMPAT_COMMON_LR;
} else {
+ LCONSOLE_WARN("%s: used disk, loading\n", obd->obd_name);
rc = mdt_last_rcvd_header_read(ctx, mdt, msd);
if (rc) {
CERROR("error reading MDS %s: rc %d\n", LAST_RCVD, rc);