diff -Nru a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp
--- a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp	2006-06-30 13:33:03 +02:00
+++ b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp	2006-06-30 13:33:03 +02:00
@@ -238,6 +238,7 @@
 #define ZSCAN_MARKERS 18
 #define ZOPERATION_EVENT_REP 19
 #define ZPREP_DROP_TABLE 20
+#define ZENABLE_EXPAND_CHECK 21
 
 /* ------------------------------------------------------------------------- */
 /*        NODE STATE DURING SYSTEM RESTART, VARIABLES CNODES_SR_STATE        */
diff -Nru a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
--- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2006-06-30 13:33:03 +02:00
+++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2006-06-30 13:33:03 +02:00
@@ -416,6 +416,35 @@
     checkDropTab(signal);
     return;
     break;
+  case ZENABLE_EXPAND_CHECK:
+  {
+    jam();
+    fragptr.i = signal->theData[1];
+    if (fragptr.i != RNIL)
+    {
+      jam();
+      c_redo_complete_fragments.getPtr(fragptr);
+      signal->theData[0] = fragptr.p->tabRef;
+      signal->theData[1] = fragptr.p->fragId;
+      sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB);
+
+      c_redo_complete_fragments.next(fragptr);
+      signal->theData[0] = ZENABLE_EXPAND_CHECK;
+      signal->theData[1] = fragptr.i;
+      sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB);	
+      return;
+    }
+    else
+    {
+      jam();
+      c_redo_complete_fragments.remove();
+      StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend();
+      conf->startingNodeId = getOwnNodeId();
+      sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, 
+		 StartRecConf::SignalLength, JBB);
+      return;
+    }
+  }
   default:
     ndbrequire(false);
     break;
@@ -15658,24 +15687,23 @@
   } else if ((cstartType == NodeState::ST_NODE_RESTART) ||
              (cstartType == NodeState::ST_SYSTEM_RESTART)) {
     jam();
-    
-    
 
+    if(cstartType == NodeState::ST_SYSTEM_RESTART)
+    {
+      jam();
+      if (c_redo_complete_fragments.first(fragptr))
+      {
+	jam();
+        signal->theData[0] = ZENABLE_EXPAND_CHECK;
+        signal->theData[1] = fragptr.i;
+        sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB);
+	return;
+      }
+    }
     StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend();
     conf->startingNodeId = getOwnNodeId();
     sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, 
-	       StartRecConf::SignalLength, JBB);
-
-    if(cstartType == NodeState::ST_SYSTEM_RESTART){
-      c_redo_complete_fragments.first(fragptr);
-      while(fragptr.i != RNIL){
-	signal->theData[0] = fragptr.p->tabRef;
-	signal->theData[1] = fragptr.p->fragId;
-	sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB);
-	c_redo_complete_fragments.next(fragptr);
-      }
-      c_redo_complete_fragments.remove();
-    }
+		 StartRecConf::SignalLength, JBB);
   } else {
     ndbrequire(false);
   }//if
