Commit f0fc6729 authored by unknown's avatar unknown

logging_ok:

  Logging to logging@openlogging.org accepted
mf_keycache.c:
  Fixed a deadlock when reading from an index file fails.


mysys/mf_keycache.c:
  Fixed a deadlock when reading from an index file fails.
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
parent 9f22d166
...@@ -31,6 +31,7 @@ hf@bisonxp.(none) ...@@ -31,6 +31,7 @@ hf@bisonxp.(none)
hf@deer.mysql.r18.ru hf@deer.mysql.r18.ru
hf@genie.(none) hf@genie.(none)
igor@hundin.mysql.fi igor@hundin.mysql.fi
igor@rurik.mysql.com
jani@dsl-jkl1657.dial.inet.fi jani@dsl-jkl1657.dial.inet.fi
jani@dsl-kpogw4gb5.dial.inet.fi jani@dsl-kpogw4gb5.dial.inet.fi
jani@hynda.(none) jani@hynda.(none)
......
...@@ -826,7 +826,7 @@ restart: ...@@ -826,7 +826,7 @@ restart:
(uint) hash_link->file,(ulong) hash_link->diskpos)); (uint) hash_link->file,(ulong) hash_link->diskpos));
} }
} }
KEYCACHE_DBUG_ASSERT(n <= my_hash_links_used); KEYCACHE_DBUG_ASSERT(cnt <= my_hash_links_used);
#endif #endif
} }
if (! hash_link) if (! hash_link)
...@@ -1063,6 +1063,9 @@ restart: ...@@ -1063,6 +1063,9 @@ restart:
KEYCACHE_DBUG_ASSERT(page_status != -1); KEYCACHE_DBUG_ASSERT(page_status != -1);
*page_st=page_status; *page_st=page_status;
KEYCACHE_DBUG_PRINT("find_key_block",
("file %u, filepos %lu, page_status %lu",
(uint) file,(ulong) filepos,(uint) page_status));
#if !defined(DBUG_OFF) && defined(EXTRA_DEBUG) #if !defined(DBUG_OFF) && defined(EXTRA_DEBUG)
DBUG_EXECUTE("check_keycache2",test_key_cache("end of find_key_block",0);); DBUG_EXECUTE("check_keycache2",test_key_cache("end of find_key_block",0););
...@@ -1181,7 +1184,7 @@ byte *key_cache_read(File file, my_off_t filepos, byte *buff, uint length, ...@@ -1181,7 +1184,7 @@ byte *key_cache_read(File file, my_off_t filepos, byte *buff, uint length,
keycache_pthread_mutex_lock(&THR_LOCK_keycache); keycache_pthread_mutex_lock(&THR_LOCK_keycache);
my_cache_r_requests++; my_cache_r_requests++;
block=find_key_block(file,filepos,0,&page_st); block=find_key_block(file,filepos,0,&page_st);
if (page_st != PAGE_READ) if (block->status != BLOCK_ERROR && page_st != PAGE_READ)
{ {
/* The requested page is to be read into the block buffer */ /* The requested page is to be read into the block buffer */
read_block(block,key_cache_block_size,read_length+offset, read_block(block,key_cache_block_size,read_length+offset,
...@@ -1303,7 +1306,7 @@ int key_cache_write(File file, my_off_t filepos, byte *buff, uint length, ...@@ -1303,7 +1306,7 @@ int key_cache_write(File file, my_off_t filepos, byte *buff, uint length,
keycache_pthread_mutex_lock(&THR_LOCK_keycache); keycache_pthread_mutex_lock(&THR_LOCK_keycache);
my_cache_w_requests++; my_cache_w_requests++;
block=find_key_block(file, filepos, 1, &page_st); block=find_key_block(file, filepos, 1, &page_st);
if (page_st != PAGE_READ && if (block->status != BLOCK_ERROR && page_st != PAGE_READ &&
(offset || read_length < key_cache_block_size)) (offset || read_length < key_cache_block_size))
read_block(block, read_block(block,
offset + read_length >= key_cache_block_size? offset + read_length >= key_cache_block_size?
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment