struct dt_object *obj;
struct lu_attr *la;
unsigned long last_rcvd_size;
+ __u32 index;
__u64 mount_count;
int rc;
ENTRY;
CLASSERT(offsetof(struct lsd_client_data, lcd_padding) +
sizeof(lcd->lcd_padding) == LR_CLIENT_SIZE);
+ rc = server_name2index(obd->obd_name, &index, NULL);
+ if (rc < 0) {
+ CERROR("%s: Can not get index from obd_name: rc = %d\n",
+ obd->obd_name, rc);
+ RETURN(rc);
+ }
+
mti = lu_context_key_get(&env->le_ctx, &mdt_thread_key);
LASSERT(mti != NULL);
la = &mti->mti_attr.ma_attr;
lsd->lsd_feature_incompat = OBD_INCOMPAT_MDT |
OBD_INCOMPAT_COMMON_LR |
OBD_INCOMPAT_MULTI_OI;
- } else {
- LCONSOLE_WARN("%s: used disk, loading\n", obd->obd_name);
+ lsd->lsd_osd_index = index;
+ } else {
+ LCONSOLE_WARN("%s: used disk, loading\n", obd->obd_name);
rc = tgt_server_data_read(env, &mdt->mdt_lut);
if (rc) {
CERROR("error reading MDS %s: rc %d\n", LAST_RCVD, rc);
lsd->lsd_feature_compat |= OBD_COMPAT_MDT;
lsd->lsd_feature_incompat |= OBD_INCOMPAT_MDT |
OBD_INCOMPAT_COMMON_LR;
- }
+ if (lsd->lsd_osd_index != index) {
+ LCONSOLE_ERROR_MSG(0x157, "%s: index %d in last rcvd is"
+ "different with the index %d in"
+ "config log, It might be disk"
+ "corruption!\n", obd->obd_name,
+ lsd->lsd_osd_index, index);
+ GOTO(out, rc = -EINVAL);
+ }
+ }
mount_count = lsd->lsd_mount_count;
if (lsd->lsd_feature_incompat & ~MDT_INCOMPAT_SUPP) {