diff options
author | unknown <jani@hynda.mysql.fi> | 2007-06-27 17:49:12 +0300 |
---|---|---|
committer | unknown <jani@hynda.mysql.fi> | 2007-06-27 17:49:12 +0300 |
commit | 5444b55cbbab69a508e6c477a1b9580eff969da1 (patch) | |
tree | eb82a0418f88b83d49bf66dfc659d59862535683 /mysys/mf_keycache.c | |
parent | e34641b3cece714b861c7130f245659342f583ba (diff) | |
parent | 1a96259191b193b353387cbb70d7567009e3b247 (diff) | |
download | mariadb-git-5444b55cbbab69a508e6c477a1b9580eff969da1.tar.gz |
Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1
into hynda.mysql.fi:/home/my/mysql-maria
BitKeeper/etc/ignore:
auto-union
Makefile.am:
Auto merged
BUILD/SETUP.sh:
Auto merged
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
Auto merged
client/mysqldump.c:
Auto merged
include/Makefile.am:
Auto merged
include/m_string.h:
Auto merged
include/my_base.h:
Auto merged
include/my_dbug.h:
Auto merged
libmysql/CMakeLists.txt:
Auto merged
libmysql/Makefile.shared:
Auto merged
libmysqld/Makefile.am:
Auto merged
mysql-test/include/varchar.inc:
Auto merged
mysql-test/lib/mtr_cases.pl:
Auto merged
mysql-test/lib/mtr_io.pl:
Auto merged
mysql-test/lib/mtr_misc.pl:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/lib/mtr_process.pl:
Auto merged
mysql-test/lib/mtr_report.pl:
Auto merged
mysql-test/r/events_logs_tests.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
mysql-test/t/events_logs_tests.test:
Auto merged
mysql-test/t/myisam.test:
Auto merged
mysql-test/t/view.test:
Auto merged
mysys/Makefile.am:
Auto merged
mysys/my_create.c:
Auto merged
mysys/my_handler.c:
Auto merged
mysys/my_init.c:
Auto merged
mysys/my_open.c:
Auto merged
mysys/safemalloc.c:
Auto merged
plugin/daemon_example/daemon_example.cc:
Auto merged
sql/Makefile.am:
Auto merged
sql/filesort.cc:
Auto merged
sql/gen_lex_hash.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/slave.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_test.cc:
Auto merged
sql/udf_example.c:
Auto merged
sql/uniques.cc:
Auto merged
sql/unireg.cc:
Auto merged
storage/csv/ha_tina.cc:
Auto merged
storage/myisam/ft_boolean_search.c:
Auto merged
storage/myisam/ft_nlq_search.c:
Auto merged
storage/myisam/ft_parser.c:
Auto merged
storage/myisam/ft_stopwords.c:
Auto merged
storage/myisam/ft_update.c:
Auto merged
storage/myisam/fulltext.h:
Auto merged
storage/myisam/ha_myisam.h:
Auto merged
storage/myisam/mi_checksum.c:
Auto merged
storage/myisam/mi_create.c:
Auto merged
storage/myisam/mi_delete.c:
Auto merged
storage/myisam/mi_delete_all.c:
Auto merged
storage/myisam/mi_key.c:
Auto merged
storage/myisam/mi_log.c:
Auto merged
storage/myisam/mi_open.c:
Auto merged
storage/myisam/mi_range.c:
Auto merged
storage/myisam/mi_rkey.c:
Auto merged
storage/myisam/mi_rsamepos.c:
Auto merged
storage/myisam/mi_search.c:
Auto merged
storage/myisam/mi_test1.c:
Auto merged
storage/myisam/mi_test2.c:
Auto merged
storage/myisam/mi_unique.c:
Auto merged
storage/myisam/mi_update.c:
Auto merged
storage/myisam/myisamlog.c:
Auto merged
storage/myisam/myisampack.c:
Auto merged
storage/myisam/rt_index.c:
Auto merged
storage/myisam/sort.c:
Auto merged
storage/myisam/sp_test.c:
Auto merged
storage/myisammrg/ha_myisammrg.h:
Auto merged
storage/ndb/src/mgmapi/mgmapi.cpp:
Auto merged
unittest/Makefile.am:
Auto merged
BitKeeper/triggers/post-commit:
Manual merge from mysql-5.1 to mysql-maria
configure.in:
Manual merge from mysql-5.1 to mysql-maria
include/ft_global.h:
Manual merge from mysql-5.1 to mysql-maria
include/keycache.h:
Manual merge from mysql-5.1 to mysql-maria
include/my_atomic.h:
Manual merge from mysql-5.1 to mysql-maria
include/my_global.h:
Manual merge from mysql-5.1 to mysql-maria
include/my_sys.h:
Manual merge from mysql-5.1 to mysql-maria
include/myisam.h:
Manual merge from mysql-5.1 to mysql-maria
mysys/array.c:
Manual merge from mysql-5.1 to mysql-maria
mysys/mf_keycache.c:
Manual merge from mysql-5.1 to mysql-maria
mysys/mf_keycaches.c:
Manual merge from mysql-5.1 to mysql-maria
mysys/my_pread.c:
Manual merge from mysql-5.1 to mysql-maria
sql/mysqld.cc:
Manual merge from mysql-5.1 to mysql-maria
sql/net_serv.cc:
Manual merge from mysql-5.1 to mysql-maria
sql/set_var.cc:
Manual merge from mysql-5.1 to mysql-maria
sql/set_var.h:
Manual merge from mysql-5.1 to mysql-maria
sql/sql_class.h:
Manual merge from mysql-5.1 to mysql-maria
storage/myisam/ft_static.c:
Manual merge from mysql-5.1 to mysql-maria
storage/myisam/ha_myisam.cc:
Manual merge from mysql-5.1 to mysql-maria
storage/myisam/mi_check.c:
Manual merge from mysql-5.1 to mysql-maria
storage/myisam/mi_dynrec.c:
Manual merge from mysql-5.1 to mysql-maria
storage/myisam/mi_packrec.c:
Manual merge from mysql-5.1 to mysql-maria
storage/myisam/mi_write.c:
Manual merge from mysql-5.1 to mysql-maria
storage/myisam/myisamchk.c:
Manual merge from mysql-5.1 to mysql-maria
storage/myisam/myisamdef.h:
Manual merge from mysql-5.1 to mysql-maria
storage/myisammrg/ha_myisammrg.cc:
Manual merge from mysql-5.1 to mysql-maria
unittest/mysys/Makefile.am:
Manual merge from mysql-5.1 to mysql-maria
unittest/mysys/my_atomic-t.c:
Manual merge from mysql-5.1 to mysql-maria
Diffstat (limited to 'mysys/mf_keycache.c')
-rw-r--r-- | mysys/mf_keycache.c | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/mysys/mf_keycache.c b/mysys/mf_keycache.c index 1fef8aac170..6845e63dc33 100644 --- a/mysys/mf_keycache.c +++ b/mysys/mf_keycache.c @@ -105,6 +105,7 @@ #include <keycache.h> #include "my_static.h" #include <m_string.h> +#include <my_bit.h> #include <errno.h> #include <stdarg.h> @@ -1261,12 +1262,12 @@ static void unlink_block(KEY_CACHE *keycache, BLOCK_LINK *block) KEYCACHE_THREAD_TRACE("unlink_block"); #if defined(KEYCACHE_DEBUG) + KEYCACHE_DBUG_ASSERT(keycache->blocks_available != 0); keycache->blocks_available--; KEYCACHE_DBUG_PRINT("unlink_block", ("unlinked block %u status=%x #requests=%u #available=%u", BLOCK_NUMBER(block), block->status, block->requests, keycache->blocks_available)); - KEYCACHE_DBUG_ASSERT(keycache->blocks_available >= 0); #endif } @@ -2359,9 +2360,9 @@ restart: (block->hash_link->diskpos == filepos))); *page_st=page_status; KEYCACHE_DBUG_PRINT("find_key_block", - ("fd: %d pos: %lu block->status: %u page_status: %u", + ("fd: %d pos: %lu block->status: %u page_status: %d", file, (ulong) filepos, block->status, - (uint) page_status)); + page_status)); #if !defined(DBUG_OFF) && defined(EXTRA_DEBUG) DBUG_EXECUTE("check_keycache2", @@ -2512,17 +2513,19 @@ static void read_block(KEY_CACHE *keycache, */ uchar *key_cache_read(KEY_CACHE *keycache, - File file, my_off_t filepos, int level, - uchar *buff, uint length, - uint block_length __attribute__((unused)), - int return_buffer __attribute__((unused))) + File file, my_off_t filepos, int level, + uchar *buff, uint length, + uint block_length __attribute__((unused)), + int return_buffer __attribute__((unused))) { my_bool locked_and_incremented= FALSE; int error=0; uchar *start= buff; DBUG_ENTER("key_cache_read"); - DBUG_PRINT("enter", ("fd: %u pos: %lu length: %u", - (uint) file, (ulong) filepos, length)); + DBUG_PRINT("enter", ("fd: %u pos: %lu page: %lu length: %u", + (uint) file, (ulong) filepos, + (ulong) (filepos / keycache->key_cache_block_size), + length)); if (keycache->key_cache_inited) { @@ -2533,12 +2536,13 @@ uchar *key_cache_read(KEY_CACHE *keycache, uint status; int page_st; - /* + + /* When the key cache is once initialized, we use the cache_lock to reliably distinguish the cases of normal operation, resizing, and disabled cache. We always increment and decrement 'cnt_for_resize_op' so that a resizer can wait for pending I/O. - */ + */ keycache_pthread_mutex_lock(&keycache->cache_lock); /* Cache resizing has two phases: Flushing and re-initializing. In @@ -2565,7 +2569,7 @@ uchar *key_cache_read(KEY_CACHE *keycache, do { /* Cache could be disabled in a later iteration. */ - + if (!keycache->can_be_used) goto no_key_cache; /* Start reading at the beginning of the cache block. */ @@ -2975,9 +2979,10 @@ int key_cache_write(KEY_CACHE *keycache, int error=0; DBUG_ENTER("key_cache_write"); DBUG_PRINT("enter", - ("fd: %u pos: %lu length: %u block_length: %u key_block_length: %u", - (uint) file, (ulong) filepos, length, block_length, - keycache ? keycache->key_cache_block_size : 0)); + ("fd: %u pos: %lu page: %lu length: %u block_length: %u", + (uint) file, (ulong) filepos, + (ulong) (filepos / keycache->key_cache_block_size), + length, block_length)); if (!dont_write) { @@ -3169,7 +3174,7 @@ int key_cache_write(KEY_CACHE *keycache, if (!dont_write) { - /* Not used in the server. buff has been written to disk at start. */ + /* Not used in the server. buff has been written to disk at start. */ if ((block->status & BLOCK_CHANGED) && (!offset && read_length >= keycache->key_cache_block_size)) link_to_file_list(keycache, block, block->hash_link->file, 1); @@ -3183,7 +3188,6 @@ int key_cache_write(KEY_CACHE *keycache, a flush. */ block->status&= ~BLOCK_FOR_UPDATE; - set_if_smaller(block->offset, offset); set_if_bigger(block->length, read_length+offset); |