aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/lightnvm/rrpc.h
diff options
context:
space:
mode:
authorMatias Bjørling <m@bjorling.me>2016-07-07 09:54:20 +0200
committerJens Axboe <axboe@fb.com>2016-07-07 08:51:52 -0600
commit855cdd2c0bff7dcf9337734dc5749d127ca05086 (patch)
tree6c08bd87536747d8016248272f607316689b147c /drivers/lightnvm/rrpc.h
parentlightnvm: remove _unlocked variant of [get/put]_blk (diff)
downloadlinux-dev-855cdd2c0bff7dcf9337734dc5749d127ca05086.tar.xz
linux-dev-855cdd2c0bff7dcf9337734dc5749d127ca05086.zip
lightnvm: make rrpc_map_page call nvm_get_blk outside locks
The nvm_get_blk() function is called with rlun->lock held. This is ok when the media manager implementation doesn't go out of its atomic context. However, if a media manager persists its metadata, and guarantees that the block is given to the target, this is no longer a viable approach. Therefore, clean up the flow of rrpc_map_page, and make sure that nvm_get_blk() is called without any locks acquired. Signed-off-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/lightnvm/rrpc.h')
-rw-r--r--drivers/lightnvm/rrpc.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/lightnvm/rrpc.h b/drivers/lightnvm/rrpc.h
index 448e39a9c515..5e87d52cb983 100644
--- a/drivers/lightnvm/rrpc.h
+++ b/drivers/lightnvm/rrpc.h
@@ -76,6 +76,7 @@ struct rrpc_lun {
struct rrpc_block *blocks; /* Reference to block allocation */
struct list_head prio_list; /* Blocks that may be GC'ed */
+ struct list_head wblk_list; /* Queued blocks to be written to */
struct work_struct ws_gc;