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@xxxxxxxxxx> > --- > 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@xxxxxxxxxx> > +# > +# 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!