bdevperf: add write_zeroes operation
Change-Id: I4b2fa51608ad8504b1db6d039efa59f8659e5025 Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-on: https://review.gerrithub.io/421695 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Maciej Szwed <maciej.szwed@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
4df8ba86f2
commit
a7f4c2770a
@ -61,6 +61,7 @@ static int g_is_random;
|
||||
static bool g_verify = false;
|
||||
static bool g_reset = false;
|
||||
static bool g_unmap = false;
|
||||
static bool g_write_zeroes = false;
|
||||
static bool g_flush = false;
|
||||
static int g_queue_depth;
|
||||
static uint64_t g_time_in_usec;
|
||||
@ -396,6 +397,8 @@ bdevperf_prep_task(struct bdevperf_task *task)
|
||||
task->io_type = SPDK_BDEV_IO_TYPE_FLUSH;
|
||||
} else if (g_unmap) {
|
||||
task->io_type = SPDK_BDEV_IO_TYPE_UNMAP;
|
||||
} else if (g_write_zeroes) {
|
||||
task->io_type = SPDK_BDEV_IO_TYPE_WRITE_ZEROES;
|
||||
} else if ((g_rw_percentage == 100) ||
|
||||
(g_rw_percentage != 0 && ((rand_r(&seed) % 100) < g_rw_percentage))) {
|
||||
task->io_type = SPDK_BDEV_IO_TYPE_READ;
|
||||
@ -434,6 +437,10 @@ bdevperf_submit_task(void *arg)
|
||||
rc = spdk_bdev_unmap_blocks(desc, ch, task->offset_blocks,
|
||||
target->io_size_blocks, bdevperf_complete, task);
|
||||
break;
|
||||
case SPDK_BDEV_IO_TYPE_WRITE_ZEROES:
|
||||
rc = spdk_bdev_write_zeroes_blocks(desc, ch, task->offset_blocks,
|
||||
target->io_size_blocks, bdevperf_complete, task);
|
||||
break;
|
||||
case SPDK_BDEV_IO_TYPE_READ:
|
||||
rbuf = g_zcopy ? NULL : task->buf;
|
||||
rc = spdk_bdev_read_blocks(desc, ch, rbuf, task->offset_blocks,
|
||||
@ -907,6 +914,7 @@ main(int argc, char **argv)
|
||||
strcmp(g_workload_type, "verify") &&
|
||||
strcmp(g_workload_type, "reset") &&
|
||||
strcmp(g_workload_type, "unmap") &&
|
||||
strcmp(g_workload_type, "write_zeroes") &&
|
||||
strcmp(g_workload_type, "flush")) {
|
||||
fprintf(stderr,
|
||||
"io pattern type must be one of\n"
|
||||
@ -928,6 +936,10 @@ main(int argc, char **argv)
|
||||
g_unmap = true;
|
||||
}
|
||||
|
||||
if (!strcmp(g_workload_type, "write_zeroes")) {
|
||||
g_write_zeroes = true;
|
||||
}
|
||||
|
||||
if (!strcmp(g_workload_type, "flush")) {
|
||||
g_flush = true;
|
||||
}
|
||||
@ -957,6 +969,7 @@ main(int argc, char **argv)
|
||||
!strcmp(g_workload_type, "verify") ||
|
||||
!strcmp(g_workload_type, "reset") ||
|
||||
!strcmp(g_workload_type, "unmap") ||
|
||||
!strcmp(g_workload_type, "write_zeroes") ||
|
||||
!strcmp(g_workload_type, "flush")) {
|
||||
if (g_mix_specified) {
|
||||
fprintf(stderr, "Ignoring -M option... Please use -M option"
|
||||
@ -979,7 +992,8 @@ main(int argc, char **argv)
|
||||
!strcmp(g_workload_type, "rw") ||
|
||||
!strcmp(g_workload_type, "verify") ||
|
||||
!strcmp(g_workload_type, "reset") ||
|
||||
!strcmp(g_workload_type, "unmap")) {
|
||||
!strcmp(g_workload_type, "unmap") ||
|
||||
!strcmp(g_workload_type, "write_zeroes")) {
|
||||
g_is_random = 0;
|
||||
} else {
|
||||
g_is_random = 1;
|
||||
|
@ -147,6 +147,7 @@ $rootdir/scripts/gen_nvme.sh >> $testdir/bdev_gpt.conf
|
||||
|
||||
# Run bdevperf with gpt
|
||||
$testdir/bdevperf/bdevperf -c $testdir/bdev_gpt.conf -q 128 -o 4096 -w verify -t 5
|
||||
$testdir/bdevperf/bdevperf -c $testdir/bdev_gpt.conf -q 128 -o 4096 -w write_zeroes -t 1
|
||||
rm -f $testdir/bdev_gpt.conf
|
||||
|
||||
if [ $RUN_NIGHTLY -eq 1 ]; then
|
||||
|
Loading…
Reference in New Issue
Block a user