#define OBD_FAIL_MDS_HSM_CT_UNREGISTER_NET 0x14e
#define OBD_FAIL_MDS_SWAP_LAYOUTS_NET 0x14f
#define OBD_FAIL_MDS_HSM_ACTION_NET 0x150
+#define OBD_FAIL_MDS_CHANGELOG_INIT 0x151
/* layout lock */
#define OBD_FAIL_MDS_NO_LL_GETATTR 0x170
struct llog_ctxt *ctxt = NULL, *uctxt = NULL;
int rc;
+ ENTRY;
+
+ /* LU-2844 mdd setup failure should not cause umount oops */
+ if (OBD_FAIL_CHECK(OBD_FAIL_MDS_CHANGELOG_INIT))
+ RETURN(-EIO);
+
OBD_SET_CTXT_MAGIC(&obd->obd_lvfs_ctxt);
obd->obd_lvfs_ctxt.dt = mdd->mdd_bottom;
rc = llog_setup(env, obd, &obd->obd_olg, LLOG_CHANGELOG_ORIG_CTXT,
struct l_wait_info lwi = { 0 };
ENTRY;
+ if (!lfsck->ml_initialized)
+ RETURN(0);
+
mutex_lock(&lfsck->ml_mutex);
spin_lock(&lfsck->ml_lock);
if (thread_is_init(thread) || thread_is_stopped(thread)) {
lu_context_enter(&session_ctx);
env.le_ses = &session_ctx;
- dev->ld_ops->ldo_prepare(&env, NULL, dev);
+ rc = dev->ld_ops->ldo_prepare(&env, NULL, dev);
lu_env_fini(&env);
lu_context_exit(&session_ctx);
}
run_test 110f "remove remote directory: drop slave rep"
+# LU-2844 mdt prepare fail should not cause umount oops
+test_111 () {
+ local mdsdev=$(mdsdevname ${SINGLEMDS//mds/})
+#define OBD_FAIL_MDS_CHANGELOG_INIT 0x151
+ do_facet $SINGLEMDS lctl set_param fail_loc=0x151
+ stop $SINGLEMDS || error "stop MDS failed"
+ start $SINGLEMDS $mdsdev && error "start MDS should fail"
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
+ start $SINGLEMDS $mdsdev || error "start MDS failed"
+}
+run_test 111 "mdd setup fail should not cause umount oops"
+
complete $SECONDS
check_and_cleanup_lustre
exit_status