List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:October 12 2009 6:22am
Subject:bzr commit into mysql-5.1-telco-6.3 branch (jonas:3101) Bug#47984
View as plain text  
#At file:///home/jonas/src/telco-6.3/ based on revid:jonas@stripped

 3101 Jonas Oreland	2009-10-12
      ndb - bug#47984 - move mem allocation to thread

    added:
      storage/ndb/include/kernel/signaldata/AllocMem.hpp
    modified:
      storage/ndb/include/kernel/GlobalSignalNumbers.h
      storage/ndb/include/kernel/signaldata/NdbfsContinueB.hpp
      storage/ndb/src/common/debugger/signaldata/SignalNames.cpp
      storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
      storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp
      storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp
      storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp
      storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp
      storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp
      storage/ndb/src/kernel/blocks/ndbfs/VoidFs.cpp
=== modified file 'storage/ndb/include/kernel/GlobalSignalNumbers.h'
--- a/storage/ndb/include/kernel/GlobalSignalNumbers.h	2009-09-21 08:30:42 +0000
+++ b/storage/ndb/include/kernel/GlobalSignalNumbers.h	2009-10-12 06:21:54 +0000
@@ -145,8 +145,8 @@ extern const GlobalSignalNumber NO_OF_SI
 #define GSN_ACC_OVER_REC                81
 
 /* 83 unused */
-#define GSN_ACC_SCAN_INFO               84
-#define GSN_ACC_SCAN_INFO24             85
+#define GSN_ACC_SCAN_INFO               84 /* local */
+#define GSN_ALLOC_MEM_REQ               85 /* local */
 #define GSN_ACC_SCANCONF                86
 #define GSN_ACC_SCANREF                 87
 #define GSN_ACC_SCANREQ                 88
@@ -407,7 +407,7 @@ extern const GlobalSignalNumber NO_OF_SI
 #define GSN_GET_SCHEMA_INFOREQ          302
 /* 303 not unused */
 /* 304 not unused */
-#define GSN_LQH_RESTART_OP              305
+#define GSN_ALLOC_MEM_REF               305 /* local */
 #define GSN_LQH_TRANSCONF               306
 #define GSN_LQH_TRANSREQ                307
 #define GSN_LQHADDATTCONF               308
@@ -436,7 +436,7 @@ extern const GlobalSignalNumber NO_OF_SI
 #define GSN_NEXT_SCANCONF               330
 #define GSN_NEXT_SCANREF                331
 #define GSN_NEXT_SCANREQ                332
-#define GSN_NEXTOPERATION               333
+#define GSN_ALLOC_MEM_CONF              333 /* local */
 
 #define GSN_READ_CONFIG_REQ             334 /* new name for sizealt, local */
 #define GSN_READ_CONFIG_CONF            335 /* new name for sizealt, local */

=== added file 'storage/ndb/include/kernel/signaldata/AllocMem.hpp'
--- a/storage/ndb/include/kernel/signaldata/AllocMem.hpp	1970-01-01 00:00:00 +0000
+++ b/storage/ndb/include/kernel/signaldata/AllocMem.hpp	2009-10-12 06:21:54 +0000
@@ -0,0 +1,57 @@
+/*
+   Copyright (C) 2003 MySQL AB
+    All rights reserved. Use is subject to license terms.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; version 2 of the License.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef ALLOC_MEM_HPP
+#define ALLOC_MEM_HPP
+
+#include "SignalData.hpp"
+
+struct AllocMemReq
+{
+  STATIC_CONST( SignalLength = 3 );
+
+  enum RequestType
+  {
+    RT_INIT = 0
+  };
+
+  Uint32 senderRef;
+  Uint32 senderData;
+  Uint32 requestInfo;
+};
+
+struct AllocMemRef
+{
+  STATIC_CONST( SignalLength = 4 );
+
+  Uint32 senderRef;
+  Uint32 senderData;
+  Uint32 requestInfo;
+  Uint32 errorCode;
+};
+
+struct AllocMemConf
+{
+  STATIC_CONST( SignalLength = 3 );
+
+  Uint32 senderRef;
+  Uint32 senderData;
+  Uint32 requestInfo;
+};
+
+#endif

=== modified file 'storage/ndb/include/kernel/signaldata/NdbfsContinueB.hpp'
--- a/storage/ndb/include/kernel/signaldata/NdbfsContinueB.hpp	2009-05-26 18:53:34 +0000
+++ b/storage/ndb/include/kernel/signaldata/NdbfsContinueB.hpp	2009-10-12 06:21:54 +0000
@@ -26,6 +26,7 @@ class NdbfsContinueB {
    * Sender(s)/Reciver(s)
    */
   friend class Ndbfs;
