bdev/nvme: Get dif_check_flags via bdev_io->bdev in I/O paths

Using bdev_io->bdev will be more straightforward than using
bdev_io->bdev->ctxt and &nbdev->disk.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ie5854ab063b7b21710e9f899dd93340624a8cb49
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5202
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Shuhei Matsumoto 2020-11-23 13:09:54 +09:00 committed by Tomasz Zawadzki
parent 3bf79d7c91
commit 1a8c6c4d4a

View File

@ -594,7 +594,8 @@ static void
bdev_nvme_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io, bdev_nvme_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io,
bool success) bool success)
{ {
struct nvme_bdev *nbdev = (struct nvme_bdev *)bdev_io->bdev->ctxt; struct spdk_bdev *bdev = bdev_io->bdev;
struct nvme_bdev *nbdev = (struct nvme_bdev *)bdev->ctxt;
struct nvme_io_channel *nvme_ch = spdk_io_channel_get_ctx(ch); struct nvme_io_channel *nvme_ch = spdk_io_channel_get_ctx(ch);
int ret; int ret;
@ -611,7 +612,7 @@ bdev_nvme_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io,
bdev_io->u.bdev.md_buf, bdev_io->u.bdev.md_buf,
bdev_io->u.bdev.num_blocks, bdev_io->u.bdev.num_blocks,
bdev_io->u.bdev.offset_blocks, bdev_io->u.bdev.offset_blocks,
nbdev->disk.dif_check_flags); bdev->dif_check_flags);
if (spdk_likely(ret == 0)) { if (spdk_likely(ret == 0)) {
return; return;
@ -626,7 +627,8 @@ static int
_bdev_nvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) _bdev_nvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
{ {
struct nvme_io_channel *nvme_ch = spdk_io_channel_get_ctx(ch); struct nvme_io_channel *nvme_ch = spdk_io_channel_get_ctx(ch);
struct nvme_bdev *nbdev = (struct nvme_bdev *)bdev_io->bdev->ctxt; struct spdk_bdev *bdev = bdev_io->bdev;
struct nvme_bdev *nbdev = (struct nvme_bdev *)bdev->ctxt;
struct nvme_bdev_io *nbdev_io = (struct nvme_bdev_io *)bdev_io->driver_ctx; struct nvme_bdev_io *nbdev_io = (struct nvme_bdev_io *)bdev_io->driver_ctx;
struct nvme_bdev_io *nbdev_io_to_abort; struct nvme_bdev_io *nbdev_io_to_abort;
@ -641,7 +643,7 @@ _bdev_nvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_
bdev_nvme_get_buf_cb(ch, bdev_io, true); bdev_nvme_get_buf_cb(ch, bdev_io, true);
} else { } else {
spdk_bdev_io_get_buf(bdev_io, bdev_nvme_get_buf_cb, spdk_bdev_io_get_buf(bdev_io, bdev_nvme_get_buf_cb,
bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen); bdev_io->u.bdev.num_blocks * bdev->blocklen);
} }
return 0; return 0;
@ -654,7 +656,7 @@ _bdev_nvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_
bdev_io->u.bdev.md_buf, bdev_io->u.bdev.md_buf,
bdev_io->u.bdev.num_blocks, bdev_io->u.bdev.num_blocks,
bdev_io->u.bdev.offset_blocks, bdev_io->u.bdev.offset_blocks,
nbdev->disk.dif_check_flags); bdev->dif_check_flags);
case SPDK_BDEV_IO_TYPE_COMPARE: case SPDK_BDEV_IO_TYPE_COMPARE:
return bdev_nvme_comparev(nbdev->nvme_ns, return bdev_nvme_comparev(nbdev->nvme_ns,
@ -665,7 +667,7 @@ _bdev_nvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_
bdev_io->u.bdev.md_buf, bdev_io->u.bdev.md_buf,
bdev_io->u.bdev.num_blocks, bdev_io->u.bdev.num_blocks,
bdev_io->u.bdev.offset_blocks, bdev_io->u.bdev.offset_blocks,
nbdev->disk.dif_check_flags); bdev->dif_check_flags);
case SPDK_BDEV_IO_TYPE_COMPARE_AND_WRITE: case SPDK_BDEV_IO_TYPE_COMPARE_AND_WRITE:
return bdev_nvme_comparev_and_writev(nbdev->nvme_ns, return bdev_nvme_comparev_and_writev(nbdev->nvme_ns,
@ -678,7 +680,7 @@ _bdev_nvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_
bdev_io->u.bdev.md_buf, bdev_io->u.bdev.md_buf,
bdev_io->u.bdev.num_blocks, bdev_io->u.bdev.num_blocks,
bdev_io->u.bdev.offset_blocks, bdev_io->u.bdev.offset_blocks,
nbdev->disk.dif_check_flags); bdev->dif_check_flags);
case SPDK_BDEV_IO_TYPE_WRITE_ZEROES: case SPDK_BDEV_IO_TYPE_WRITE_ZEROES:
return bdev_nvme_unmap(nbdev->nvme_ns, return bdev_nvme_unmap(nbdev->nvme_ns,