summaryrefslogtreecommitdiff
path: root/storage/maria/ma_preload.c
diff options
context:
space:
mode:
authorunknown <bell@desktop.sanja.is.com.ua>2007-04-16 13:19:43 +0300
committerunknown <bell@desktop.sanja.is.com.ua>2007-04-16 13:19:43 +0300
commite10fe77b0ac9a43ad795555c65391318ff7cc968 (patch)
treee2ed09433088190ae567be9a0e523defae042456 /storage/maria/ma_preload.c
parent1bf0ed775431a5142e846e23330228468dcf140b (diff)
parent39d64a1d2565b09307d11b2a665f3f2c6bc8106e (diff)
downloadmariadb-git-e10fe77b0ac9a43ad795555c65391318ff7cc968.tar.gz
Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria.bak
into desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-test include/maria.h: Auto merged mysys/Makefile.am: Auto merged mysys/mf_keycaches.c: Auto merged sql/handler.h: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/set_var.h: Auto merged storage/maria/Makefile.am: Auto merged storage/maria/ha_maria.cc: Auto merged storage/maria/ma_bitmap.c: Auto merged storage/maria/ma_check.c: Auto merged storage/maria/ma_close.c: Auto merged storage/maria/ma_dynrec.c: Auto merged storage/maria/ma_extra.c: Auto merged storage/maria/ma_info.c: Auto merged storage/maria/ma_keycache.c: Auto merged storage/maria/ma_locking.c: Auto merged storage/maria/ma_loghandler.c: Auto merged storage/maria/ma_open.c: Auto merged storage/maria/ma_packrec.c: Auto merged storage/maria/ma_page.c: Auto merged storage/maria/ma_pagecache.c: Auto merged storage/maria/ma_panic.c: Auto merged storage/maria/ma_preload.c: Auto merged storage/maria/ma_static.c: Auto merged storage/maria/ma_test1.c: Auto merged storage/maria/ma_test2.c: Auto merged storage/maria/ma_test3.c: Auto merged storage/maria/ma_write.c: Auto merged storage/maria/maria_chk.c: Auto merged storage/maria/maria_def.h: Auto merged storage/maria/maria_ftdump.c: Auto merged storage/maria/maria_pack.c: Auto merged sql/handler.cc: merge storage/maria/ma_blockrec.c: merge storage/maria/ma_delete_all.c: merge
Diffstat (limited to 'storage/maria/ma_preload.c')
-rw-r--r--storage/maria/ma_preload.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/storage/maria/ma_preload.c b/storage/maria/ma_preload.c
index 4b2df2bbf17..fc818b5b277 100644
--- a/storage/maria/ma_preload.c
+++ b/storage/maria/ma_preload.c
@@ -68,7 +68,7 @@ int maria_preload(MARIA_HA *info, ulonglong key_map, my_bool ignore_leaves)
if (!(buff= (uchar *) my_malloc(length, MYF(MY_WME))))
DBUG_RETURN(my_errno= HA_ERR_OUT_OF_MEM);
- if (flush_key_blocks(share->key_cache,share->kfile, FLUSH_RELEASE))
+ if (flush_pagecache_blocks(share->pagecache, &share->kfile, FLUSH_RELEASE))
goto err;
do
@@ -76,7 +76,8 @@ int maria_preload(MARIA_HA *info, ulonglong key_map, my_bool ignore_leaves)
/* Read the next block of index file into the preload buffer */
if ((my_off_t) length > (key_file_length-pos))
length= (ulong) (key_file_length-pos);
- if (my_pread(share->kfile, (byte*) buff, length, pos, MYF(MY_FAE|MY_FNABP)))
+ if (my_pread(share->kfile.file, (byte*) buff, length, pos,
+ MYF(MY_FAE|MY_FNABP)))
goto err;
if (ignore_leaves)
@@ -86,9 +87,15 @@ int maria_preload(MARIA_HA *info, ulonglong key_map, my_bool ignore_leaves)
{
if (_ma_test_if_nod(buff))
{
- if (key_cache_insert(share->key_cache,
- share->kfile, pos, DFLT_INIT_HITS,
- (byte*) buff, block_length))
+ DBUG_ASSERT(share->pagecache->block_size == block_length);
+ if (pagecache_write(share->pagecache,
+ &share->kfile, pos / block_length,
+ DFLT_INIT_HITS,
+ (byte*) buff,
+ PAGECACHE_PLAIN_PAGE,
+ PAGECACHE_LOCK_LEFT_UNLOCKED,
+ PAGECACHE_PIN_LEFT_PINNED,
+ PAGECACHE_WRITE_DONE, 0))
goto err;
}
pos+= block_length;
@@ -98,9 +105,14 @@ int maria_preload(MARIA_HA *info, ulonglong key_map, my_bool ignore_leaves)
}
else
{
- if (key_cache_insert(share->key_cache,
- share->kfile, pos, DFLT_INIT_HITS,
- (byte*) buff, length))
+ if (pagecache_write(share->pagecache,
+ &share->kfile, pos / block_length,
+ DFLT_INIT_HITS,
+ (byte*) buff,
+ PAGECACHE_PLAIN_PAGE,
+ PAGECACHE_LOCK_LEFT_UNLOCKED,
+ PAGECACHE_PIN_LEFT_PINNED,
+ PAGECACHE_WRITE_DONE, 0))
goto err;
pos+= length;
}