+  friend class VoidFs;
   friend bool printCONTINUEB_NDBFS(FILE * output, const Uint32 * theData,
 				   Uint32 len, Uint16);
 private:

=== modified file 'storage/ndb/src/common/debugger/signaldata/SignalNames.cpp'
--- a/storage/ndb/src/common/debugger/signaldata/SignalNames.cpp	2009-09-21 08:30:42 +0000
+++ b/storage/ndb/src/common/debugger/signaldata/SignalNames.cpp	2009-10-12 06:21:54 +0000
@@ -67,7 +67,6 @@ const GsnName SignalNames [] = {
   ,{ GSN_ACC_COMMITREQ,          "ACC_COMMITREQ" }
   ,{ GSN_ACC_OVER_REC,           "ACC_OVER_REC" }
   ,{ GSN_ACC_SCAN_INFO,          "ACC_SCAN_INFO" }
-  ,{ GSN_ACC_SCAN_INFO24,        "ACC_SCAN_INFO24" }
   ,{ GSN_ACC_SCANCONF,           "ACC_SCANCONF" }
   ,{ GSN_ACC_SCANREF,            "ACC_SCANREF" }
   ,{ GSN_ACC_SCANREQ,            "ACC_SCANREQ" }
@@ -259,7 +258,6 @@ const GsnName SignalNames [] = {
   ,{ GSN_NEXT_SCANCONF,          "NEXT_SCANCONF" }
   ,{ GSN_NEXT_SCANREF,           "NEXT_SCANREF" }
   ,{ GSN_NEXT_SCANREQ,           "NEXT_SCANREQ" }
-  ,{ GSN_NEXTOPERATION,          "NEXTOPERATION" }
   ,{ GSN_NF_COMPLETEREP,         "NF_COMPLETEREP" }
   ,{ GSN_OPEN_COMCONF,           "OPEN_COMCONF" }
   ,{ GSN_OPEN_COMREF,            "OPEN_COMREF" }
@@ -657,5 +655,9 @@ const GsnName SignalNames [] = {
   ,{ GSN_START_PERMREP, "START_PERMREP" }
 
   ,{ GSN_LOCAL_ROUTE_ORD, "LOCAL_ROUTE_ORD" }
+
+  ,{ GSN_ALLOC_MEM_REQ, "ALLOC_MEM_REQ" }
+  ,{ GSN_ALLOC_MEM_REF, "ALLOC_MEM_REF" }
+  ,{ GSN_ALLOC_MEM_CONF, "ALLOC_MEM_CONF" }
 };
 const unsigned short NO_OF_SIGNAL_NAMES = sizeof(SignalNames)/sizeof(GsnName);

=== modified file 'storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp'
--- a/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp	2009-10-08 10:29:46 +0000
+++ b/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp	2009-10-12 06:21:54 +0000
@@ -38,6 +38,7 @@
 #include <signaldata/EventSubscribeReq.hpp>
 #include <signaldata/DumpStateOrd.hpp>
 #include <signaldata/DisconnectRep.hpp>
+#include <signaldata/AllocMem.hpp>
 
 #include <EventLogger.hpp>
 #include <TimeQueue.hpp>
@@ -91,7 +92,10 @@ Cmvmi::Cmvmi(Block_context& ctx) :
 
   addRecSignal(GSN_TESTSIG, &Cmvmi::execTESTSIG);
   addRecSignal(GSN_NODE_START_REP, &Cmvmi::execNODE_START_REP, true);
-  
+
+  addRecSignal(GSN_ALLOC_MEM_REF, &Cmvmi::execALLOC_MEM_REF);
+  addRecSignal(GSN_ALLOC_MEM_CONF, &Cmvmi::execALLOC_MEM_CONF);
+
   subscriberPool.setSize(5);
   
   const ndb_mgm_configuration_iterator * db = m_ctx.m_config.getOwnConfigIterator();
@@ -385,40 +389,76 @@ Cmvmi::execREAD_CONFIG_REQ(Signal* signa
     rl.m_resource_id = 0;
     m_ctx.m_mm.set_resource_limit(rl);
   }
-  
-  if (!m_ctx.m_mm.init())
-  {
-    char buf[255];
 
-    struct ndb_mgm_param_info dm;
-    struct ndb_mgm_param_info sga;
-    size_t size = sizeof(ndb_mgm_param_info);
-    
-    ndb_mgm_get_db_parameter_info(CFG_DB_DATA_MEM, &dm, &size);
-    size = sizeof(ndb_mgm_param_info);
-    ndb_mgm_get_db_parameter_info(CFG_DB_SGA, &sga, &size);
-
-    BaseString::snprintf(buf, sizeof(buf), 
-			 "Malloc (%lld bytes) for %s and %s failed", 
-			 Uint64(shared_mem + tupmem) * 32768,
-			 dm.m_name, sga.m_name);
-    
-    ErrorReporter::handleAssert(buf,
-				__FILE__, __LINE__, NDBD_EXIT_MEMALLOC);
-    
-    ndbrequire(false);
+  // sloppy
+  ndbrequire(refToMain(ref) == NDBCNTR &&
+             (refToNode(ref) == getOwnNodeId() || refToNode(ref) == 0));
+  {
+    AllocMemReq* req = (AllocMemReq*)signal->getDataPtrSend();
+    req->senderRef = reference();
+    req->senderData = senderData;
+    req->requestInfo = AllocMemReq::RT_INIT;
+    sendSignal(NDBFS_REF, GSN_ALLOC_MEM_REQ, signal,
+               AllocMemReq::SignalLength, JBB);
   }
+}
+
+void
+Cmvmi::execALLOC_MEM_CONF(Signal* signal)
+{
+  jamEntry();
+  AllocMemConf * conf = (AllocMemConf*)signal->getDataPtr();
+  Uint32 ref = NDBCNTR_REF; // sloppy
+  Uint32 senderData = conf->senderData;
 
   {
     void* ptr = m_ctx.m_mm.get_memroot();
     m_shared_page_pool.set((GlobalPage*)ptr, ~0);
   }
+
+  {
+    ReadConfigConf * conf = (ReadConfigConf*)signal->getDataPtrSend();
+    conf->senderRef = reference();
+    conf->senderData = senderData;
+    sendSignal(ref, GSN_READ_CONFIG_CONF, signal,
+               ReadConfigConf::SignalLength, JBB);
+  }
+}
+
+void
+Cmvmi::execALLOC_MEM_REF(Signal* signal)
+{
+  jamEntry();
+  char buf[255];
+
+  const ndb_mgm_configuration_iterator * p =
+    m_ctx.m_config.getOwnConfigIterator();
+  ndbrequire(p != 0);
+
+  Uint64 shared_mem = 8*1024*1024;
+  ndb_mgm_get_int64_parameter(p, CFG_DB_SGA, &shared_mem);
+  shared_mem /= GLOBAL_PAGE_SIZE;
+
+  Uint32 tupmem = 0;
+  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_PAGE, &tupmem));
+
+  struct ndb_mgm_param_info dm;
+  struct ndb_mgm_param_info sga;
+  size_t size = sizeof(ndb_mgm_param_info);
+
+  ndb_mgm_get_db_parameter_info(CFG_DB_DATA_MEM, &dm, &size);
+  size = sizeof(ndb_mgm_param_info);
+  ndb_mgm_get_db_parameter_info(CFG_DB_SGA, &sga, &size);
+
+  BaseString::snprintf(buf, sizeof(buf),
+                       "Malloc (%lld bytes) for %s and %s failed",
+                       Uint64(shared_mem + tupmem) * 32768,
+                       dm.m_name, sga.m_name);
+
+  ErrorReporter::handleAssert(buf,
+                              __FILE__, __LINE__, NDBD_EXIT_MEMALLOC);
   
-  ReadConfigConf * conf = (ReadConfigConf*)signal->getDataPtrSend();
-  conf->senderRef = reference();
-  conf->senderData = senderData;
-  sendSignal(ref, GSN_READ_CONFIG_CONF, signal, 
-	     ReadConfigConf::SignalLength, JBB);
+  ndbrequire(false);
 }
 
 void Cmvmi::execSTTOR(Signal* signal)

