public inbox for linux-block@vger.kernel.org
 help / color / mirror / Atom feed
From: Omar Sandoval <osandov@osandov.com>
To: Ming Lei <ming.lei@redhat.com>
Cc: Omar Sandoval <osandov@fb.com>, linux-block@vger.kernel.org
Subject: Re: [PATCH] blktests: add userspace IO test
Date: Mon, 4 Mar 2019 14:54:54 -0800	[thread overview]
Message-ID: <20190304225454.GF5450@vader> (raw)
In-Reply-To: <20190304081501.3068-1-ming.lei@redhat.com>

On Mon, Mar 04, 2019 at 04:15:01PM +0800, Ming Lei wrote:
> Add one test to cover changes on block passthrough IO interface,
> such as blk_rq_map_user(), blk_rq_map_user_iov(), blk_rq_unmap_user()
> and blk_rq_map_kern().
> 
> Signed-off-by: Ming Lei <ming.lei@redhat.com>
> ---
>  tests/block/029     | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tests/block/029.out |   5 +++
>  2 files changed, 116 insertions(+)
>  create mode 100755 tests/block/029
>  create mode 100644 tests/block/029.out
> 
> diff --git a/tests/block/029 b/tests/block/029
> new file mode 100755
> index 000000000000..89d2de70833a
> --- /dev/null
> +++ b/tests/block/029
> @@ -0,0 +1,111 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: GPL-2.0+
> +# Copyright (c) 2019 Ming Lei <ming.lei@redhat.com>
> +#
> +# Test userspace IO on NVMe loop device

Is this a regression test for one of your recent patches?

> +. tests/nvme/rc
> +
> +DESCRIPTION="test userspace IO via nvme-cli read/write interface"
> +QUICK=1
> +
> +requires() {
> +	_have_program nvme && _have_modules loop nvme-loop nvmet && \
> +		_have_configfs
> +}
> +
> +__test_user_io()
> +{
> +	DISK=$1
> +	START=$2
> +	CNT=$3
> +
> +	BS=`blockdev --getss $DISK`

$() instead of `` here and everywhere else, please. Also, $DISK needs to
quoted, as do several other variables. Please run `make check`.

> +	SIZE=$(($CNT * $BS))
> +
> +	IMG=`mktemp /tmp/blk_img_XXXXXX`
> +	IMG1=`mktemp /tmp/blk_img_XXXXXX`

Please make all of these variables local and lowercase.

> +	dd if=/dev/urandom of=$IMG bs=$BS count=$CNT status=none
> +
> +	let CNT--

$((CNT--))

> +	nvme write --start-block=$START --block-count=$CNT --data-size=$SIZE --data=$IMG $DISK
> +	[ $? -ne 0 ] && return -1
> +	nvme read --start-block=$START --block-count=$CNT --data-size=$SIZE --data=$IMG1 $DISK
> +	[ $? -ne 0 ] && return -1
> +
> +	diff -q -u $IMG $IMG1
> +	RES=$?
> +
> +	rm -f $IMG $IMG1
> +	return $RES
> +}
> +
> +test_user_io()
> +{
> +	DEV=$1
> +
> +	__test_user_io $DEV 1 512  > /dev/null 2>&1
> +	[ -$? -ne 0 ] && echo "FAIL"
> +
> +	__test_user_io $DEV 1 511  > /dev/null 2>&1
> +	[ -$? -ne 0 ] && echo "FAIL"
> +
> +	__test_user_io $DEV 1 513  > /dev/null 2>&1
> +	[ -$? -ne 0 ] && echo "FAIL"
> +
> +	__test_user_io $DEV 511 1024  > /dev/null 2>&1
> +	[ -$? -ne 0 ] && echo "FAIL"
> +
> +	__test_user_io $DEV 511 1023  > /dev/null 2>&1
> +	[ -$? -ne 0 ] && echo "FAIL"
> +
> +	__test_user_io $DEV 511 1025  > /dev/null 2>&1
> +	[ -$? -ne 0 ] && echo "FAIL"
> +}
> +
> +test() {
> +	echo "Running ${TEST_NAME}"
> +
> +	modprobe nvmet
> +	modprobe nvme-loop
> +
> +	local port
> +	local nvmedev
> +	local loop_dev
> +	local file_path="$TMPDIR/img"
> +	local subsys_name="blktests-subsystem-1"
> +
> +	truncate -s 1G "${file_path}"
> +
> +	loop_dev="$(losetup -f --show "${file_path}")"
> +
> +	_create_nvmet_subsystem "${subsys_name}" "${loop_dev}" \
> +		 "91fdba0d-f87b-4c25-b80f-db7be1418b9e"
> +	port="$(_create_nvmet_port "loop")"
> +	_add_nvmet_subsys_to_port "${port}" "${subsys_name}"
> +
> +	nvme connect -t loop -n "${subsys_name}"
> +
> +	nvmedev="$(_find_nvme_loop_dev)"
> +	cat "/sys/block/${nvmedev}n1/uuid"
> +	cat "/sys/block/${nvmedev}n1/wwid"
> +
> +	test_user_io "/dev/${nvmedev}n1"
> +
> +	nvme disconnect -n "${subsys_name}"

We just changed the other nvme tests to redirect the output of
disconnect like so:

	nvme disconnect -n "${subsys_name}" >> "$FULL" 2>&1

Let's do that for this one, too.

Thanks for the test!

  reply	other threads:[~2019-03-04 22:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-04  8:15 [PATCH] blktests: add userspace IO test Ming Lei
2019-03-04 22:54 ` Omar Sandoval [this message]
2019-03-05  1:53   ` Ming Lei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190304225454.GF5450@vader \
    --to=osandov@osandov.com \
    --cc=linux-block@vger.kernel.org \
    --cc=ming.lei@redhat.com \
    --cc=osandov@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox