summaryrefslogtreecommitdiff
path: root/storage/ndb/src/kernel/blocks/pgman.cpp
diff options
context:
space:
mode:
authorunknown <tomas@whalegate.ndb.mysql.com>2007-06-18 23:49:30 +0200
committerunknown <tomas@whalegate.ndb.mysql.com>2007-06-18 23:49:30 +0200
commitea8934c505e0d81b6713a4494e1be179a8f7113f (patch)
tree5125a032ac0263d45e8c0b838236b95ca49323b0 /storage/ndb/src/kernel/blocks/pgman.cpp
parent76eb66ead5ee9e598e706e0e9abef1875e935e4b (diff)
parentccb8da8239e392a8bb776358bef4cf2c6beace5d (diff)
downloadmariadb-git-ea8934c505e0d81b6713a4494e1be179a8f7113f.tar.gz
Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-telco-gca
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb storage/ndb/src/kernel/blocks/pgman.cpp: Auto merged
Diffstat (limited to 'storage/ndb/src/kernel/blocks/pgman.cpp')
-rw-r--r--storage/ndb/src/kernel/blocks/pgman.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/storage/ndb/src/kernel/blocks/pgman.cpp b/storage/ndb/src/kernel/blocks/pgman.cpp
index 006673cf011..5e40480f84f 100644
--- a/storage/ndb/src/kernel/blocks/pgman.cpp
+++ b/storage/ndb/src/kernel/blocks/pgman.cpp
@@ -1869,6 +1869,11 @@ Pgman::free_data_file(Uint32 file_no, Uint32 fd)
int
Pgman::drop_page(Ptr<Page_entry> ptr)
{
+#ifdef VM_TRACE
+ debugOut << "PGMAN: drop_page" << endl;
+ debugOut << "PGMAN: " << ptr << endl;
+#endif
+
Page_stack& pl_stack = m_page_stack;
Page_queue& pl_queue = m_page_queue;
@@ -1881,8 +1886,14 @@ Pgman::drop_page(Ptr<Page_entry> ptr)
if (state & Page_entry::ONSTACK)
{
jam();
+ bool at_bottom = ! pl_stack.hasPrev(ptr);
pl_stack.remove(ptr);
state &= ~ Page_entry::ONSTACK;
+ if (at_bottom && (state & Page_entry::HOT))
+ {
+ jam();
+ lirs_stack_prune();
+ }
}
if (state & Page_entry::ONQUEUE)
@@ -2297,6 +2308,13 @@ operator<<(NdbOut& out, Ptr<Pgman::Page_entry> ptr)
out << " busy_count=" << dec << pe.m_busy_count;
#ifdef VM_TRACE
{
+ Pgman::Page_stack& pl_stack = pe.m_this->m_page_stack;
+ if (! pl_stack.hasNext(ptr))
+ out << " top";
+ if (! pl_stack.hasPrev(ptr))
+ out << " bottom";
+ }
+ {
Pgman::Local_page_request_list
req_list(ptr.p->m_this->m_page_request_pool, ptr.p->m_requests);
if (! req_list.isEmpty())