=== modified file 'storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp'
--- a/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp	2009-10-08 10:29:46 +0000
+++ b/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp	2009-10-12 06:21:54 +0000
@@ -69,6 +69,9 @@ private:
 
   void execTESTSIG(Signal* signal);
   void execNODE_START_REP(Signal* signal);
+
+  void execALLOC_MEM_REF(Signal* signal);
+  void execALLOC_MEM_CONF(Signal* signal);
   
   char theErrorMessage[256];
   void sendSTTORRY(Signal* signal);

=== modified file 'storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp'
--- a/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp	2009-10-01 05:56:05 +0000
+++ b/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp	2009-10-12 06:21:54 +0000
@@ -214,6 +214,9 @@ AsyncFile::run()
     case Request::rmrf:
       rmrfReq(request, (char*)theFileName.c_str(), request->par.rmrf.own_directory);
       break;
+    case Request::allocmem:
+      allocMemReq(request);
+      break;
     case Request:: end:
       if (isOpen())
         closeReq(request);
@@ -323,6 +326,16 @@ AsyncFile::writevReq( Request * request)
   writeReq(request);
 }
 
+void
+AsyncFile::allocMemReq(Request* request)
+{
+  bool res = request->par.alloc.ctx->m_mm.init();
+  if (res == true)
+    request->error = 0;
+  else
+    request->error = 1;
+}
+
 void AsyncFile::endReq()
 {
   if (theWriteBuffer)

=== modified file 'storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp'
--- a/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp	2009-05-27 12:11:46 +0000
+++ b/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp	2009-10-12 06:21:54 +0000
@@ -105,7 +105,8 @@ public:
     append,
     append_synch,
     rmrf,
-    readPartial
+    readPartial,
+    allocmem
   };
   Action action;
   union {
@@ -131,6 +132,10 @@ public:
       bool directory;
       bool own_directory;
     } rmrf;
