Commit efcd9831 authored by unknown's avatar unknown
Browse files

ndb dd -

  convert Dbtup::Page_request and pgman::Page_request to WOPool


storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  remove bad method call
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  Convert disk records to shared global mem users
storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp:
  Convert disk records to shared global mem users
storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp:
  Convert disk records to shared global mem users
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
  Make buddy is initialized first
storage/ndb/src/kernel/blocks/pgman.cpp:
  Convert disk records to shared global mem users
storage/ndb/src/kernel/blocks/pgman.hpp:
  Convert disk records to shared global mem users
storage/ndb/src/kernel/vm/DLFifoList.hpp:
  Made pool templ. ag of DLFifoList + cleanup some
storage/ndb/src/kernel/vm/SLFifoList.hpp:
  Add a few likely's + format some code
storage/ndb/src/kernel/vm/SimulatedBlock.hpp:
  Add records types to blocks includes
parent c5962eb9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -12381,7 +12381,7 @@ void Dbtc::executeTriggers(Signal* signal, ApiConnectRecordPtr* transPtr)
	  tmp2.release();
	  LocalDataBuffer<11> tmp3(pool, trigPtr.p->afterValues);
	  tmp3.release();
          regApiPtr->theFiredTriggers.release(trigPtr.i);
          regApiPtr->theFiredTriggers.release(trigPtr);
        }
	trigPtr = nextTrigPtr;
      }
+11 −18
Original line number Diff line number Diff line
@@ -469,21 +469,22 @@ typedef Ptr<Fragoperrec> FragoperrecPtr;

  struct Page_request 
  {
    Page_request() {}
    Local_key m_key;
    Uint16 m_estimated_free_space; // in bytes/records
    Uint16 m_list_index; // in Disk_alloc_info.m_page_requests
    Uint32 m_frag_ptr_i;
    Uint32 m_extent_info_ptr;
    Uint16 m_estimated_free_space; // in bytes/records
    Uint16 m_list_index;           // in Disk_alloc_info.m_page_requests
    Uint16 m_ref_count;            // Waiters for page
    Uint16 m_uncommitted_used_space;
    union {
    Uint32 nextList;
      Uint32 nextPool;
    };
    Uint32 prevList;
    Uint32 m_magic;
  }; // 32 bytes
  
  typedef RecordPool<Page_request, WOPool> Page_request_pool;
  typedef DLFifoListImpl<Page_request_pool, Page_request> Page_request_list;
  typedef LocalDLFifoListImpl<Page_request_pool, Page_request> Local_page_request_list;

  STATIC_CONST( EXTENT_SEARCH_MATRIX_COLS = 4 ); // Guarantee size
  STATIC_CONST( EXTENT_SEARCH_MATRIX_ROWS = 5 ); // Total size
  STATIC_CONST( EXTENT_SEARCH_MATRIX_SIZE = 20 );
@@ -518,7 +519,6 @@ typedef Ptr<Fragoperrec> FragoperrecPtr;
  }; // 40 bytes
  
  typedef LocalDLList<Extent_info> Extent_list;
  typedef LocalDLList<Page_request> Page_request_list;

  struct Tablerec;
  struct Disk_alloc_info 
