Message ID | 20240328203910.2370087-6-stefanha@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: add llseek(SEEK_HOLE/SEEK_DATA) support | expand |
On Thu, Mar 28, 2024 at 04:39:06PM -0400, Stefan Hajnoczi wrote: > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > .../selftests/block_seek_hole/Makefile | 2 +- > .../testing/selftests/block_seek_hole/config | 2 ++ > .../selftests/block_seek_hole/dm_zero.sh | 31 +++++++++++++++++++ > 3 files changed, 34 insertions(+), 1 deletion(-) > create mode 100755 tools/testing/selftests/block_seek_hole/dm_zero.sh > > +++ b/tools/testing/selftests/block_seek_hole/dm_zero.sh > @@ -0,0 +1,31 @@ > +#!/bin/sh > +# SPDX-License-Identifier: GPL-2.0-only > +# > +# dm_zero.sh > +# > +# Test that dm-zero reports data because it does not have a custom > +# SEEK_HOLE/SEEK_DATA implementation. Why not? Wouldn't it make more sense to have dm-zero report the entire device as a hole (that is, an in-range SEEK_HOLE always returns the same offset, while an in-range SEEK_DATA returns the device size)?
On Thu, Mar 28, 2024 at 05:19:26PM -0500, Eric Blake wrote: > On Thu, Mar 28, 2024 at 04:39:06PM -0400, Stefan Hajnoczi wrote: > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > > --- > > .../selftests/block_seek_hole/Makefile | 2 +- > > .../testing/selftests/block_seek_hole/config | 2 ++ > > .../selftests/block_seek_hole/dm_zero.sh | 31 +++++++++++++++++++ > > 3 files changed, 34 insertions(+), 1 deletion(-) > > create mode 100755 tools/testing/selftests/block_seek_hole/dm_zero.sh > > > > > +++ b/tools/testing/selftests/block_seek_hole/dm_zero.sh > > @@ -0,0 +1,31 @@ > > +#!/bin/sh > > +# SPDX-License-Identifier: GPL-2.0-only > > +# > > +# dm_zero.sh > > +# > > +# Test that dm-zero reports data because it does not have a custom > > +# SEEK_HOLE/SEEK_DATA implementation. > > Why not? Wouldn't it make more sense to have dm-zero report the > entire device as a hole (that is, an in-range SEEK_HOLE always returns > the same offset, while an in-range SEEK_DATA returns the device size)? Yes, dm-zero could report a hole. I just added this test to verify that targets that do not implement seek_hole_data() work and the dm-zero target was convenient for testing. Stefan > > -- > Eric Blake, Principal Software Engineer > Red Hat, Inc. > Virtualization: qemu.org | libguestfs.org >
diff --git a/tools/testing/selftests/block_seek_hole/Makefile b/tools/testing/selftests/block_seek_hole/Makefile index 3f4bbd52db29f..1bd9e748b2acc 100644 --- a/tools/testing/selftests/block_seek_hole/Makefile +++ b/tools/testing/selftests/block_seek_hole/Makefile @@ -3,7 +3,7 @@ PY3 = $(shell which python3 2>/dev/null) ifneq ($(PY3),) -TEST_PROGS := test.py +TEST_PROGS := test.py dm_zero.sh include ../lib.mk diff --git a/tools/testing/selftests/block_seek_hole/config b/tools/testing/selftests/block_seek_hole/config index 72437e0c0fc1c..bfd59f1d98769 100644 --- a/tools/testing/selftests/block_seek_hole/config +++ b/tools/testing/selftests/block_seek_hole/config @@ -1 +1,3 @@ CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_ZERO=m diff --git a/tools/testing/selftests/block_seek_hole/dm_zero.sh b/tools/testing/selftests/block_seek_hole/dm_zero.sh new file mode 100755 index 0000000000000..20836a566fcc8 --- /dev/null +++ b/tools/testing/selftests/block_seek_hole/dm_zero.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-only +# +# dm_zero.sh +# +# Test that dm-zero reports data because it does not have a custom +# SEEK_HOLE/SEEK_DATA implementation. + +set -e + +dev_name=test-$$ +size=$((1024 * 1024 * 1024 / 512)) # 1 GB + +cleanup() { + dmsetup remove $dev_name +} +trap cleanup EXIT + +dmsetup create $dev_name --table "0 $size zero" + +output=$(./map_holes.py /dev/mapper/$dev_name) +expected='TYPE START END SIZE +DATA 0 1073741824 1073741824' + +if [ "$output" != "$expected" ]; then + echo 'FAIL expected:' + echo "$expected" + echo 'Does not match device output:' + echo "$output" + exit 1 +fi
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- .../selftests/block_seek_hole/Makefile | 2 +- .../testing/selftests/block_seek_hole/config | 2 ++ .../selftests/block_seek_hole/dm_zero.sh | 31 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100755 tools/testing/selftests/block_seek_hole/dm_zero.sh