+    struct {
+      Block_context* ctx;
+      Uint32 requestInfo;
+    } alloc;
   } par;
   int error;
   
@@ -233,6 +238,11 @@ protected:
   virtual void writevReq(Request *request);
 
   /**
+   * Allocate memory (in separate thread)
+   */
+  virtual void allocMemReq(Request*);
+
+  /**
    * endReq()
    *
    * Inverse to ::init(). Cleans up thread before it exits.

=== modified file 'storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp'
--- a/storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp	2009-08-21 10:22:43 +0000
+++ b/storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp	2009-10-12 06:21:54 +0000
@@ -32,6 +32,7 @@
 #include <signaldata/FsRef.hpp>
 #include <signaldata/NdbfsContinueB.hpp>
 #include <signaldata/DumpStateOrd.hpp>
+#include <signaldata/AllocMem.hpp>
 
 #include <RefConvert.hpp>
 #include <NdbSleep.h>
@@ -55,8 +56,8 @@ int pageSize( const NewVARIABLE* baseAdd
 
 Ndbfs::Ndbfs(Block_context& ctx) :
   SimulatedBlock(NDBFS, ctx),
-  scanningInProgress(false),
   theLastId(0),
+  scanningInProgress(false),
   theRequestPool(0),
   m_maxOpenedFiles(0)
 {
@@ -74,7 +75,10 @@ Ndbfs::Ndbfs(Block_context& ctx) :
   addRecSignal(GSN_CONTINUEB, &Ndbfs::execCONTINUEB);
   addRecSignal(GSN_FSAPPENDREQ, &Ndbfs::execFSAPPENDREQ);
   addRecSignal(GSN_FSREMOVEREQ, &Ndbfs::execFSREMOVEREQ);
+  addRecSignal(GSN_ALLOC_MEM_REQ, &Ndbfs::execALLOC_MEM_REQ);
    // Set send signals
+
+  theRequestPool = new Pool<Request>;
 }
 
 Ndbfs::~Ndbfs()
@@ -171,8 +175,6 @@ Ndbfs::execREAD_CONFIG_REQ(Signal* signa
                                        tmp.c_str());
   m_base_path[FsOpenReq::BP_BACKUP].assign(m_ctx.m_config.backupFilePath());
 
-  theRequestPool = new Pool<Request>;
-
   const char * ddpath = 0;
   ndb_mgm_get_string_parameter(p, CFG_DB_DD_FILESYSTEM_PATH, &ddpath);
 
@@ -242,6 +244,10 @@ Ndbfs::execREAD_CONFIG_REQ(Signal* signa
   conf->senderData = senderData;
   sendSignal(ref, GSN_READ_CONFIG_CONF, signal, 
 	     ReadConfigConf::SignalLength, JBB);
+
+  // start scanning
+  signal->theData[0] = NdbfsContinueB::ZSCAN_MEMORYCHANNEL_10MS_DELAY;
+  sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 10, 1);
 }
 
 /* Received a restart signal.
@@ -264,15 +270,9 @@ Ndbfs::execSTTOR(Signal* signal)
     
     do_mkdir(m_base_path[FsOpenReq::BP_FS].c_str());
     
-    cownref = NDBFS_REF;
     // close all open files
     ndbrequire(theOpenFiles.size() == 0);
     
-    scanningInProgress = false;
-    
-    signal->theData[0] = NdbfsContinueB::ZSCAN_MEMORYCHANNEL_10MS_DELAY;
-    sendSignalWithDelay(cownref, GSN_CONTINUEB, signal, 10, 1);
-
     signal->theData[3] = 255;
     sendSignal(NDBCNTR_REF, GSN_STTORRY, signal,4, JBB);
     return;
@@ -771,6 +771,30 @@ error:
   return;
 }
 
+void
+Ndbfs::execALLOC_MEM_REQ(Signal* signal)
+{
+  jamEntry();
+
+  AllocMemReq* req = (AllocMemReq*)signal->getDataPtr();
+
+  AsyncFile* file = getIdleFile();
+  ndbrequire(file != NULL);
+  file->reportTo(&theFromThreads);
+
+  Request *request = theRequestPool->get();
+
+  request->error = 0;
+  request->set(req->senderRef, req->senderData, 0);
+  request->file = file;
+  request->theTrace = signal->getTrace();
+
+  request->par.alloc.ctx = &m_ctx;
+  request->par.alloc.requestInfo = req->requestInfo;
+  request->action = Request::allocmem;
+  ndbrequire(forward(file, request));
+}
+
 Uint16
 Ndbfs::newId()
 {
@@ -920,6 +944,17 @@ Ndbfs::report(Request * request, Signal*
       // Report nothing
       break;
     }
+    case Request::allocmem: {
+      jam();
+      AllocMemRef* rep = (AllocMemRef*)signal->getDataPtrSend();
+      rep->senderRef = reference();
+      rep->senderData = request->theUserPointer;
+      rep->errorCode = request->error;
+      sendSignal(ref, GSN_ALLOC_MEM_REF, signal,
+                 AllocMemRef::SignalLength, JBB);
+      theIdleFiles.push_back(request->file);
+      break;
+    }
     }//switch
   } else {
     jam();
@@ -992,6 +1027,16 @@ Ndbfs::report(Request * request, Signal*
       // Report nothing
       break;
     }
+    case Request::allocmem: {
+      jam();
+      AllocMemConf* conf = (AllocMemConf*)signal->getDataPtrSend();
+      conf->senderRef = reference();
+      conf->senderData = request->theUserPointer;
+      sendSignal(ref, GSN_ALLOC_MEM_CONF, signal,
+                 AllocMemConf::SignalLength, JBB);
+      theIdleFiles.push_back(request->file);
+      break;
+    }
     }    
   }//if
   signal->setTrace(orgTrace);

=== modified file 'storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp'
--- a/storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp	2009-08-21 09:26:34 +0000
+++ b/storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp	2009-10-12 06:21:54 +0000
@@ -55,8 +55,8 @@ protected:
   void execFSREMOVEREQ(Signal* signal);
   void execSTTOR(Signal* signal);
   void execCONTINUEB(Signal* signal);
+  void execALLOC_MEM_REQ(Signal* signal);
 
-  bool scanningInProgress;
   Uint16 newId();
 
 private:
@@ -70,13 +70,13 @@ private:
   
   // Used for uniqe number generation
   Uint16 theLastId;
-  BlockReference cownref;
 
   // Communication from files 
   MemoryChannel<Request> theFromThreads;
-
+  bool scanningInProgress;
   Pool<Request>* theRequestPool;
 
+private:
   AsyncFile* createAsyncFile();
   AsyncFile* getIdleFile();
 
@@ -99,7 +99,7 @@ public:
   const BaseString& get_base_path(Uint32 no) const;
 };
 
-class VoidFs : public SimulatedBlock
+class VoidFs : public Ndbfs
 {
 public:
   VoidFs(Block_context&);
@@ -119,6 +119,7 @@ protected:
   void execFSAPPENDREQ(Signal* signal);
   void execFSREMOVEREQ(Signal* signal);
   void execSTTOR(Signal* signal);
+  void execALLOC_MEM_REQ(Signal*);
 
 private:
   // Declared but not defined

=== modified file 'storage/ndb/src/kernel/blocks/ndbfs/VoidFs.cpp'
--- a/storage/ndb/src/kernel/blocks/ndbfs/VoidFs.cpp	2009-05-26 18:53:34 +0000
+++ b/storage/ndb/src/kernel/blocks/ndbfs/VoidFs.cpp	2009-10-12 06:21:54 +0000
@@ -41,21 +41,20 @@
 #define DEBUG(x) { ndbout << "FS::" << x << endl; }
 
 VoidFs::VoidFs(Block_context & ctx) :
-  SimulatedBlock(NDBFS, ctx)
+  Ndbfs(ctx)
 {
-  BLOCK_CONSTRUCTOR(VoidFs);
-  
   // Set received signals
-  addRecSignal(GSN_READ_CONFIG_REQ, &VoidFs::execREAD_CONFIG_REQ);
-  addRecSignal(GSN_DUMP_STATE_ORD,  &VoidFs::execDUMP_STATE_ORD);
-  addRecSignal(GSN_STTOR,  &VoidFs::execSTTOR);
-  addRecSignal(GSN_FSOPENREQ, &VoidFs::execFSOPENREQ);
-  addRecSignal(GSN_FSCLOSEREQ, &VoidFs::execFSCLOSEREQ);
-  addRecSignal(GSN_FSWRITEREQ, &VoidFs::execFSWRITEREQ);
-  addRecSignal(GSN_FSREADREQ, &VoidFs::execFSREADREQ);
-  addRecSignal(GSN_FSSYNCREQ, &VoidFs::execFSSYNCREQ);
-  addRecSignal(GSN_FSAPPENDREQ, &VoidFs::execFSAPPENDREQ);
-  addRecSignal(GSN_FSREMOVEREQ, &VoidFs::execFSREMOVEREQ);
+  addRecSignal(GSN_READ_CONFIG_REQ, &VoidFs::execREAD_CONFIG_REQ, true);
+  addRecSignal(GSN_DUMP_STATE_ORD,  &VoidFs::execDUMP_STATE_ORD, true);
+  addRecSignal(GSN_STTOR,  &VoidFs::execSTTOR, true);
+  addRecSignal(GSN_FSOPENREQ, &VoidFs::execFSOPENREQ, true);
+  addRecSignal(GSN_FSCLOSEREQ, &VoidFs::execFSCLOSEREQ, true);
+  addRecSignal(GSN_FSWRITEREQ, &VoidFs::execFSWRITEREQ, true);
+  addRecSignal(GSN_FSREADREQ, &VoidFs::execFSREADREQ, true);
+  addRecSignal(GSN_FSSYNCREQ, &VoidFs::execFSSYNCREQ, true);
+  addRecSignal(GSN_FSAPPENDREQ, &VoidFs::execFSAPPENDREQ, true);
+  addRecSignal(GSN_FSREMOVEREQ, &VoidFs::execFSREMOVEREQ, true);
+
    // Set send signals
 }
 
@@ -76,6 +75,9 @@ VoidFs::execREAD_CONFIG_REQ(Signal* sign
   conf->senderData = senderData;
   sendSignal(ref, GSN_READ_CONFIG_CONF, signal, 
 	     ReadConfigConf::SignalLength, JBB);
+
+  signal->theData[0] = NdbfsContinueB::ZSCAN_MEMORYCHANNEL_10MS_DELAY;
+  sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 10, 1);
 }
 
 void


Attachment: [text/bzr-bundle] bzr/jonas@mysql.com-20091012062154-k8r1zjh5gctzm683.bundle
Thread
bzr commit into mysql-5.1-telco-6.3 branch (jonas:3101) Bug#47984Jonas Oreland12 Oct