Commit 3943b040 authored by Shan Hai's avatar Shan Hai Committed by Jens Axboe

bcache: release dc->writeback_lock properly in bch_writeback_thread()

The writeback thread would exit with a lock held when the cache device
is detached via sysfs interface, fix it by releasing the held lock
before exiting the while-loop.

Fixes: fadd94e0 (bcache: quit dc->writeback_thread when BCACHE_DEV_DETACHING is set)
Signed-off-by: default avatarShan Hai <shan.hai@oracle.com>
Signed-off-by: default avatarColy Li <colyli@suse.de>
Tested-by: default avatarShenghui Wang <shhuiw@foxmail.com>
Cc: stable@vger.kernel.org #4.17+
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 5bed49ad
...@@ -685,9 +685,11 @@ static int bch_writeback_thread(void *arg) ...@@ -685,9 +685,11 @@ static int bch_writeback_thread(void *arg)
* data on cache. BCACHE_DEV_DETACHING flag is set in * data on cache. BCACHE_DEV_DETACHING flag is set in
* bch_cached_dev_detach(). * bch_cached_dev_detach().
*/ */
if (test_bit(BCACHE_DEV_DETACHING, &dc->disk.flags)) if (test_bit(BCACHE_DEV_DETACHING, &dc->disk.flags)) {
up_write(&dc->writeback_lock);
break; break;
} }
}
up_write(&dc->writeback_lock); up_write(&dc->writeback_lock);
......
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