diff --git a/mysql-test/suite/innodb/disabled.def b/mysql-test/suite/innodb/disabled.def
index 9a92e99df2e..73c6526904f 100644
--- a/mysql-test/suite/innodb/disabled.def
+++ b/mysql-test/suite/innodb/disabled.def
@@ -10,14 +10,14 @@
 #
 ##############################################################################
 
-innodb_defragment_fill_factor : MDEV-11336 Fix and enable innodb_defragment
-innodb.defrag_mdl-9155 : MDEV-11336 Fix and enable innodb_defragment
-innodb.innodb_defrag_concurrent : MDEV-11336 Fix and enable innodb_defragment
-innodb.innodb_defrag_stats : MDEV-11336 Fix and enable innodb_defragment
-innodb.innodb_defrag_stats_many_tables : MDEV-11336 Fix and enable innodb_defragment
-innodb.innodb_defragment : MDEV-11336 Fix and enable innodb_defragment
-innodb.innodb_defragment_fill_factor : MDEV-11336 Fix and enable innodb_defragment
-innodb.innodb_defragment_small : MDEV-11336 Fix and enable innodb_defragment
-innodb.innodb_defrag_binlog : MDEV-11336 Fix and enable innodb_defragment
+#innodb_defragment_fill_factor : MDEV-11336 Fix and enable innodb_defragment
+#innodb.defrag_mdl-9155 : MDEV-11336 Fix and enable innodb_defragment
+#innodb.innodb_defrag_concurrent : MDEV-11336 Fix and enable innodb_defragment
+#innodb.innodb_defrag_stats : MDEV-11336 Fix and enable innodb_defragment
+#innodb.innodb_defrag_stats_many_tables : MDEV-11336 Fix and enable innodb_defragment
+#innodb.innodb_defragment : MDEV-11336 Fix and enable innodb_defragment
+#innodb.innodb_defragment_fill_factor : MDEV-11336 Fix and enable innodb_defragment
+#innodb.innodb_defragment_small : MDEV-11336 Fix and enable innodb_defragment
+#innodb.innodb_defrag_binlog : MDEV-11336 Fix and enable innodb_defragment
 innodb-wl5980-alter : MDEV-9469 / MDEV-13668 extra crash in 10.2
 create-index-debug : MDEV-13680 InnoDB may crash when btr_page_alloc() fails
diff --git a/storage/innobase/btr/btr0defragment.cc b/storage/innobase/btr/btr0defragment.cc
index 335b4fc220d..2c86eef4d95 100644
--- a/storage/innobase/btr/btr0defragment.cc
+++ b/storage/innobase/btr/btr0defragment.cc
@@ -564,7 +564,7 @@ btr_defragment_merge_pages(
 				page_get_infimum_rec(from_page));
 			node_ptr = dict_index_build_node_ptr(
 				index, rec, page_get_page_no(from_page),
-				heap, level + 1);
+				heap, level);
 			btr_insert_on_non_leaf_level(0, index, level+1,
 						     node_ptr, mtr);
 		}
@@ -797,11 +797,14 @@ DECLARE_THREAD(btr_defragment_thread)(void*)
 
 		now = ut_timer_now();
 		mtr_start(&mtr);
-		btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, &mtr);
 		cursor = btr_pcur_get_btr_cur(pcur);
 		index = btr_cur_get_index(cursor);
-		first_block = btr_cur_get_block(cursor);
 		mtr.set_named_space(index->space);
+		btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, &mtr);
+		first_block = btr_cur_get_block(cursor);
+		/* Acquire root block with X-latch as we could acquire
+		pages out of order. */
+		//btr_root_block_get(index, RW_X_LATCH, &mtr);
 
 		last_block = btr_defragment_n_pages(first_block, index,
 						    srv_defragment_n_pages,
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index 3374f46fb24..e7bf2b649f9 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -15066,7 +15066,7 @@ ha_innobase::optimize(
 	calls to OPTIMIZE, which is undesirable. */
 
 	/* TODO: Defragment is disabled for now */
-	if (0) {
+	if (srv_defragment) {
 		int err;
 
 		err = defragment_table(m_prebuilt->table->name.m_name, NULL, false);
