#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#47984 | Jonas Oreland | 12 Oct |