diff options
author | jonas@eel.(none) <> | 2007-02-21 14:40:15 +0100 |
---|---|---|
committer | jonas@eel.(none) <> | 2007-02-21 14:40:15 +0100 |
commit | be0798a0c3cf1d07ff1021116813ca56e3613847 (patch) | |
tree | 76bae00b033894be13198596614d10738f7da85a /storage | |
parent | 5059ce21435bd27c11628601447d9ff008a72603 (diff) | |
download | mariadb-git-be0798a0c3cf1d07ff1021116813ca56e3613847.tar.gz |
ndb - bug#26487
fix bug in extent/page allocation when *using* >1gb datafiles
Diffstat (limited to 'storage')
-rw-r--r-- | storage/ndb/src/kernel/blocks/tsman.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/storage/ndb/src/kernel/blocks/tsman.cpp b/storage/ndb/src/kernel/blocks/tsman.cpp index 83b662c91be..97fc19cc0aa 100644 --- a/storage/ndb/src/kernel/blocks/tsman.cpp +++ b/storage/ndb/src/kernel/blocks/tsman.cpp @@ -1844,6 +1844,7 @@ Tsman::execALLOC_PAGE_REQ(Signal* signal) ndbrequire(m_file_hash.find(file_ptr, file_key)); struct req val = lookup_extent(req.key.m_page_no, file_ptr.p); + Uint32 page_no_in_extent = calc_page_no_in_extent(req.key.m_page_no, &val); Page_cache_client::Request preq; preq.m_page.m_page_no = val.m_extent_page_no; @@ -1869,7 +1870,6 @@ Tsman::execALLOC_PAGE_REQ(Signal* signal) ndbrequire(header->m_table == req.request.table_id); - Uint32 page_no_in_extent = calc_page_no_in_extent(req.key.m_page_no, &val); Uint32 word = header->get_free_word_offset(page_no_in_extent); Uint32 shift = SZ * (page_no_in_extent & 7); @@ -1929,8 +1929,7 @@ Tsman::execALLOC_PAGE_REQ(Signal* signal) found: header->update_free_bits(page_no, src_bits | UNCOMMITTED_MASK); rep->bits= (src_bits & UNCOMMITTED_MASK) >> UNCOMMITTED_SHIFT; - rep->key.m_page_no= - val.m_extent_pages + val.m_extent_no * val.m_extent_size + page_no; + rep->key.m_page_no = req.key.m_page_no + page_no - page_no_in_extent; rep->reply.errorCode= 0; return; } |