summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorjonas@eel.(none) <>2007-02-21 14:40:15 +0100
committerjonas@eel.(none) <>2007-02-21 14:40:15 +0100
commitbe0798a0c3cf1d07ff1021116813ca56e3613847 (patch)
tree76bae00b033894be13198596614d10738f7da85a /storage
parent5059ce21435bd27c11628601447d9ff008a72603 (diff)
downloadmariadb-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.cpp5
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;
}