lib/bdev: delay bdev_register notification til after examine
"bdev_register" notification was sent right when register happened, which was misleading for any listener. Action on the registered bdev might not have been possible when examine took longer time. Order of bdev_register notifications in json_config test was modified, because they are being sent out as pollers for the spdk_bdev_wait_for_examine() are being processed. This is only because pollers are inserted at the tail, and processed from the tail as well. Order of notifications should not matter, as long as bdevs are ready for use. Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I45b769f184b386df2daa4152ee766636ef0668ad Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5213 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
e57bb1afb8
commit
95d8e7a683
@ -5486,6 +5486,14 @@ bdev_fini(struct spdk_bdev *bdev)
|
||||
spdk_io_device_unregister(__bdev_to_io_dev(bdev), bdev_destroy_cb);
|
||||
}
|
||||
|
||||
static void
|
||||
bdev_start_finished(void *arg)
|
||||
{
|
||||
struct spdk_bdev *bdev = arg;
|
||||
|
||||
spdk_notify_send("bdev_register", spdk_bdev_get_name(bdev));
|
||||
}
|
||||
|
||||
static void
|
||||
bdev_start(struct spdk_bdev *bdev)
|
||||
{
|
||||
@ -5494,6 +5502,8 @@ bdev_start(struct spdk_bdev *bdev)
|
||||
|
||||
/* Examine configuration before initializing I/O */
|
||||
bdev_examine(bdev);
|
||||
|
||||
spdk_bdev_wait_for_examine(bdev_start_finished, bdev);
|
||||
}
|
||||
|
||||
int
|
||||
@ -5505,7 +5515,6 @@ spdk_bdev_register(struct spdk_bdev *bdev)
|
||||
bdev_start(bdev);
|
||||
}
|
||||
|
||||
spdk_notify_send("bdev_register", spdk_bdev_get_name(bdev));
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -175,15 +175,15 @@ function create_bdev_subsystem_config() {
|
||||
|
||||
expected_notifications+=(
|
||||
bdev_register:${lvol_store_base_bdev}
|
||||
bdev_register:${lvol_store_base_bdev}p0
|
||||
bdev_register:${lvol_store_base_bdev}p1
|
||||
bdev_register:${lvol_store_base_bdev}p0
|
||||
bdev_register:Malloc3
|
||||
bdev_register:PTBdevFromMalloc3
|
||||
bdev_register:Null0
|
||||
bdev_register:Malloc0p0
|
||||
bdev_register:Malloc0p1
|
||||
bdev_register:Malloc0p2
|
||||
bdev_register:Malloc0
|
||||
bdev_register:Malloc0p2
|
||||
bdev_register:Malloc0p1
|
||||
bdev_register:Malloc0p0
|
||||
bdev_register:Malloc1
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user