Commit d40f3fc3 authored by Guilhem Bichot's avatar Guilhem Bichot

calling make_lock_and_pin() without cache's mutex is wrong (patch from Sanja).

storage/maria/ma_pagecache.c:
  calling make_lock_and_pin() without cache's mutex is wrong (patch from Sanja)
parent 8b87da7f
...@@ -2943,15 +2943,16 @@ void pagecache_unlock_by_link(PAGECACHE *pagecache, ...@@ -2943,15 +2943,16 @@ void pagecache_unlock_by_link(PAGECACHE *pagecache,
DBUG_ASSERT(pin != PAGECACHE_PIN_LEFT_UNPINNED); DBUG_ASSERT(pin != PAGECACHE_PIN_LEFT_UNPINNED);
DBUG_ASSERT(lock != PAGECACHE_LOCK_READ); DBUG_ASSERT(lock != PAGECACHE_LOCK_READ);
DBUG_ASSERT(lock != PAGECACHE_LOCK_WRITE); DBUG_ASSERT(lock != PAGECACHE_LOCK_WRITE);
pagecache_pthread_mutex_lock(&pagecache->cache_lock);
if (pin == PAGECACHE_PIN_LEFT_UNPINNED && if (pin == PAGECACHE_PIN_LEFT_UNPINNED &&
lock == PAGECACHE_LOCK_READ_UNLOCK) lock == PAGECACHE_LOCK_READ_UNLOCK)
{ {
if (make_lock_and_pin(pagecache, block, lock, pin, FALSE)) if (make_lock_and_pin(pagecache, block, lock, pin, FALSE))
DBUG_ASSERT(0); /* should not happend */ DBUG_ASSERT(0); /* should not happend */
pagecache_pthread_mutex_unlock(&pagecache->cache_lock);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
pagecache_pthread_mutex_lock(&pagecache->cache_lock);
/* /*
As soon as we keep lock cache can be used, and we have lock because want As soon as we keep lock cache can be used, and we have lock because want
unlock. unlock.
......
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