bdev: make check_io callback optional
If a bdev doesn't need to be polled, allow it to specify NULL for the check_io function pointer to indicate that no poller needs to be registered. This will be useful for virtual blockdevs that don't have any associated hardware to poll. Change-Id: I0ef8f848587b0c200296805ccc710340dde683b5 Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
97020b7ab6
commit
02ccb0f791
@ -134,7 +134,11 @@ struct spdk_bdev_fn_table {
|
||||
/** Destroy the backend block device object */
|
||||
int (*destruct)(struct spdk_bdev *bdev);
|
||||
|
||||
/** Poll the backend for I/O waiting to be completed. */
|
||||
/**
|
||||
* Poll the backend for I/O waiting to be completed.
|
||||
*
|
||||
* Optional; if the bdev does not have any periodic work to do, this pointer can be NULL.
|
||||
*/
|
||||
int (*check_io)(struct spdk_bdev *bdev);
|
||||
|
||||
/** Process the IO. */
|
||||
|
@ -462,7 +462,9 @@ spdk_bdev_io_submit(struct spdk_bdev_io *bdev_io)
|
||||
lcore = rte_lcore_id();
|
||||
}
|
||||
bdev->lcore = lcore;
|
||||
spdk_poller_register(&bdev->poller, spdk_bdev_do_work, bdev, lcore, NULL, 0);
|
||||
if (bdev->fn_table->check_io) {
|
||||
spdk_poller_register(&bdev->poller, spdk_bdev_do_work, bdev, lcore, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (bdev_io->status == SPDK_BDEV_IO_STATUS_PENDING) {
|
||||
@ -815,6 +817,7 @@ spdk_bdev_register(struct spdk_bdev *bdev)
|
||||
/* initialize the reset generation value to zero */
|
||||
bdev->gencnt = 0;
|
||||
bdev->is_running = false;
|
||||
bdev->poller = NULL;
|
||||
|
||||
SPDK_TRACELOG(SPDK_TRACE_DEBUG, "Inserting bdev %s into list\n", bdev->name);
|
||||
TAILQ_INSERT_TAIL(&spdk_bdev_list, bdev, link);
|
||||
@ -834,7 +837,9 @@ spdk_bdev_unregister(struct spdk_bdev *bdev)
|
||||
}
|
||||
|
||||
if (bdev->is_running) {
|
||||
spdk_poller_unregister(&bdev->poller, NULL);
|
||||
if (bdev->poller) {
|
||||
spdk_poller_unregister(&bdev->poller, NULL);
|
||||
}
|
||||
bdev->is_running = false;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user