diff options
author | unknown <bell@desktop.sanja.is.com.ua> | 2007-07-03 01:19:26 +0300 |
---|---|---|
committer | unknown <bell@desktop.sanja.is.com.ua> | 2007-07-03 01:19:26 +0300 |
commit | bca70f9f6ec10290a414c683eeecb612dda144f9 (patch) | |
tree | cb1addf35937c99e1b7de5fb00f8e0dc14512744 /storage | |
parent | ef7a757b7c09f65207e6f30619a32533c27f400f (diff) | |
download | mariadb-git-bca70f9f6ec10290a414c683eeecb612dda144f9.tar.gz |
Mark the page dirty if we store LSN on it.
New type of page in the page cache fixes.
storage/maria/ma_pagecache.c:
Mark the page dirty if we store LSN on it.
Symbolic representation of new page type added (for debugging output).
Asserts added (unknown type can't be used if we write the page).
Diffstat (limited to 'storage')
-rwxr-xr-x | storage/maria/ma_pagecache.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/storage/maria/ma_pagecache.c b/storage/maria/ma_pagecache.c index 05173eddf46..bf66a8fd088 100755 --- a/storage/maria/ma_pagecache.c +++ b/storage/maria/ma_pagecache.c @@ -177,7 +177,8 @@ static const char *page_cache_page_type_str[]= /* used only for control page type changing during debugging */ "EMPTY", "PLAIN", - "LSN" + "LSN", + "READ_UNKNOWN" }; static const char *page_cache_page_write_mode_str[]= @@ -584,6 +585,7 @@ static uint pagecache_fwrite(PAGECACHE *pagecache, myf flags) { DBUG_ENTER("pagecache_fwrite"); + DBUG_ASSERT(type != PAGECACHE_READ_UNKNOWN_PAGE); if (type == PAGECACHE_LSN_PAGE) { LSN lsn; @@ -2457,7 +2459,12 @@ static void check_and_set_lsn(LSN lsn, PAGECACHE_BLOCK_LINK *block) (ulong)LSN_FILE_NO(old), (ulong)LSN_OFFSET(old), (ulong)LSN_FILE_NO(lsn), (ulong)LSN_OFFSET(lsn))); if (cmp_translog_addr(lsn, old) > 0) + { + + DBUG_ASSERT(block->type != PAGECACHE_READ_UNKNOWN_PAGE); lsn_store(block->buffer + PAGE_LSN_OFFSET, lsn); + block->status|= PCBLOCK_CHANGED; + } DBUG_VOID_RETURN; } @@ -3179,6 +3186,7 @@ my_bool pagecache_write_part(PAGECACHE *pagecache, page_cache_page_pin_str[pin], page_cache_page_write_mode_str[write_mode], offset, size)); + DBUG_ASSERT(type != PAGECACHE_READ_UNKNOWN_PAGE); DBUG_ASSERT(lock != PAGECACHE_LOCK_LEFT_READLOCKED); DBUG_ASSERT(lock != PAGECACHE_LOCK_READ_UNLOCK); DBUG_ASSERT(offset + size <= pagecache->block_size); |