@@ -553,7 +553,7 @@ typedef Ptr<Fragoperrec> FragoperrecPtr;
     * Requests (for update) that have sufficient space left after request
     *   these are currently being "mapped"
     */
    DLList<Page_request>::Head m_page_requests[MAX_FREE_LIST];
    Page_request_list::Head m_page_requests[MAX_FREE_LIST];

    /**
     * Current extent
@@ -1010,7 +1010,7 @@ ArrayPool<TupTriggerData> c_triggerPool;
  };
  
  ArrayPool<Extent_info> c_extent_pool;
  ArrayPool<Page_request> c_page_request_pool;
  Page_request_pool c_page_request_pool;
  DLHashTable<Extent_info> c_extent_hash;

  typedef Ptr<Tablerec> TablerecPtr;
@@ -2609,13 +2609,6 @@ private:
  void disk_page_free(Signal*, 
		      Tablerec*, Fragrecord*, Local_key*, PagePtr, Uint32);
  
  void disk_page_update_free_space(Fragrecord*, Ptr<Page_request>,
				   DLList<Page_request>::Head list[],
				   Uint32 i, Uint32 sz);
  void disk_page_update_free_space(Fragrecord*, PagePtr, Uint32 i,
				   Int32 uncommitted_delta, 
				   Int32 extent_delta);
  
  void disk_page_commit_callback(Signal*, Uint32 opPtrI, Uint32 page_id);  
  
  void disk_page_log_buffer_callback(Signal*, Uint32 opPtrI, Uint32); 
+9 −11
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ Dbtup::dump_disk_alloc(Dbtup::Disk_alloc_info & alloc)
  {
    printf("  %d : ", i);
    Ptr<Page_request> ptr;
    LocalDLList<Page_request> list(c_page_request_pool, 
    Local_page_request_list list(c_page_request_pool, 
				 alloc.m_page_requests[i]);
    for(list.first(ptr); !ptr.isNull(); list.next(ptr))
    {
@@ -388,8 +388,6 @@ Dbtup::disk_page_prealloc(Signal* signal,
    return -err;
  }

  new (req.p) Page_request();

  req.p->m_ref_count= 1;
  req.p->m_frag_ptr_i= fragPtr.i;
  req.p->m_uncommitted_used_space= sz;
@@ -510,7 +508,7 @@ Dbtup::disk_page_prealloc(Signal* signal,
  // And put page request in correct free list
  idx= alloc.calc_page_free_bits(new_size);
  {
    LocalDLList<Page_request> list(c_page_request_pool, 
    Local_page_request_list list(c_page_request_pool, 
				 alloc.m_page_requests[idx]);
    
    list.add(req);
@@ -605,9 +603,9 @@ Dbtup::disk_page_prealloc_transit_page(Disk_alloc_info& alloc,
  
  if (old_idx != new_idx)
  {
    DLList<Page_request>::Head *lists = alloc.m_page_requests;
    LocalDLList<Page_request> old_list(c_page_request_pool, lists[old_idx]);
    LocalDLList<Page_request> new_list(c_page_request_pool, lists[new_idx]);
    Page_request_list::Head *lists = alloc.m_page_requests;
    Local_page_request_list old_list(c_page_request_pool, lists[old_idx]);
    Local_page_request_list new_list(c_page_request_pool, lists[new_idx]);
    old_list.remove(req);
    new_list.add(req);

@@ -761,7 +759,7 @@ Dbtup::disk_page_prealloc_callback_common(Signal* signal,
  }
  
  {
    Page_request_list list(c_page_request_pool, 
    Local_page_request_list list(c_page_request_pool, 
				 alloc.m_page_requests[old_idx]);
    list.release(req);
  }
+4 −1
Original line number Diff line number Diff line
@@ -309,7 +309,10 @@ void Dbtup::execREAD_CONFIG_REQ(Signal* signal)

  c_extent_pool.setSize(8192);
  c_extent_hash.setSize(1024); // 4k
  c_page_request_pool.setSize(1000);
  
  Pool_context pc;
  pc.m_block = this;
  c_page_request_pool.wo_pool_init(RT_DBTUP_PAGE_REQUEST, pc);
  
  Uint32 nScanOp;       // use TUX config for now
  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUX_SCAN_OP, &nScanOp));
+1 −1
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ static BlockInfo ALL_BLOCKS[] = {
static const Uint32 ALL_BLOCKS_SZ = sizeof(ALL_BLOCKS)/sizeof(BlockInfo);

static BlockReference readConfigOrder[ALL_BLOCKS_SZ] = {
  CMVMI_REF,
  DBTUP_REF,
  DBACC_REF,
  DBTC_REF,
@@ -100,7 +101,6 @@ static BlockReference readConfigOrder[ALL_BLOCKS_SZ] = {
  NDBFS_REF,
  NDBCNTR_REF,
  QMGR_REF,
  CMVMI_REF,
  TRIX_REF,
  BACKUP_REF,
  DBUTIL_REF,
Loading