lightnvm: fix locking and mempool in rrpc_lun_gc
authorWenwei Tao <ww.tao0320@gmail.com>
Tue, 12 Jan 2016 06:49:25 +0000 (07:49 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Sep 2016 06:27:40 +0000 (08:27 +0200)
commit651b328d97d2bdf62518093628f765824cb638fd
treeadfd2cecdf4bdbd752840260377088a510fabaec
parentd239b53a14bb9bbe6fa45405af6fa0d86f68a874
lightnvm: fix locking and mempool in rrpc_lun_gc

[ Upstream commit b262924be03d5d2ae735bc9a4b37eb2c613f61f8 ]

This patch fix two issues in rrpc_lun_gc

1. prio_list is protected by rrpc_lun's lock not nvm_lun's, so
acquire rlun's lock instead of lun's before operate on the list.

2. we delete block from prio_list before allocating gcb, but gcb
allocation may fail, we end without putting it back to the list,
this makes the block won't get reclaimed in the future. To solve
this issue, delete block after gcb allocation.

Signed-off-by: Wenwei Tao <ww.tao0320@gmail.com>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/lightnvm/rrpc.c