Commit 058f4cfe authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Konrad Sztyber
Browse files

bdevperf: Set dif_check_flags_exclude_mask by negating job->dif_check_flags



By this patch, we can control DIF check per I/O but the behavior is
backward compatible because we just negate job->dif_check_flags and set
its result to dif_check_flags_exclude_mask for each I/O.

Signed-off-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Ia3037bc4d43b566f0ccc46588d430edcb5f38626
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22823


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent 56f2a365
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -963,11 +963,13 @@ bdevperf_complete(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
}

static inline void
bdevperf_init_ext_io_opts(struct spdk_bdev_ext_io_opts *opts, void *md_buf)
bdevperf_init_ext_io_opts(struct spdk_bdev_ext_io_opts *opts, void *md_buf,
			  uint32_t dif_check_flags_exclude_mask)
{
	memset(opts, 0, sizeof(*opts));
	opts->size = sizeof(*opts);
	opts->metadata = md_buf;
	opts->dif_check_flags_exclude_mask = dif_check_flags_exclude_mask;
}

static void
@@ -982,7 +984,7 @@ bdevperf_verify_submit_read(void *cb_arg)

	task->iov.iov_base = task->verify_buf;
	task->iov.iov_len = job->buf_size;
	bdevperf_init_ext_io_opts(&opts, NULL);
	bdevperf_init_ext_io_opts(&opts, NULL, ~job->dif_check_flags);

	/* Read the data back in */
	rc = spdk_bdev_readv_blocks_ext(job->bdev_desc, job->ch, &task->iov, 1,
@@ -1090,7 +1092,7 @@ bdevperf_submit_task(void *arg)
				spdk_bdev_zcopy_end(task->bdev_io, true, cb_fn, task);
				return;
			} else {
				bdevperf_init_ext_io_opts(&opts, task->md_buf);
				bdevperf_init_ext_io_opts(&opts, task->md_buf, ~job->dif_check_flags);
				rc = spdk_bdev_writev_blocks_ext(desc, ch, &task->iov, 1,
								 task->offset_blocks,
								 job->io_size_blocks,
@@ -1115,7 +1117,7 @@ bdevperf_submit_task(void *arg)
			rc = spdk_bdev_zcopy_start(desc, ch, NULL, 0, task->offset_blocks, job->io_size_blocks,
						   true, bdevperf_zcopy_populate_complete, task);
		} else {
			bdevperf_init_ext_io_opts(&opts, task->md_buf);
			bdevperf_init_ext_io_opts(&opts, task->md_buf, ~job->dif_check_flags);
			rc = spdk_bdev_readv_blocks_ext(desc, ch, &task->iov, 1,
							task->offset_blocks,
							job->io_size_blocks,