Spdk/test
Tomasz Zawadzki d2dd47433b bdev/lvol: remove lvs with lvols during application shutdown
Once bdev finish starts, bdev unregister is called on all
unclaimed bdevs. This means that for lvs with at least one
lvol present, there will be a corresponding bdev unregister.

Yet the vbdev_lvol module does not attempt to unload the lvs,
once last lvol from that lvs is unregistered. Leaving
the base bdev for lvs claimed.

This patch fixes that by using fini_start callback from
bdev_module to mark when shutdown begins. After that
last lvol unregistered on lvs will unload it.

Expanded struct lvol_bdev to contain lvol_store_bdev.
Closing the lvol will free spdk_lvol, so lvol->lvol_store cannot
be accessed.

Changed ut_lvol_destroy UT to ut_bdev_finish. Previous UT didn't
really test vbdev_lvol_destroy, but 'hotremove' of the lvol bdev.
In effect there is no hotremove of the lvol bdevs (only lvs bdev).
spdk_bdev_unregister() can only be called from within vbdev_lvol,
or during bdev module finish.
This UT will now check the bdev module finish.

Note that at this point lvs with no lvols will not trigger
lvs unload. Next patches in series will introduce async fini_start,
to allow for the unload.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I8f51e8c1fcfdc55a5d090a3bc84ccefda813aef8
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9093
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
2021-08-20 07:27:58 +00:00
..
accel_engine accel_engine test: Add the test case for accel_engine. 2021-01-21 15:49:40 +00:00
app nvme: Add spdk_nvme_detach_poll() to simplify a common use case 2021-06-30 22:54:19 +00:00
bdev bdevperf: use uint64_t to save per-job length 2021-08-20 07:27:09 +00:00
blobfs event: Shift subsystem initialization code to a separate library 2021-05-24 10:12:50 +00:00
blobstore scheduler: Change main core frequency dynamically 2021-01-22 18:31:25 +00:00
common build: don't put out-of-tree ocf build in build/ dir 2021-08-17 08:54:30 +00:00
compress test/nvmf: use recommended nvmf_create_subsystem rpc 2021-05-20 15:00:22 +00:00
config_converter scripts/config_converter: skip sections not present in legacy config 2021-01-15 08:32:10 +00:00
cpp_headers queue_extras: use SPDK_CONTAINEROF 2019-10-07 15:06:01 +00:00
dd autotest: Run dd tests under SPDK_TEST_URING 2021-05-20 15:15:33 +00:00
dpdk_memory_utility check_format: Ignore shellcheck's SC2128 and SC2178 directives 2021-06-30 22:43:05 +00:00
env test/env_dpdk_post_init: Use spdk_nvme_detach_async() 2021-06-30 22:54:19 +00:00
event test/scheduler: make activity of a thread % of time period 2021-07-12 21:58:56 +00:00
external_code nvme: Rename cmic.multi_host by cmic.multi_ctrlr of spdk_nvme_ctrlr_data 2021-07-13 08:57:33 +00:00
ftl test/ftl: Remove dead code 2021-07-30 08:21:32 +00:00
fuzz test/iscsi: remove VPP tests 2020-08-17 08:19:46 +00:00
interrupt test/intr: correct without-thread situation 2021-07-30 08:21:43 +00:00
ioat build: Example applications build to build/example 2020-06-15 15:27:16 +00:00
iscsi_tgt iscsi_tgt/rpc_config: Give some extra time for the process to die 2021-07-29 07:03:01 +00:00
json_config rpc: update a method create_pmem_pool 2021-07-13 08:58:21 +00:00
lvol test/lvol: rename lvol test script 2020-10-20 08:54:53 +00:00
make build: don't put out-of-tree ocf build in build/ dir 2021-08-17 08:54:30 +00:00
nvme markdownlint: enable rule MD013 - line_length 2021-08-05 07:42:35 +00:00
nvmf test/nvmf: Wait for net devices after they are moved from extra netns 2021-08-13 07:20:50 +00:00
ocf check_format: Fixes for shellcheck's SC2251 directive 2021-06-30 22:43:05 +00:00
openstack test/openstack: Enable securitygroup driver in neutron 2021-07-09 19:19:48 +00:00
pmem build: Output executables from the app directory to build/bin 2020-06-15 15:27:16 +00:00
rpc autotest: Use rpc_cmd() for rpc plugin-based tests 2021-04-02 08:22:42 +00:00
rpc_client build: use DEPDIRS variables to build SPDK_LIB_LIST 2020-12-18 09:40:01 +00:00
rpc_plugins autotest: Use rpc_cmd() for rpc plugin-based tests 2021-04-02 08:22:42 +00:00
scheduler test/scheduler: Check if load on all working CPUs is under 80% 2021-07-19 08:05:19 +00:00
setup test/setup: Ignore atari partition table 2021-08-12 12:56:59 +00:00
spdkcli autotest: Don't override default amount of hugepages on Linux to 8GB 2021-06-24 17:33:10 +00:00
unit bdev/lvol: remove lvs with lvols during application shutdown 2021-08-20 07:27:58 +00:00
vhost test/vhost: Don't decompress vhost image each time vhosttestinit() is called 2021-08-05 07:42:53 +00:00
vmd test: replace VMD_WHITELIST with VMD_ALLOWED 2020-12-03 09:41:07 +00:00
Makefile build: add option to disable building unit tests 2020-03-10 09:12:21 +00:00
spdk_cunit.h test: remove leftover spdk_cunit declaration 2018-07-06 22:47:56 +00:00