List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:October 9 2009 11:18am
Subject:bzr push into mysql-5.1-telco-7.1 branch (jonas:3064 to 3065)
View as plain text  
 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 Oreland9 Oct