bdev: Avoid assert and factor out queue IO operation in _bdev_write_zero_buffer_next
Currently write to bdev fails in _spdk_bdev_write_zero_buffer_next due to other than -ENOMEM, assert is called. RAID bdev using this feature is generally availale now and it will be OK to remove this assert and return error instead. Additionally, applying the factored function to _bdev_write_zero_buffer_next will improve readability slightly. These two changes are done in this patch. Change-Id: I462630a71e57e2e5146b085b215d62a378ea9402 Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-on: https://review.gerrithub.io/427186 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
9d4708f35e
commit
6fa7e38667
@ -3485,14 +3485,8 @@ _spdk_bdev_write_zero_buffer_next(void *_bdev_io)
|
||||
bdev_io->u.bdev.split_remaining_num_blocks -= num_blocks;
|
||||
bdev_io->u.bdev.split_current_offset_blocks += num_blocks;
|
||||
} else if (rc == -ENOMEM) {
|
||||
bdev_io->internal.waitq_entry.bdev = bdev_io->bdev;
|
||||
bdev_io->internal.waitq_entry.cb_fn = _spdk_bdev_write_zero_buffer_next;
|
||||
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);
|
||||
_spdk_bdev_queue_io_wait_with_cb(bdev_io, _spdk_bdev_write_zero_buffer_next);
|
||||
} else {
|
||||
/* This should never happen. */
|
||||
assert(false);
|
||||
bdev_io->internal.status = SPDK_BDEV_IO_STATUS_FAILED;
|
||||
bdev_io->internal.cb(bdev_io, false, bdev_io->internal.caller_ctx);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user