Spdk/test
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
..
app test: add a fuzzer for the vhost API 2019-07-08 09:18:19 +00:00
bdev test/bdevio: present info when RPC lib is missing from PYTHONPATH 2019-07-12 07:44:34 +00:00
blobfs test/rocksdb: remove run_tests.sh 2019-07-05 12:13:16 +00:00
blobstore test: remove duplicated set -ex from tests 2019-06-19 03:54:58 +00:00
common net/vpp: fix vpp 19.01 installation on fedora 29/30 2019-07-12 07:48:09 +00:00
config_converter iscsi: Deprecate MinConnectionsPerCore 2019-05-06 17:10:48 +00:00
cpp_headers Makefile: Add possibility to uninstall spdk. 2019-05-16 20:56:18 +00:00
env test/nvme: Allow NVMe with 0 namespaces in tests 2019-07-08 09:39:09 +00:00
event notify: add notification library 2019-03-29 21:15:14 +00:00
ftl lib/ftl: Expand restore tests 2019-06-26 07:09:00 +00:00
ioat test: remove duplicated set -ex from tests 2019-06-19 03:54:58 +00:00
iscsi_tgt test/iscsi: check iscsiadm to set DataDigest 2019-07-12 12:26:30 +00:00
json_config scripts: replace egrep with grep -E 2019-07-05 12:06:10 +00:00
lvol test/lvol: Check if snapshot with snapshot can be deleted 2019-07-12 08:26:04 +00:00
nvme test/nvme: Don't fail test for NVMe with no namespaces 2019-07-12 07:36:21 +00:00
nvmf test/nvmf: remove extra call to perf. 2019-07-09 13:23:03 +00:00
ocf test/ocf: disable persistent metadata test 2019-06-11 18:16:55 +00:00
pmem test/pmem: cleanup common.sh 2019-06-19 03:54:58 +00:00
rpc_client test: remove duplicated set -ex from tests 2019-06-19 03:54:58 +00:00
spdkcli spdkcli/test: remove unnecessary test output 2019-07-10 06:54:58 +00:00
unit lib/ftl: keep reloc traffic out of non-volatile cache 2019-07-12 12:39:38 +00:00
vhost test/vhost: Use whichever qemu is installed on the system 2019-07-11 11:31:21 +00:00
Makefile jsonrpc-client: add new C client library 2018-10-11 20:07:44 +00:00
spdk_cunit.h test: remove leftover spdk_cunit declaration 2018-07-06 22:47:56 +00:00