On Fri, Aug 06, 2021 at 02:07:37PM +0200, Martin Kletzander wrote:
On Wed, Aug 04, 2021 at 04:48:08PM +0100, Richard W.M. Jones wrote:
>On Wed, Aug 04, 2021 at 05:08:32PM +0200, Martin Kletzander wrote:
>>Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
>>---
>> tests/test-cache-block-size.sh | 33 ++++++++++++++++++++++-----------
>> 1 file changed, 22 insertions(+), 11 deletions(-)
>>
>>diff --git a/tests/test-cache-block-size.sh b/tests/test-cache-block-size.sh
>>index d20cc94002b6..5e83ebc1cfaa 100755
>>--- a/tests/test-cache-block-size.sh
>>+++ b/tests/test-cache-block-size.sh
>>@@ -47,24 +47,35 @@ truncate -s 128K cache-block-size.img
>>
>> # Run nbdkit with the caching filter.
>> start_nbdkit -P cache-block-size.pid -U $sock --filter=cache \
>>- file cache-block-size.img cache-min-block-size=4K
>>+ file cache-block-size.img cache-min-block-size=64K \
>
>Because of commit c1905b0a2 ("cache, cow: Use a 64K block size by
>default"), 64K is the default block size. So this doesn't test that
>the parameter works. Maybe choose a different block size here?
>
I tried that it fails with 32K, but I can double all the numbers in this
test if you want.
It fails even after adjusting the test to cope with the different
block size?
Rich.
>Rest of it is fine, so ACK, but better if the block size above
was
>changed.
>
>Rich.
>
>>+ cache-on-read=true
>>
>> nbdsh --connect "nbd+unix://?socket=$sock" \
>> -c '
>>-# Write some pattern data to the overlay and check it reads back OK.
>>-buf = b"abcd" * 16384
>>-h.pwrite(buf, 32768)
>>+# Read half of cache-min-block-size
>>+
>> zero = h.pread(32768, 0)
>> assert zero == bytearray(32768)
>>-buf2 = h.pread(65536, 32768)
>>-assert buf == buf2
>>
>>-# Flushing should write through to the underlying file.
>>-h.flush()
>>+buf = b"abcd" * 8192
>>
>>+# Write past the first read
>>+with open("cache-block-size.img", "wb") as file:
>>+ file.seek(32768)
>>+ file.write(buf * 2)
>>+ file.truncate(131072)
>>+
>>+# Check that it got written
>> with open("cache-block-size.img", "rb") as file:
>>- zero = file.read(32768)
>>- assert zero == bytearray(32768)
>>+ file.seek(32768)
>> buf2 = file.read(65536)
>>- assert buf == buf2
>>+ assert (buf * 2) == buf2
>>+
>>+# Now read the rest of the cache-min-block-size, it should stay empty
>>+zero = h.pread(32768, 32768)
>>+assert zero == bytearray(32768)
>>+
>>+# Read past that, the pattern should be visible there
>>+buf2 = h.pread(32768, 65536)
>>+assert buf == buf2
>> '
>>--
>>2.32.0
>
>--
>Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
>Read my programming and virtualization blog:
http://rwmj.wordpress.com
>virt-p2v converts physical machines to virtual machines. Boot with a
>live CD or over the network (PXE) and turn machines into KVM guests.
>http://libguestfs.org/virt-v2v
>
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v