bdev: move resubmitting nomem IOs to a function
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I9f91af30ee1dd5f2568d9f76a30f00497aff6bbc Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17673 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
62c399ffaf
commit
eb8f9bbc99
@ -1283,10 +1283,22 @@ bdev_submit_request(struct spdk_bdev *bdev, struct spdk_io_channel *ioch,
|
|||||||
bdev->fn_table->submit_request(ioch, bdev_io);
|
bdev->fn_table->submit_request(ioch, bdev_io);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
bdev_ch_resubmit_io(struct spdk_bdev_channel *bdev_ch, struct spdk_bdev_io *bdev_io)
|
||||||
|
{
|
||||||
|
struct spdk_bdev *bdev = bdev_ch->bdev;
|
||||||
|
struct spdk_bdev_shared_resource *shared_resource = bdev_ch->shared_resource;
|
||||||
|
|
||||||
|
bdev_io->internal.ch->io_outstanding++;
|
||||||
|
shared_resource->io_outstanding++;
|
||||||
|
bdev_io->internal.error.nvme.cdw0 = 0;
|
||||||
|
bdev_io->num_retries++;
|
||||||
|
bdev_submit_request(bdev, spdk_bdev_io_get_io_channel(bdev_io), bdev_io);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bdev_ch_retry_io(struct spdk_bdev_channel *bdev_ch)
|
bdev_ch_retry_io(struct spdk_bdev_channel *bdev_ch)
|
||||||
{
|
{
|
||||||
struct spdk_bdev *bdev = bdev_ch->bdev;
|
|
||||||
struct spdk_bdev_shared_resource *shared_resource = bdev_ch->shared_resource;
|
struct spdk_bdev_shared_resource *shared_resource = bdev_ch->shared_resource;
|
||||||
struct spdk_bdev_io *bdev_io;
|
struct spdk_bdev_io *bdev_io;
|
||||||
|
|
||||||
@ -1305,11 +1317,7 @@ bdev_ch_retry_io(struct spdk_bdev_channel *bdev_ch)
|
|||||||
while (!TAILQ_EMPTY(&shared_resource->nomem_io)) {
|
while (!TAILQ_EMPTY(&shared_resource->nomem_io)) {
|
||||||
bdev_io = TAILQ_FIRST(&shared_resource->nomem_io);
|
bdev_io = TAILQ_FIRST(&shared_resource->nomem_io);
|
||||||
TAILQ_REMOVE(&shared_resource->nomem_io, bdev_io, internal.link);
|
TAILQ_REMOVE(&shared_resource->nomem_io, bdev_io, internal.link);
|
||||||
bdev_io->internal.ch->io_outstanding++;
|
bdev_ch_resubmit_io(bdev_ch, bdev_io);
|
||||||
shared_resource->io_outstanding++;
|
|
||||||
bdev_io->internal.error.nvme.cdw0 = 0;
|
|
||||||
bdev_io->num_retries++;
|
|
||||||
bdev_submit_request(bdev, spdk_bdev_io_get_io_channel(bdev_io), bdev_io);
|
|
||||||
if (bdev_io == TAILQ_FIRST(&shared_resource->nomem_io)) {
|
if (bdev_io == TAILQ_FIRST(&shared_resource->nomem_io)) {
|
||||||
/* This IO completed again with NOMEM status, so break the loop and
|
/* This IO completed again with NOMEM status, so break the loop and
|
||||||
* don't try anymore. Note that a bdev_io that fails with NOMEM
|
* don't try anymore. Note that a bdev_io that fails with NOMEM
|
||||||
|
Loading…
Reference in New Issue
Block a user