diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index f68aaaf0c..ec401b2d2 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -1205,13 +1205,15 @@ _spdk_bdev_io_split_with_payload(void *_bdev_io) if (rc == 0) { bdev_io->u.bdev.split_current_offset_blocks += to_next_boundary; bdev_io->u.bdev.split_remaining_num_blocks -= to_next_boundary; - } else { - assert(rc == -ENOMEM); + } else if (rc == -ENOMEM) { bdev_io->internal.waitq_entry.bdev = bdev_io->bdev; bdev_io->internal.waitq_entry.cb_fn = _spdk_bdev_io_split_with_payload; bdev_io->internal.waitq_entry.cb_arg = bdev_io; spdk_bdev_queue_io_wait(bdev_io->bdev, spdk_io_channel_from_ctx(bdev_io->internal.ch), &bdev_io->internal.waitq_entry); + } else { + bdev_io->internal.status = SPDK_BDEV_IO_STATUS_FAILED; + bdev_io->internal.cb(bdev_io, false, bdev_io->internal.caller_ctx); } }