Spdk/lib/bdev
Jim Harris c899854d03 bdev: add new fini_start notification callback for modules
When an SPDK application shuts down, the bdev layer will
automatically unregister all of the bdevs to ensure they
are properly quiesced and cleaned up.

Some modules may want to perform different operations when
a bdev is destructed during normal runtime vs. shutdown.
For example, for lvol, when the last lvol is cleaned up,
it should unload the lvolstore, release and close the bdev
that contains the lvolstore.  You never want to do this
during normal runtime though - it is perfectly valid to
have an lvolstore that contains no lvols.  RAID and future
bdev modules such as multipath have similar use cases.

So add a new bdev module callback named "fini_start".
If a module specifies a function pointer for this callback,
the bdev layer will call it before it starts the bdev
unregistrations.

This enables some future patches to the bdev layer such
that it will always unregister block devices that are not
claimed (i.e. logical volumes) before block devices that
are claimed (i.e. the bdev containing an lvolstore).

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I6e87f5c2b27f16731ea5def858f26e882a29495a

Reviewed-on: https://review.gerrithub.io/421175
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2018-08-15 23:32:04 +00:00
..
aio bdev/aio: Add the epoll support 2018-08-14 04:10:36 +00:00
error bdev: split examine into two parts 2018-07-06 21:12:53 +00:00
gpt bdev: split examine into two parts 2018-07-06 21:12:53 +00:00
iscsi bdev/iscsi: unregister io_device on bdev destruction 2018-07-27 18:58:53 +00:00
lvol bdev/lvol: vbdev_lvol_destroy(): no need to del alias 2018-08-15 01:37:45 +00:00
malloc bdev/malloc: remove blocklen power of 2 restriction 2018-08-15 17:36:00 +00:00
null bdev/null: free global resources on module finish 2018-07-30 15:38:07 +00:00
nvme bdev/nvme: detect Controller Fatal Status when timeout happens 2018-08-08 17:35:18 +00:00
passthru bdev: split examine into two parts 2018-07-06 21:12:53 +00:00
pmem bdev: add delete_pmem_bdev call 2018-07-02 22:53:18 +00:00
raid bdev/raid: Consolidate transition to offline when raid bdev configure failed 2018-08-07 18:26:28 +00:00
rbd bdev/rbd: change the poller to timer poller 2018-07-03 16:40:18 +00:00
rpc bdev: add tracking for time spent processing I/O. 2018-07-31 23:26:07 +00:00
split bdev: split examine into two parts 2018-07-06 21:12:53 +00:00
virtio bdev/virtio_blk: defer bdev destruct completion 2018-07-31 01:13:07 +00:00
bdev.c bdev: add new fini_start notification callback for modules 2018-08-15 23:32:04 +00:00
Makefile bdev: add raid bdev module 2018-07-16 20:50:40 +00:00
part.c bdev: remove public usage of bdev_part_base.ref 2018-07-05 19:12:53 +00:00
scsi_nvme.c bdev: move error union to internal spdk_bdev_io struct 2018-06-26 20:04:07 +00:00
vtune.c bdev: disable new GCC 7 warning in VTune code 2018-03-19 15:58:15 -04:00