Commit 95d8e7a6 authored by Tomasz Zawadzki's avatar Tomasz Zawadzki
Browse files

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: default avatarTomasz 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: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent e57bb1af
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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;
}

+4 −4
Original line number Diff line number Diff line
@@ -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
		)