bdev: add register and unregister notification

When bdev is registered it will send "bdev_register" notification and
"bdev_unregister" when unregister is complete.

Change-Id: I3b37a4cb766a473f3da63a571036add366e78fa5
Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/448839
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Pawel Wodkowski 2019-03-22 12:19:42 +01:00 committed by Jim Harris
parent ab1622aa35
commit 076ebfadfa

View File

@ -44,6 +44,7 @@
#include "spdk/queue.h" #include "spdk/queue.h"
#include "spdk/nvme_spec.h" #include "spdk/nvme_spec.h"
#include "spdk/scsi_spec.h" #include "spdk/scsi_spec.h"
#include "spdk/notify.h"
#include "spdk/util.h" #include "spdk/util.h"
#include "spdk/trace.h" #include "spdk/trace.h"
@ -920,6 +921,9 @@ spdk_bdev_initialize(spdk_bdev_init_cb cb_fn, void *cb_arg)
g_init_cb_fn = cb_fn; g_init_cb_fn = cb_fn;
g_init_cb_arg = cb_arg; g_init_cb_arg = cb_arg;
spdk_notify_type_register("bdev_register");
spdk_notify_type_register("bdev_unregister");
snprintf(mempool_name, sizeof(mempool_name), "bdev_io_%d", getpid()); snprintf(mempool_name, sizeof(mempool_name), "bdev_io_%d", getpid());
g_bdev_mgr.bdev_io_pool = spdk_mempool_create(mempool_name, g_bdev_mgr.bdev_io_pool = spdk_mempool_create(mempool_name,
@ -3747,6 +3751,7 @@ spdk_bdev_register(struct spdk_bdev *bdev)
spdk_bdev_start(bdev); spdk_bdev_start(bdev);
} }
spdk_notify_send("bdev_register", spdk_bdev_get_name(bdev));
return rc; return rc;
} }
@ -3761,6 +3766,7 @@ spdk_vbdev_register(struct spdk_bdev *vbdev, struct spdk_bdev **base_bdevs, int
} }
spdk_bdev_start(vbdev); spdk_bdev_start(vbdev);
spdk_notify_send("bdev_register", spdk_bdev_get_name(vbdev));
return 0; return 0;
} }
@ -3815,6 +3821,7 @@ spdk_bdev_unregister_unsafe(struct spdk_bdev *bdev)
if (rc == 0) { if (rc == 0) {
TAILQ_REMOVE(&g_bdev_mgr.bdevs, bdev, internal.link); TAILQ_REMOVE(&g_bdev_mgr.bdevs, bdev, internal.link);
SPDK_DEBUGLOG(SPDK_LOG_BDEV, "Removing bdev %s from list done\n", bdev->name); SPDK_DEBUGLOG(SPDK_LOG_BDEV, "Removing bdev %s from list done\n", bdev->name);
spdk_notify_send("bdev_unregister", spdk_bdev_get_name(bdev));
} }
return rc; return rc;