linux_old1/drivers/lightnvm
Javier González 076984669d lightnvm: pblk: verify that cache read is still valid
When a read is directed to the cache, we risk that the lba has been
updated during the time we made the L2P table lookup and the time we are
actually reading form the cache. We intentionally not hold the L2P lock
not to block other threads.

While strict ordering is not a guarantee at this level (unless REQ_FLUSH
has been previously issued), we have experience that some databases that
have recently implemented direct I/O support, issue metadata reads very
close to the writes, without issuing a fsync in the middle. An easy way
to support them while they is to make an extra effort and check the L2P
map right before reading the cache.

Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <matias@cnexlabs.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2017-06-30 11:08:18 -06:00
..
Kconfig lightnvm: physical block device (pblk) target 2017-04-16 10:06:33 -06:00
Makefile lightnvm: physical block device (pblk) target 2017-04-16 10:06:33 -06:00
core.c lightnvm: if LUNs are already allocated fix return 2017-06-27 08:22:09 -06:00
pblk-cache.c lightnvm: pblk: fail gracefully on irrec. error 2017-06-26 16:27:39 -06:00
pblk-core.c lightnvm: pblk: remove target using async. I/Os 2017-06-30 11:08:18 -06:00
pblk-gc.c lightnvm: pblk: use vmalloc for GC data buffer 2017-06-30 11:08:18 -06:00
pblk-init.c lightnvm: pblk: add initialization check 2017-06-30 11:08:18 -06:00
pblk-map.c lightnvm: pblk: fix bad le64 assignations 2017-06-30 11:08:18 -06:00
pblk-rb.c lightnvm: pblk: verify that cache read is still valid 2017-06-30 11:08:18 -06:00
pblk-read.c lightnvm: pblk: verify that cache read is still valid 2017-06-30 11:08:18 -06:00
pblk-recovery.c lightnvm: pblk: remove target using async. I/Os 2017-06-30 11:08:18 -06:00
pblk-rl.c lightnvm: pblk: fail gracefully on irrec. error 2017-06-26 16:27:39 -06:00
pblk-sysfs.c lightnvm: pblk: remove unused return variable 2017-06-30 11:08:18 -06:00
pblk-write.c lightnvm: pblk: remove target using async. I/Os 2017-06-30 11:08:18 -06:00
pblk.h lightnvm: pblk: verify that cache read is still valid 2017-06-30 11:08:18 -06:00
rrpc.c blk: remove bio_set arg from blk_queue_split() 2017-06-18 12:40:59 -06:00
rrpc.h lightnvm: use end_io callback instead of instance 2017-01-31 08:32:13 -07:00