Commit 8dc87e3e authored by Guilhem Bichot's avatar Guilhem Bichot

WL#4595 "Maria - no write-lock when pinning bitmap pages": turns out that page cache

already supports pin-without-lock so implementation of this WL is instant and
done here. This could improve concurrency. No testcase, this requires
multiple threads and is automatically tested at push time by maria_stress.yy (pushbuild2).

storage/maria/ma_bitmap.c:
  As the page cache supports pinning without write-locking, we don't take write lock
  in write_changed_bitmap(), only a pin; this could improve concurrency (WL#4595).
parent ed567bd2
...@@ -167,10 +167,10 @@ static inline my_bool write_changed_bitmap(MARIA_SHARE *share, ...@@ -167,10 +167,10 @@ static inline my_bool write_changed_bitmap(MARIA_SHARE *share,
int res= pagecache_write(share->pagecache, int res= pagecache_write(share->pagecache,
&bitmap->file, bitmap->page, 0, &bitmap->file, bitmap->page, 0,
(uchar*) bitmap->map, PAGECACHE_PLAIN_PAGE, (uchar*) bitmap->map, PAGECACHE_PLAIN_PAGE,
PAGECACHE_LOCK_WRITE, PAGECACHE_PIN, PAGECACHE_LOCK_LEFT_UNLOCKED, PAGECACHE_PIN,
PAGECACHE_WRITE_DELAY, &page_link.link, PAGECACHE_WRITE_DELAY, &page_link.link,
LSN_IMPOSSIBLE); LSN_IMPOSSIBLE);
page_link.unlock= PAGECACHE_LOCK_WRITE_UNLOCK; page_link.unlock= PAGECACHE_LOCK_LEFT_UNLOCKED;
page_link.changed= 1; page_link.changed= 1;
push_dynamic(&bitmap->pinned_pages, (void*) &page_link); push_dynamic(&bitmap->pinned_pages, (void*) &page_link);
DBUG_RETURN(res); DBUG_RETURN(res);
......
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