Spdk/test/unit/lib
Konrad Sztyber 0f0af48009 lib/ftl: keep reloc traffic out of non-volatile cache
Moving data from one band to the other doesn't need to be stored on the
non-volatile cache. Not only does it add unnecessary traffic to the
cache (wearing it out and reducing its throughput), but it requires us
to synchronize it with user writes to the same LBAs.

To avoid all that, this patch adds the FTL_IO_BYPASS_CACHE flag to all
writes coming from the reloc module. However, to be sure that the moved
data is stored on disk and can be restored in case of power loss, we
need to make sure that each free band have all of its data moved to a
closed band before it can be erased. It's done by keeping track of the
number of outstanding IOs moving data from particular band
(num_reloc_blocks), as well as the number of open bands that contains
data from this band (num_reloc_bands). Only when both of these are at
zero and the band has zero valid blocks it can be erased.

Change-Id: I7c106011ffc9685eb8e5ff497919237a305e4478
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/458101
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Mateusz Kozlowski <mateusz.kozlowski@intel.com>
Reviewed-by: Wojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-07-12 12:39:38 +00:00
..
bdev bdev/crypto: add IO queueing for out of mem condition via bdev layer 2019-07-08 09:24:29 +00:00
blob lib/blob: do not allow xattr to exceed maximum descriptor length 2019-07-11 10:05:41 +00:00
blobfs UT/blobfs: add asynchronous Writev/Readv unit tests 2019-06-28 09:50:50 +00:00
event event: No longer require event in spdk_subsystem_fini 2019-03-08 03:21:45 +00:00
ftl lib/ftl: keep reloc traffic out of non-volatile cache 2019-07-12 12:39:38 +00:00
ioat test/unit: remove duplicate mk/spdk.common.mk includes 2019-02-11 09:30:27 +00:00
iscsi iscsi: Assign not pointer but instance of spdk_cpuset in struct spdk_iscsi_portal_grp 2019-07-04 00:30:22 +00:00
json json: add utilities function enabling itaration over JSON object 2018-10-18 16:07:37 +00:00
jsonrpc jsonrpc: fix received JSON buffer overwrite 2019-01-10 14:31:37 +00:00
log log: passing user-defined log 2019-06-18 03:56:50 +00:00
lvol ut/lvol: fixed scan-build error on spdk_bs_init 2019-07-01 13:08:33 +00:00
notify lib/notify: rename spdk_notify_get_events to spdk_notify_foreach_event 2019-05-07 06:11:27 +00:00
nvme nvme/tcp: Support extended LBA payload in nvme_tcp_build_iovs 2019-07-08 03:33:07 +00:00
nvmf UT/nvmf: add set/get features with persistent reservation tests 2019-07-12 02:09:20 +00:00
reduce ut/reduce: use compress algorithm 2019-04-02 21:40:21 +00:00
scsi scsi_bdev_ut: add SPDK_CU_ASSERT_FATAL before put task. 2019-06-27 12:09:56 +00:00
sock sock: update spdk_sock_group_add_sock 2019-07-04 08:21:05 +00:00
thread thread: Add a mechanism to exit a lightweight thread 2019-05-22 04:23:17 +00:00
util dif: Add spdk_dix_remap_ref_tag to remap ref. tag for separate metadata payload 2019-07-11 11:14:22 +00:00
vhost vhost: operate on poll groups instead of lcores 2019-07-01 12:50:57 +00:00
json_mock.c subsystem: add per module configuration dump 2018-03-23 02:47:40 -04:00
Makefile bdev/nvme: always enable FTL 2019-05-02 08:41:56 +00:00