3065 Jonas Oreland 2009-10-09 [merge]
merge 70 to 71
modified:
storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp
storage/ndb/src/cw/cpcd/CPCD.hpp
storage/ndb/src/kernel/blocks/pgman.cpp
storage/ndb/src/kernel/vm/SimulatedBlock.cpp
3064 Jonas Oreland 2009-10-09 [merge]
ndb - merge 70 to 71
modified:
mysql-test/collections/default.daily
mysql-test/collections/default.push
storage/ndb/test/run-test/files.cpp
=== modified file 'storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp'
--- a/storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp 2009-10-08 10:19:19 +0000
+++ b/storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp 2009-10-09 08:15:14 +0000
@@ -57,7 +57,7 @@ private:
Uint32 cursor;
Uint32 elementsCleaned;
Uint32 callbackStart; /* Callback structure placed here */
- };
+ } cleanup;
};
};
=== modified file 'storage/ndb/src/cw/cpcd/CPCD.hpp'
--- a/storage/ndb/src/cw/cpcd/CPCD.hpp 2009-10-08 04:34:10 +0000
+++ b/storage/ndb/src/cw/cpcd/CPCD.hpp 2009-10-09 08:19:44 +0000
@@ -29,8 +29,6 @@
#ifdef _WIN32
typedef DWORD pid_t;
-#else
-typedef int pid_t;
#endif
const pid_t bad_pid = -1;
=== modified file 'storage/ndb/src/kernel/blocks/pgman.cpp'
--- a/storage/ndb/src/kernel/blocks/pgman.cpp 2009-05-27 15:21:45 +0000
+++ b/storage/ndb/src/kernel/blocks/pgman.cpp 2009-10-09 11:15:22 +0000
@@ -1266,14 +1266,17 @@ Pgman::process_lcp(Signal* signal)
if (m_lcp_curr_bucket == ~(Uint32)0 && !m_lcp_outstanding)
{
+ jam();
Ptr<Page_entry> ptr;
Page_sublist& pl = *m_page_sublist[Page_entry::SL_LOCKED];
if (pl.first(ptr))
{
+ jam();
process_lcp_locked(signal, ptr);
}
else
{
+ jam();
if (ERROR_INSERTED(11007))
{
ndbout << "No more writes..." << endl;
@@ -1298,19 +1301,17 @@ Pgman::process_lcp_locked(Signal* signal
{
CRASH_INSERTION(11006);
+ // protect from tsman parallel access
+ Tablespace_client tsman(signal, this, c_tsman, 0, 0, 0);
ptr.p->m_last_lcp = m_last_lcp;
if (ptr.p->m_state & Page_entry::DIRTY)
{
- {
- // protect copy-page
- Tablespace_client tsman(signal, this, c_tsman, 0, 0, 0);
- Ptr<GlobalPage> org, copy;
- ndbrequire(m_global_page_pool.seize(copy));
- m_global_page_pool.getPtr(org, ptr.p->m_real_page_i);
- memcpy(copy.p, org.p, sizeof(GlobalPage));
- ptr.p->m_copy_page_i = copy.i;
- }
-
+ Ptr<GlobalPage> org, copy;
+ ndbrequire(m_global_page_pool.seize(copy));
+ m_global_page_pool.getPtr(org, ptr.p->m_real_page_i);
+ memcpy(copy.p, org.p, sizeof(GlobalPage));
+ ptr.p->m_copy_page_i = copy.i;
+
m_lcp_outstanding++;
ptr.p->m_state |= Page_entry::LCP;
pageout(signal, ptr);
@@ -1328,16 +1329,12 @@ Pgman::process_lcp_locked(Signal* signal
void
Pgman::process_lcp_locked_fswriteconf(Signal* signal, Ptr<Page_entry> ptr)
{
- {
- // protect copy-page
- Tablespace_client tsman(signal, this, c_tsman, 0, 0, 0);
- Ptr<GlobalPage> org, copy;
- m_global_page_pool.getPtr(copy, ptr.p->m_copy_page_i);
- m_global_page_pool.getPtr(org, ptr.p->m_real_page_i);
- memcpy(org.p, copy.p, sizeof(GlobalPage));
- m_global_page_pool.release(copy);
- ptr.p->m_copy_page_i = RNIL;
- }
+ Ptr<GlobalPage> org, copy;
+ m_global_page_pool.getPtr(copy, ptr.p->m_copy_page_i);
+ m_global_page_pool.getPtr(org, ptr.p->m_real_page_i);
+ memcpy(org.p, copy.p, sizeof(GlobalPage));
+ m_global_page_pool.release(copy);
+ ptr.p->m_copy_page_i = RNIL;
Page_sublist& pl = *m_page_sublist[Page_entry::SL_LOCKED];
pl.next(ptr);
@@ -1486,13 +1483,18 @@ Pgman::fswriteconf(Signal* signal, Ptr<P
if (state & Page_entry::LCP)
{
+ jam();
+ state &= ~ Page_entry::LCP;
ndbrequire(m_lcp_outstanding);
m_lcp_outstanding--;
- state &= ~ Page_entry::LCP;
-
if (ptr.p->m_copy_page_i != RNIL)
{
+ jam();
+ Tablespace_client tsman(signal, this, c_tsman, 0, 0, 0);
process_lcp_locked_fswriteconf(signal, ptr);
+ set_page_state(ptr, state);
+ do_busy_loop(signal, true);
+ return;
}
}
=== modified file 'storage/ndb/src/kernel/vm/SimulatedBlock.cpp'
--- a/storage/ndb/src/kernel/vm/SimulatedBlock.cpp 2009-10-08 12:30:55 +0000
+++ b/storage/ndb/src/kernel/vm/SimulatedBlock.cpp 2009-10-09 11:18:06 +0000
@@ -1869,13 +1869,13 @@ SimulatedBlock::execCONTINUE_FRAGMENTED(
callbackWords);
Callback cb;
- memcpy(&cb, &sig->callbackStart, callbackWords << 2);
+ memcpy(&cb, &sig->cleanup.callbackStart, callbackWords << 2);
doNodeFailureCleanup(signal,
- sig->failedNodeId,
- sig->resource,
- sig->cursor,
- sig->elementsCleaned,
+ sig->cleanup.failedNodeId,
+ sig->cleanup.resource,
+ sig->cleanup.cursor,
+ sig->cleanup.elementsCleaned,
cb);
break;
}
@@ -2523,15 +2523,15 @@ SimulatedBlock::doNodeFailureCleanup(Sig
ContinueFragmented * sig = (ContinueFragmented*)signal->getDataPtrSend();
sig->type = ContinueFragmented::CONTINUE_CLEANUP;
- sig->failedNodeId = failedNodeId;
- sig->resource = resource;
- sig->cursor = cursor;
- sig->elementsCleaned= elementsCleaned;
+ sig->cleanup.failedNodeId = failedNodeId;
+ sig->cleanup.resource = resource;
+ sig->cleanup.cursor = cursor;
+ sig->cleanup.elementsCleaned= elementsCleaned;
Uint32 callbackWords = (sizeof(Callback) + 3) >> 2;
Uint32 sigLen = ContinueFragmented::CONTINUE_CLEANUP_FIXED_WORDS +
callbackWords;
ndbassert(sigLen <= 25); // Should be STATIC_ASSERT
- memcpy(&sig->callbackStart, &cb, callbackWords << 2);
+ memcpy(&sig->cleanup.callbackStart, &cb, callbackWords << 2);
sendSignal(reference(), GSN_CONTINUE_FRAGMENTED, signal, sigLen, JBB);
Attachment: [text/bzr-bundle] bzr/jonas@mysql.com-20091009111806-bi2i4o4kychhf3e8.bundle
| Thread |
|---|
| • bzr push into mysql-5.1-telco-7.1 branch (jonas:3064 to 3065) | Jonas Oreland | 9 Oct |