* [PATCH] generic/471: Remove this broken case
@ 2023-08-14 14:41 Yang Xu
2023-08-14 15:37 ` Darrick J. Wong
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Yang Xu @ 2023-08-14 14:41 UTC (permalink / raw)
To: fstests; +Cc: djwong, axboe, tytso, shr, Yang Xu
I remember this case fails on last year becuase of
kernel commit cae2de69 ("iomap: Add async buffered write support")
kernel commit 1aa91d9 ("xfs: Add async buffered write support").
as below:
pwrite: Resource temporarily unavailable
wrote 8388608/8388608 bytes at offset 0
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-RWF_NOWAIT time is within limits.
+pwrite: Resource temporarily unavailable
+(standard_in) 1: syntax error
+RWF_NOWAIT took seconds
So For async buffered write requests, the request will return -EAGAIN
if the ilock cannot be obtained immediately.
Here also a discussion[1] that seems generic/471 has been broken.
Now, I met this problem in my linux distribution, then I found the above
discussion. IMO, remove this case is ok and then we can avoid to meet this
false report again.
[1]https://lore.kernel.org/linux-xfs/b2865bd6-2346-8f4d-168b-17f06bbedbed@kernel.dk/
Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
tests/generic/471 | 67 -------------------------------------------
tests/generic/471.out | 13 ---------
2 files changed, 80 deletions(-)
delete mode 100755 tests/generic/471
delete mode 100644 tests/generic/471.out
diff --git a/tests/generic/471 b/tests/generic/471
deleted file mode 100755
index fbd0b12a..00000000
--- a/tests/generic/471
+++ /dev/null
@@ -1,67 +0,0 @@
-#! /bin/bash
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (c) 2017, SUSE Linux Products. All Rights Reserved.
-#
-# FS QA Test No. 471
-#
-# write a file with RWF_NOWAIT and it would fail because there are no
-# blocks allocated. Create a file with direct I/O and re-write it
-# using RWF_NOWAIT. I/O should finish within 50 microsecods since
-# block allocations are already performed.
-#
-. ./common/preamble
-_begin_fstest auto quick rw
-
-# Import common functions.
-. ./common/populate
-. ./common/filter
-. ./common/attr
-
-# real QA test starts here
-_require_odirect
-_require_test
-_require_xfs_io_command pwrite -N
-
-# Remove reminiscence of previously run tests
-testdir=$TEST_DIR/$seq
-if [ -e $testdir ]; then
- rm -Rf $testdir
-fi
-
-mkdir $testdir
-
-# Btrfs is a COW filesystem, so a RWF_NOWAIT write will always fail with -EAGAIN
-# when writing to a file range except if it's a NOCOW file and an extent for the
-# range already exists or if it's a COW file and preallocated/unwritten extent
-# exists in the target range. So to make sure that the last write succeeds on
-# all filesystems, use a NOCOW file on btrfs.
-if [ $FSTYP == "btrfs" ]; then
- _require_chattr C
- # Zoned btrfs does not support NOCOW
- _require_non_zoned_device $TEST_DEV
- touch $testdir/f1
- $CHATTR_PROG +C $testdir/f1
-fi
-
-# Create a file with pwrite nowait (will fail with EAGAIN)
-$XFS_IO_PROG -f -d -c "pwrite -N -V 1 -b 1M 0 1M" $testdir/f1
-
-# Write the file without nowait
-$XFS_IO_PROG -f -d -c "pwrite -S 0xaa -W -w -V 1 -b 1M 0 8M" $testdir/f1 | _filter_xfs_io
-
-time_taken=`$XFS_IO_PROG -d -c "pwrite -S 0xbb -N -V 1 -b 1M 2M 1M" $testdir/f1 | awk '/^1/ {print $5}'`
-
-# RWF_NOWAIT should finish within a short period of time so we are choosing
-# a conservative value of 50 ms. Anything longer means it is waiting
-# for something in the kernel which would be a fail.
-if (( $(echo "$time_taken < 0.05" | bc -l) )); then
- echo "RWF_NOWAIT time is within limits."
-else
- echo "RWF_NOWAIT took $time_taken seconds"
-fi
-
-$XFS_IO_PROG -c "pread -v 0 8M" $testdir/f1 | _filter_xfs_io_unique
-
-# success, all done
-status=0
-exit
diff --git a/tests/generic/471.out b/tests/generic/471.out
deleted file mode 100644
index ab23272e..00000000
--- a/tests/generic/471.out
+++ /dev/null
@@ -1,13 +0,0 @@
-QA output created by 471
-pwrite: Resource temporarily unavailable
-wrote 8388608/8388608 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-RWF_NOWAIT time is within limits.
-00000000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................
-*
-00200000: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb ................
-*
-00300000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................
-*
-read 8388608/8388608 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
--
2.27.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH] generic/471: Remove this broken case 2023-08-14 14:41 [PATCH] generic/471: Remove this broken case Yang Xu @ 2023-08-14 15:37 ` Darrick J. Wong 2023-08-14 21:40 ` Jens Axboe 2023-08-14 22:42 ` Bill O'Donnell 2023-08-15 10:44 ` Filipe Manana 2 siblings, 1 reply; 13+ messages in thread From: Darrick J. Wong @ 2023-08-14 15:37 UTC (permalink / raw) To: Yang Xu; +Cc: fstests, axboe, tytso, shr On Mon, Aug 14, 2023 at 10:41:41PM +0800, Yang Xu wrote: > I remember this case fails on last year becuase of > kernel commit cae2de69 ("iomap: Add async buffered write support") > kernel commit 1aa91d9 ("xfs: Add async buffered write support"). > as below: > pwrite: Resource temporarily unavailable > wrote 8388608/8388608 bytes at offset 0 > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -RWF_NOWAIT time is within limits. > +pwrite: Resource temporarily unavailable > +(standard_in) 1: syntax error > +RWF_NOWAIT took seconds > > So For async buffered write requests, the request will return -EAGAIN > if the ilock cannot be obtained immediately. > > Here also a discussion[1] that seems generic/471 has been broken. > > Now, I met this problem in my linux distribution, then I found the above > discussion. IMO, remove this case is ok and then we can avoid to meet this > false report again. > > [1]https://lore.kernel.org/linux-xfs/b2865bd6-2346-8f4d-168b-17f06bbedbed@kernel.dk/ > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> Fine with me, since nobody thinks this test does anything useful, nor has anyone made it do something useful. Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D > --- > tests/generic/471 | 67 ------------------------------------------- > tests/generic/471.out | 13 --------- > 2 files changed, 80 deletions(-) > delete mode 100755 tests/generic/471 > delete mode 100644 tests/generic/471.out > > diff --git a/tests/generic/471 b/tests/generic/471 > deleted file mode 100755 > index fbd0b12a..00000000 > --- a/tests/generic/471 > +++ /dev/null > @@ -1,67 +0,0 @@ > -#! /bin/bash > -# SPDX-License-Identifier: GPL-2.0 > -# Copyright (c) 2017, SUSE Linux Products. All Rights Reserved. > -# > -# FS QA Test No. 471 > -# > -# write a file with RWF_NOWAIT and it would fail because there are no > -# blocks allocated. Create a file with direct I/O and re-write it > -# using RWF_NOWAIT. I/O should finish within 50 microsecods since > -# block allocations are already performed. > -# > -. ./common/preamble > -_begin_fstest auto quick rw > - > -# Import common functions. > -. ./common/populate > -. ./common/filter > -. ./common/attr > - > -# real QA test starts here > -_require_odirect > -_require_test > -_require_xfs_io_command pwrite -N > - > -# Remove reminiscence of previously run tests > -testdir=$TEST_DIR/$seq > -if [ -e $testdir ]; then > - rm -Rf $testdir > -fi > - > -mkdir $testdir > - > -# Btrfs is a COW filesystem, so a RWF_NOWAIT write will always fail with -EAGAIN > -# when writing to a file range except if it's a NOCOW file and an extent for the > -# range already exists or if it's a COW file and preallocated/unwritten extent > -# exists in the target range. So to make sure that the last write succeeds on > -# all filesystems, use a NOCOW file on btrfs. > -if [ $FSTYP == "btrfs" ]; then > - _require_chattr C > - # Zoned btrfs does not support NOCOW > - _require_non_zoned_device $TEST_DEV > - touch $testdir/f1 > - $CHATTR_PROG +C $testdir/f1 > -fi > - > -# Create a file with pwrite nowait (will fail with EAGAIN) > -$XFS_IO_PROG -f -d -c "pwrite -N -V 1 -b 1M 0 1M" $testdir/f1 > - > -# Write the file without nowait > -$XFS_IO_PROG -f -d -c "pwrite -S 0xaa -W -w -V 1 -b 1M 0 8M" $testdir/f1 | _filter_xfs_io > - > -time_taken=`$XFS_IO_PROG -d -c "pwrite -S 0xbb -N -V 1 -b 1M 2M 1M" $testdir/f1 | awk '/^1/ {print $5}'` > - > -# RWF_NOWAIT should finish within a short period of time so we are choosing > -# a conservative value of 50 ms. Anything longer means it is waiting > -# for something in the kernel which would be a fail. > -if (( $(echo "$time_taken < 0.05" | bc -l) )); then > - echo "RWF_NOWAIT time is within limits." > -else > - echo "RWF_NOWAIT took $time_taken seconds" > -fi > - > -$XFS_IO_PROG -c "pread -v 0 8M" $testdir/f1 | _filter_xfs_io_unique > - > -# success, all done > -status=0 > -exit > diff --git a/tests/generic/471.out b/tests/generic/471.out > deleted file mode 100644 > index ab23272e..00000000 > --- a/tests/generic/471.out > +++ /dev/null > @@ -1,13 +0,0 @@ > -QA output created by 471 > -pwrite: Resource temporarily unavailable > -wrote 8388608/8388608 bytes at offset 0 > -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -RWF_NOWAIT time is within limits. > -00000000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > -* > -00200000: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb ................ > -* > -00300000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > -* > -read 8388608/8388608 bytes at offset 0 > -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -- > 2.27.0 > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-14 15:37 ` Darrick J. Wong @ 2023-08-14 21:40 ` Jens Axboe 0 siblings, 0 replies; 13+ messages in thread From: Jens Axboe @ 2023-08-14 21:40 UTC (permalink / raw) To: Darrick J. Wong, Yang Xu; +Cc: fstests, tytso, shr On 8/14/23 9:37 AM, Darrick J. Wong wrote: > On Mon, Aug 14, 2023 at 10:41:41PM +0800, Yang Xu wrote: >> I remember this case fails on last year becuase of >> kernel commit cae2de69 ("iomap: Add async buffered write support") >> kernel commit 1aa91d9 ("xfs: Add async buffered write support"). >> as below: >> pwrite: Resource temporarily unavailable >> wrote 8388608/8388608 bytes at offset 0 >> XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> -RWF_NOWAIT time is within limits. >> +pwrite: Resource temporarily unavailable >> +(standard_in) 1: syntax error >> +RWF_NOWAIT took seconds >> >> So For async buffered write requests, the request will return -EAGAIN >> if the ilock cannot be obtained immediately. >> >> Here also a discussion[1] that seems generic/471 has been broken. >> >> Now, I met this problem in my linux distribution, then I found the above >> discussion. IMO, remove this case is ok and then we can avoid to meet this >> false report again. >> >> [1]https://lore.kernel.org/linux-xfs/b2865bd6-2346-8f4d-168b-17f06bbedbed@kernel.dk/ >> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> > > Fine with me, since nobody thinks this test does anything useful, nor > has anyone made it do something useful. It has never done anything useful, it's a test that was added so that someone could say they had a test case for a kernel change that they made. Killing it is the right choice, as I've argued for before. Reviewed-by: Jens Axboe <axboe@kernel.dk> -- Jens Axboe ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-14 14:41 [PATCH] generic/471: Remove this broken case Yang Xu 2023-08-14 15:37 ` Darrick J. Wong @ 2023-08-14 22:42 ` Bill O'Donnell 2023-08-15 10:44 ` Filipe Manana 2 siblings, 0 replies; 13+ messages in thread From: Bill O'Donnell @ 2023-08-14 22:42 UTC (permalink / raw) To: Yang Xu; +Cc: fstests, djwong, axboe, tytso, shr On Mon, Aug 14, 2023 at 10:41:41PM +0800, Yang Xu wrote: > I remember this case fails on last year becuase of > kernel commit cae2de69 ("iomap: Add async buffered write support") > kernel commit 1aa91d9 ("xfs: Add async buffered write support"). > as below: > pwrite: Resource temporarily unavailable > wrote 8388608/8388608 bytes at offset 0 > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -RWF_NOWAIT time is within limits. > +pwrite: Resource temporarily unavailable > +(standard_in) 1: syntax error > +RWF_NOWAIT took seconds > > So For async buffered write requests, the request will return -EAGAIN > if the ilock cannot be obtained immediately. > > Here also a discussion[1] that seems generic/471 has been broken. > > Now, I met this problem in my linux distribution, then I found the above > discussion. IMO, remove this case is ok and then we can avoid to meet this > false report again. > > [1]https://lore.kernel.org/linux-xfs/b2865bd6-2346-8f4d-168b-17f06bbedbed@kernel.dk/ > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> Reviewed-by: Bill O'Donnell <bodonnel@redhat.com> > --- > tests/generic/471 | 67 ------------------------------------------- > tests/generic/471.out | 13 --------- > 2 files changed, 80 deletions(-) > delete mode 100755 tests/generic/471 > delete mode 100644 tests/generic/471.out > > diff --git a/tests/generic/471 b/tests/generic/471 > deleted file mode 100755 > index fbd0b12a..00000000 > --- a/tests/generic/471 > +++ /dev/null > @@ -1,67 +0,0 @@ > -#! /bin/bash > -# SPDX-License-Identifier: GPL-2.0 > -# Copyright (c) 2017, SUSE Linux Products. All Rights Reserved. > -# > -# FS QA Test No. 471 > -# > -# write a file with RWF_NOWAIT and it would fail because there are no > -# blocks allocated. Create a file with direct I/O and re-write it > -# using RWF_NOWAIT. I/O should finish within 50 microsecods since > -# block allocations are already performed. > -# > -. ./common/preamble > -_begin_fstest auto quick rw > - > -# Import common functions. > -. ./common/populate > -. ./common/filter > -. ./common/attr > - > -# real QA test starts here > -_require_odirect > -_require_test > -_require_xfs_io_command pwrite -N > - > -# Remove reminiscence of previously run tests > -testdir=$TEST_DIR/$seq > -if [ -e $testdir ]; then > - rm -Rf $testdir > -fi > - > -mkdir $testdir > - > -# Btrfs is a COW filesystem, so a RWF_NOWAIT write will always fail with -EAGAIN > -# when writing to a file range except if it's a NOCOW file and an extent for the > -# range already exists or if it's a COW file and preallocated/unwritten extent > -# exists in the target range. So to make sure that the last write succeeds on > -# all filesystems, use a NOCOW file on btrfs. > -if [ $FSTYP == "btrfs" ]; then > - _require_chattr C > - # Zoned btrfs does not support NOCOW > - _require_non_zoned_device $TEST_DEV > - touch $testdir/f1 > - $CHATTR_PROG +C $testdir/f1 > -fi > - > -# Create a file with pwrite nowait (will fail with EAGAIN) > -$XFS_IO_PROG -f -d -c "pwrite -N -V 1 -b 1M 0 1M" $testdir/f1 > - > -# Write the file without nowait > -$XFS_IO_PROG -f -d -c "pwrite -S 0xaa -W -w -V 1 -b 1M 0 8M" $testdir/f1 | _filter_xfs_io > - > -time_taken=`$XFS_IO_PROG -d -c "pwrite -S 0xbb -N -V 1 -b 1M 2M 1M" $testdir/f1 | awk '/^1/ {print $5}'` > - > -# RWF_NOWAIT should finish within a short period of time so we are choosing > -# a conservative value of 50 ms. Anything longer means it is waiting > -# for something in the kernel which would be a fail. > -if (( $(echo "$time_taken < 0.05" | bc -l) )); then > - echo "RWF_NOWAIT time is within limits." > -else > - echo "RWF_NOWAIT took $time_taken seconds" > -fi > - > -$XFS_IO_PROG -c "pread -v 0 8M" $testdir/f1 | _filter_xfs_io_unique > - > -# success, all done > -status=0 > -exit > diff --git a/tests/generic/471.out b/tests/generic/471.out > deleted file mode 100644 > index ab23272e..00000000 > --- a/tests/generic/471.out > +++ /dev/null > @@ -1,13 +0,0 @@ > -QA output created by 471 > -pwrite: Resource temporarily unavailable > -wrote 8388608/8388608 bytes at offset 0 > -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -RWF_NOWAIT time is within limits. > -00000000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > -* > -00200000: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb ................ > -* > -00300000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > -* > -read 8388608/8388608 bytes at offset 0 > -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -- > 2.27.0 > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-14 14:41 [PATCH] generic/471: Remove this broken case Yang Xu 2023-08-14 15:37 ` Darrick J. Wong 2023-08-14 22:42 ` Bill O'Donnell @ 2023-08-15 10:44 ` Filipe Manana 2023-08-16 14:58 ` Yang Xu (Fujitsu) 2 siblings, 1 reply; 13+ messages in thread From: Filipe Manana @ 2023-08-15 10:44 UTC (permalink / raw) To: Yang Xu; +Cc: fstests, djwong, axboe, tytso, shr On Mon, Aug 14, 2023 at 4:04 PM Yang Xu <xuyang2018.jy@fujitsu.com> wrote: > > I remember this case fails on last year becuase of > kernel commit cae2de69 ("iomap: Add async buffered write support") > kernel commit 1aa91d9 ("xfs: Add async buffered write support"). > as below: > pwrite: Resource temporarily unavailable > wrote 8388608/8388608 bytes at offset 0 > XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -RWF_NOWAIT time is within limits. > +pwrite: Resource temporarily unavailable > +(standard_in) 1: syntax error > +RWF_NOWAIT took seconds > > So For async buffered write requests, the request will return -EAGAIN I'm curious about this. All the xfs_io pwrite calls are being done with Direct IO (-d) argument, so how does that explain the failure? > if the ilock cannot be obtained immediately. What is the ilock? That seems to be xfs specific. The test passes on btrfs and btrfs supports async buffered writes - but I'm still puzzled, because the test only does direct IO writes. Does xfs falls back from direct IO to buffered IO? > > Here also a discussion[1] that seems generic/471 has been broken. Well that discussion doesn't help me understand things. It mentions some other discussion, presumably with more details. Where's that other discussion? Thanks. > > Now, I met this problem in my linux distribution, then I found the above > discussion. IMO, remove this case is ok and then we can avoid to meet this > false report again. > > [1]https://lore.kernel.org/linux-xfs/b2865bd6-2346-8f4d-168b-17f06bbedbed@kernel.dk/ > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> > --- > tests/generic/471 | 67 ------------------------------------------- > tests/generic/471.out | 13 --------- > 2 files changed, 80 deletions(-) > delete mode 100755 tests/generic/471 > delete mode 100644 tests/generic/471.out > > diff --git a/tests/generic/471 b/tests/generic/471 > deleted file mode 100755 > index fbd0b12a..00000000 > --- a/tests/generic/471 > +++ /dev/null > @@ -1,67 +0,0 @@ > -#! /bin/bash > -# SPDX-License-Identifier: GPL-2.0 > -# Copyright (c) 2017, SUSE Linux Products. All Rights Reserved. > -# > -# FS QA Test No. 471 > -# > -# write a file with RWF_NOWAIT and it would fail because there are no > -# blocks allocated. Create a file with direct I/O and re-write it > -# using RWF_NOWAIT. I/O should finish within 50 microsecods since > -# block allocations are already performed. > -# > -. ./common/preamble > -_begin_fstest auto quick rw > - > -# Import common functions. > -. ./common/populate > -. ./common/filter > -. ./common/attr > - > -# real QA test starts here > -_require_odirect > -_require_test > -_require_xfs_io_command pwrite -N > - > -# Remove reminiscence of previously run tests > -testdir=$TEST_DIR/$seq > -if [ -e $testdir ]; then > - rm -Rf $testdir > -fi > - > -mkdir $testdir > - > -# Btrfs is a COW filesystem, so a RWF_NOWAIT write will always fail with -EAGAIN > -# when writing to a file range except if it's a NOCOW file and an extent for the > -# range already exists or if it's a COW file and preallocated/unwritten extent > -# exists in the target range. So to make sure that the last write succeeds on > -# all filesystems, use a NOCOW file on btrfs. > -if [ $FSTYP == "btrfs" ]; then > - _require_chattr C > - # Zoned btrfs does not support NOCOW > - _require_non_zoned_device $TEST_DEV > - touch $testdir/f1 > - $CHATTR_PROG +C $testdir/f1 > -fi > - > -# Create a file with pwrite nowait (will fail with EAGAIN) > -$XFS_IO_PROG -f -d -c "pwrite -N -V 1 -b 1M 0 1M" $testdir/f1 > - > -# Write the file without nowait > -$XFS_IO_PROG -f -d -c "pwrite -S 0xaa -W -w -V 1 -b 1M 0 8M" $testdir/f1 | _filter_xfs_io > - > -time_taken=`$XFS_IO_PROG -d -c "pwrite -S 0xbb -N -V 1 -b 1M 2M 1M" $testdir/f1 | awk '/^1/ {print $5}'` > - > -# RWF_NOWAIT should finish within a short period of time so we are choosing > -# a conservative value of 50 ms. Anything longer means it is waiting > -# for something in the kernel which would be a fail. > -if (( $(echo "$time_taken < 0.05" | bc -l) )); then > - echo "RWF_NOWAIT time is within limits." > -else > - echo "RWF_NOWAIT took $time_taken seconds" > -fi > - > -$XFS_IO_PROG -c "pread -v 0 8M" $testdir/f1 | _filter_xfs_io_unique > - > -# success, all done > -status=0 > -exit > diff --git a/tests/generic/471.out b/tests/generic/471.out > deleted file mode 100644 > index ab23272e..00000000 > --- a/tests/generic/471.out > +++ /dev/null > @@ -1,13 +0,0 @@ > -QA output created by 471 > -pwrite: Resource temporarily unavailable > -wrote 8388608/8388608 bytes at offset 0 > -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -RWF_NOWAIT time is within limits. > -00000000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > -* > -00200000: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb ................ > -* > -00300000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > -* > -read 8388608/8388608 bytes at offset 0 > -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -- > 2.27.0 > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-15 10:44 ` Filipe Manana @ 2023-08-16 14:58 ` Yang Xu (Fujitsu) 2023-08-18 12:43 ` Zorro Lang 0 siblings, 1 reply; 13+ messages in thread From: Yang Xu (Fujitsu) @ 2023-08-16 14:58 UTC (permalink / raw) To: Filipe Manana Cc: fstests@vger.kernel.org, djwong@kernel.org, axboe@kernel.dk, tytso@mit.edu, shr@fb.com on 2023/08/15 18:44, Filipe Manana wrote: > On Mon, Aug 14, 2023 at 4:04 PM Yang Xu <xuyang2018.jy@fujitsu.com> wrote: >> >> I remember this case fails on last year becuase of >> kernel commit cae2de69 ("iomap: Add async buffered write support") >> kernel commit 1aa91d9 ("xfs: Add async buffered write support"). >> as below: >> pwrite: Resource temporarily unavailable >> wrote 8388608/8388608 bytes at offset 0 >> XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> -RWF_NOWAIT time is within limits. >> +pwrite: Resource temporarily unavailable >> +(standard_in) 1: syntax error >> +RWF_NOWAIT took seconds >> >> So For async buffered write requests, the request will return -EAGAIN > > I'm curious about this. > > All the xfs_io pwrite calls are being done with Direct IO (-d) > argument, so how does that explain the failure? I am not understand async buffer write, but with the following discussion link[1] maybe explain this failure and explain why btrfs passed. > >> if the ilock cannot be obtained immediately. > > What is the ilock? That seems to be xfs specific. yes, I guess it is xfs_ilock and they are xfs specific. > > The test passes on btrfs and btrfs supports async buffered writes - > but I'm still puzzled, because the test only does direct IO writes. > Does xfs falls back from direct IO to buffered IO? > >> >> Here also a discussion[1] that seems generic/471 has been broken. > > Well that discussion doesn't help me understand things. It mentions > some other discussion, presumably with more details. Where's that > other discussion? I think the url that Jens mention should be this[1] when he reviewed Stefan V7 patch for "io-uring/xfs: support async buffered writes". [1]https://lkml.kernel.org/linux-fsdevel/ca60a7dc-b16d-d8ce-f56c-547b449da8c9@kernel.dk/ Best Regards Yang Xu > > Thanks. > >> >> Now, I met this problem in my linux distribution, then I found the above >> discussion. IMO, remove this case is ok and then we can avoid to meet this >> false report again. >> >> [1]https://lore.kernel.org/linux-xfs/b2865bd6-2346-8f4d-168b-17f06bbedbed@kernel.dk/ >> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> >> --- >> tests/generic/471 | 67 ------------------------------------------- >> tests/generic/471.out | 13 --------- >> 2 files changed, 80 deletions(-) >> delete mode 100755 tests/generic/471 >> delete mode 100644 tests/generic/471.out >> >> diff --git a/tests/generic/471 b/tests/generic/471 >> deleted file mode 100755 >> index fbd0b12a..00000000 >> --- a/tests/generic/471 >> +++ /dev/null >> @@ -1,67 +0,0 @@ >> -#! /bin/bash >> -# SPDX-License-Identifier: GPL-2.0 >> -# Copyright (c) 2017, SUSE Linux Products. All Rights Reserved. >> -# >> -# FS QA Test No. 471 >> -# >> -# write a file with RWF_NOWAIT and it would fail because there are no >> -# blocks allocated. Create a file with direct I/O and re-write it >> -# using RWF_NOWAIT. I/O should finish within 50 microsecods since >> -# block allocations are already performed. >> -# >> -. ./common/preamble >> -_begin_fstest auto quick rw >> - >> -# Import common functions. >> -. ./common/populate >> -. ./common/filter >> -. ./common/attr >> - >> -# real QA test starts here >> -_require_odirect >> -_require_test >> -_require_xfs_io_command pwrite -N >> - >> -# Remove reminiscence of previously run tests >> -testdir=$TEST_DIR/$seq >> -if [ -e $testdir ]; then >> - rm -Rf $testdir >> -fi >> - >> -mkdir $testdir >> - >> -# Btrfs is a COW filesystem, so a RWF_NOWAIT write will always fail with -EAGAIN >> -# when writing to a file range except if it's a NOCOW file and an extent for the >> -# range already exists or if it's a COW file and preallocated/unwritten extent >> -# exists in the target range. So to make sure that the last write succeeds on >> -# all filesystems, use a NOCOW file on btrfs. >> -if [ $FSTYP == "btrfs" ]; then >> - _require_chattr C >> - # Zoned btrfs does not support NOCOW >> - _require_non_zoned_device $TEST_DEV >> - touch $testdir/f1 >> - $CHATTR_PROG +C $testdir/f1 >> -fi >> - >> -# Create a file with pwrite nowait (will fail with EAGAIN) >> -$XFS_IO_PROG -f -d -c "pwrite -N -V 1 -b 1M 0 1M" $testdir/f1 >> - >> -# Write the file without nowait >> -$XFS_IO_PROG -f -d -c "pwrite -S 0xaa -W -w -V 1 -b 1M 0 8M" $testdir/f1 | _filter_xfs_io >> - >> -time_taken=`$XFS_IO_PROG -d -c "pwrite -S 0xbb -N -V 1 -b 1M 2M 1M" $testdir/f1 | awk '/^1/ {print $5}'` >> - >> -# RWF_NOWAIT should finish within a short period of time so we are choosing >> -# a conservative value of 50 ms. Anything longer means it is waiting >> -# for something in the kernel which would be a fail. >> -if (( $(echo "$time_taken < 0.05" | bc -l) )); then >> - echo "RWF_NOWAIT time is within limits." >> -else >> - echo "RWF_NOWAIT took $time_taken seconds" >> -fi >> - >> -$XFS_IO_PROG -c "pread -v 0 8M" $testdir/f1 | _filter_xfs_io_unique >> - >> -# success, all done >> -status=0 >> -exit >> diff --git a/tests/generic/471.out b/tests/generic/471.out >> deleted file mode 100644 >> index ab23272e..00000000 >> --- a/tests/generic/471.out >> +++ /dev/null >> @@ -1,13 +0,0 @@ >> -QA output created by 471 >> -pwrite: Resource temporarily unavailable >> -wrote 8388608/8388608 bytes at offset 0 >> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> -RWF_NOWAIT time is within limits. >> -00000000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ >> -* >> -00200000: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb ................ >> -* >> -00300000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ >> -* >> -read 8388608/8388608 bytes at offset 0 >> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> -- >> 2.27.0 >> ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-16 14:58 ` Yang Xu (Fujitsu) @ 2023-08-18 12:43 ` Zorro Lang 2023-08-19 16:25 ` Filipe Manana 0 siblings, 1 reply; 13+ messages in thread From: Zorro Lang @ 2023-08-18 12:43 UTC (permalink / raw) To: Yang Xu (Fujitsu) Cc: Filipe Manana, fstests@vger.kernel.org, djwong@kernel.org, axboe@kernel.dk, tytso@mit.edu, shr@fb.com On Wed, Aug 16, 2023 at 02:58:10PM +0000, Yang Xu (Fujitsu) wrote: > on 2023/08/15 18:44, Filipe Manana wrote: > > On Mon, Aug 14, 2023 at 4:04 PM Yang Xu <xuyang2018.jy@fujitsu.com> wrote: > >> > >> I remember this case fails on last year becuase of > >> kernel commit cae2de69 ("iomap: Add async buffered write support") > >> kernel commit 1aa91d9 ("xfs: Add async buffered write support"). > >> as below: > >> pwrite: Resource temporarily unavailable > >> wrote 8388608/8388608 bytes at offset 0 > >> XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > >> -RWF_NOWAIT time is within limits. > >> +pwrite: Resource temporarily unavailable > >> +(standard_in) 1: syntax error > >> +RWF_NOWAIT took seconds > >> > >> So For async buffered write requests, the request will return -EAGAIN > > > > I'm curious about this. > > > > All the xfs_io pwrite calls are being done with Direct IO (-d) > > argument, so how does that explain the failure? > > I am not understand async buffer write, but with the following > discussion link[1] maybe explain this failure and explain why btrfs passed. > > > >> if the ilock cannot be obtained immediately. > > > > What is the ilock? That seems to be xfs specific. > > yes, I guess it is xfs_ilock and they are xfs specific. > > > > The test passes on btrfs and btrfs supports async buffered writes - > > but I'm still puzzled, because the test only does direct IO writes. > > Does xfs falls back from direct IO to buffered IO? > > > >> > >> Here also a discussion[1] that seems generic/471 has been broken. > > > > Well that discussion doesn't help me understand things. It mentions > > some other discussion, presumably with more details. Where's that > > other discussion? > > I think the url that Jens mention should be this[1] when he reviewed > Stefan V7 patch for "io-uring/xfs: support async buffered writes". > > [1]https://lkml.kernel.org/linux-fsdevel/ca60a7dc-b16d-d8ce-f56c-547b449da8c9@kernel.dk/ Hi Filipe, Does above explanation make sense to you? This patch got several RVBs, but as this patch removes a generic patch, so I'd like to see there's not objection from any fs list. If btrfs still have more review points, I'll hold this patch, won't merge it in next release. Thanks, Zorro > > > Best Regards > Yang Xu > > > > Thanks. > > > >> > >> Now, I met this problem in my linux distribution, then I found the above > >> discussion. IMO, remove this case is ok and then we can avoid to meet this > >> false report again. > >> > >> [1]https://lore.kernel.org/linux-xfs/b2865bd6-2346-8f4d-168b-17f06bbedbed@kernel.dk/ > >> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> > >> --- > >> tests/generic/471 | 67 ------------------------------------------- > >> tests/generic/471.out | 13 --------- > >> 2 files changed, 80 deletions(-) > >> delete mode 100755 tests/generic/471 > >> delete mode 100644 tests/generic/471.out > >> > >> diff --git a/tests/generic/471 b/tests/generic/471 > >> deleted file mode 100755 > >> index fbd0b12a..00000000 > >> --- a/tests/generic/471 > >> +++ /dev/null > >> @@ -1,67 +0,0 @@ > >> -#! /bin/bash > >> -# SPDX-License-Identifier: GPL-2.0 > >> -# Copyright (c) 2017, SUSE Linux Products. All Rights Reserved. > >> -# > >> -# FS QA Test No. 471 > >> -# > >> -# write a file with RWF_NOWAIT and it would fail because there are no > >> -# blocks allocated. Create a file with direct I/O and re-write it > >> -# using RWF_NOWAIT. I/O should finish within 50 microsecods since > >> -# block allocations are already performed. > >> -# > >> -. ./common/preamble > >> -_begin_fstest auto quick rw > >> - > >> -# Import common functions. > >> -. ./common/populate > >> -. ./common/filter > >> -. ./common/attr > >> - > >> -# real QA test starts here > >> -_require_odirect > >> -_require_test > >> -_require_xfs_io_command pwrite -N > >> - > >> -# Remove reminiscence of previously run tests > >> -testdir=$TEST_DIR/$seq > >> -if [ -e $testdir ]; then > >> - rm -Rf $testdir > >> -fi > >> - > >> -mkdir $testdir > >> - > >> -# Btrfs is a COW filesystem, so a RWF_NOWAIT write will always fail with -EAGAIN > >> -# when writing to a file range except if it's a NOCOW file and an extent for the > >> -# range already exists or if it's a COW file and preallocated/unwritten extent > >> -# exists in the target range. So to make sure that the last write succeeds on > >> -# all filesystems, use a NOCOW file on btrfs. > >> -if [ $FSTYP == "btrfs" ]; then > >> - _require_chattr C > >> - # Zoned btrfs does not support NOCOW > >> - _require_non_zoned_device $TEST_DEV > >> - touch $testdir/f1 > >> - $CHATTR_PROG +C $testdir/f1 > >> -fi > >> - > >> -# Create a file with pwrite nowait (will fail with EAGAIN) > >> -$XFS_IO_PROG -f -d -c "pwrite -N -V 1 -b 1M 0 1M" $testdir/f1 > >> - > >> -# Write the file without nowait > >> -$XFS_IO_PROG -f -d -c "pwrite -S 0xaa -W -w -V 1 -b 1M 0 8M" $testdir/f1 | _filter_xfs_io > >> - > >> -time_taken=`$XFS_IO_PROG -d -c "pwrite -S 0xbb -N -V 1 -b 1M 2M 1M" $testdir/f1 | awk '/^1/ {print $5}'` > >> - > >> -# RWF_NOWAIT should finish within a short period of time so we are choosing > >> -# a conservative value of 50 ms. Anything longer means it is waiting > >> -# for something in the kernel which would be a fail. > >> -if (( $(echo "$time_taken < 0.05" | bc -l) )); then > >> - echo "RWF_NOWAIT time is within limits." > >> -else > >> - echo "RWF_NOWAIT took $time_taken seconds" > >> -fi > >> - > >> -$XFS_IO_PROG -c "pread -v 0 8M" $testdir/f1 | _filter_xfs_io_unique > >> - > >> -# success, all done > >> -status=0 > >> -exit > >> diff --git a/tests/generic/471.out b/tests/generic/471.out > >> deleted file mode 100644 > >> index ab23272e..00000000 > >> --- a/tests/generic/471.out > >> +++ /dev/null > >> @@ -1,13 +0,0 @@ > >> -QA output created by 471 > >> -pwrite: Resource temporarily unavailable > >> -wrote 8388608/8388608 bytes at offset 0 > >> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > >> -RWF_NOWAIT time is within limits. > >> -00000000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > >> -* > >> -00200000: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb ................ > >> -* > >> -00300000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > >> -* > >> -read 8388608/8388608 bytes at offset 0 > >> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > >> -- > >> 2.27.0 > >> ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-18 12:43 ` Zorro Lang @ 2023-08-19 16:25 ` Filipe Manana 2023-08-20 3:59 ` Zorro Lang 2023-08-21 5:39 ` Dave Chinner 0 siblings, 2 replies; 13+ messages in thread From: Filipe Manana @ 2023-08-19 16:25 UTC (permalink / raw) To: Zorro Lang Cc: Yang Xu (Fujitsu), fstests@vger.kernel.org, djwong@kernel.org, axboe@kernel.dk, tytso@mit.edu, shr@fb.com On Fri, Aug 18, 2023 at 1:43 PM Zorro Lang <zlang@redhat.com> wrote: > > On Wed, Aug 16, 2023 at 02:58:10PM +0000, Yang Xu (Fujitsu) wrote: > > on 2023/08/15 18:44, Filipe Manana wrote: > > > On Mon, Aug 14, 2023 at 4:04 PM Yang Xu <xuyang2018.jy@fujitsu.com> wrote: > > >> > > >> I remember this case fails on last year becuase of > > >> kernel commit cae2de69 ("iomap: Add async buffered write support") > > >> kernel commit 1aa91d9 ("xfs: Add async buffered write support"). > > >> as below: > > >> pwrite: Resource temporarily unavailable > > >> wrote 8388608/8388608 bytes at offset 0 > > >> XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > > >> -RWF_NOWAIT time is within limits. > > >> +pwrite: Resource temporarily unavailable > > >> +(standard_in) 1: syntax error > > >> +RWF_NOWAIT took seconds > > >> > > >> So For async buffered write requests, the request will return -EAGAIN > > > > > > I'm curious about this. > > > > > > All the xfs_io pwrite calls are being done with Direct IO (-d) > > > argument, so how does that explain the failure? > > > > I am not understand async buffer write, but with the following > > discussion link[1] maybe explain this failure and explain why btrfs passed. > > > > > >> if the ilock cannot be obtained immediately. > > > > > > What is the ilock? That seems to be xfs specific. > > > > yes, I guess it is xfs_ilock and they are xfs specific. > > > > > > The test passes on btrfs and btrfs supports async buffered writes - > > > but I'm still puzzled, because the test only does direct IO writes. > > > Does xfs falls back from direct IO to buffered IO? > > > > > >> > > >> Here also a discussion[1] that seems generic/471 has been broken. > > > > > > Well that discussion doesn't help me understand things. It mentions > > > some other discussion, presumably with more details. Where's that > > > other discussion? > > > > I think the url that Jens mention should be this[1] when he reviewed > > Stefan V7 patch for "io-uring/xfs: support async buffered writes". > > > > [1]https://lkml.kernel.org/linux-fsdevel/ca60a7dc-b16d-d8ce-f56c-547b449da8c9@kernel.dk/ > > Hi Filipe, > > Does above explanation make sense to you? Not completely. It justifies that the test's assumptions are not necessarily correct, that I understood and it's reasonable. However I don't see, neither in that thread nor in this patch's changelog, why the test started to fail (on xfs, it still passes on btrfs and ext4) after adding support for async buffered IO writes to xfs and iomap - as all the writes done by the test are using direct IO. At least the changelog should point to that thread, and not the one it currently refers to because it doesn't provide any useful information. For completeness it should also justify why the async buffered write support broke the test, as it points out the test fails after those 2 commits for buffered write support, yet there are no buffered writes performed by the test. Anyway, don't make me hold back a patch just because I'm too curious. Thanks. > > This patch got several RVBs, but as this patch removes a generic patch, so > I'd like to see there's not objection from any fs list. If btrfs still have > more review points, I'll hold this patch, won't merge it in next release. > > Thanks, > Zorro > > > > > > > Best Regards > > Yang Xu > > > > > > Thanks. > > > > > >> > > >> Now, I met this problem in my linux distribution, then I found the above > > >> discussion. IMO, remove this case is ok and then we can avoid to meet this > > >> false report again. > > >> > > >> [1]https://lore.kernel.org/linux-xfs/b2865bd6-2346-8f4d-168b-17f06bbedbed@kernel.dk/ > > >> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> > > >> --- > > >> tests/generic/471 | 67 ------------------------------------------- > > >> tests/generic/471.out | 13 --------- > > >> 2 files changed, 80 deletions(-) > > >> delete mode 100755 tests/generic/471 > > >> delete mode 100644 tests/generic/471.out > > >> > > >> diff --git a/tests/generic/471 b/tests/generic/471 > > >> deleted file mode 100755 > > >> index fbd0b12a..00000000 > > >> --- a/tests/generic/471 > > >> +++ /dev/null > > >> @@ -1,67 +0,0 @@ > > >> -#! /bin/bash > > >> -# SPDX-License-Identifier: GPL-2.0 > > >> -# Copyright (c) 2017, SUSE Linux Products. All Rights Reserved. > > >> -# > > >> -# FS QA Test No. 471 > > >> -# > > >> -# write a file with RWF_NOWAIT and it would fail because there are no > > >> -# blocks allocated. Create a file with direct I/O and re-write it > > >> -# using RWF_NOWAIT. I/O should finish within 50 microsecods since > > >> -# block allocations are already performed. > > >> -# > > >> -. ./common/preamble > > >> -_begin_fstest auto quick rw > > >> - > > >> -# Import common functions. > > >> -. ./common/populate > > >> -. ./common/filter > > >> -. ./common/attr > > >> - > > >> -# real QA test starts here > > >> -_require_odirect > > >> -_require_test > > >> -_require_xfs_io_command pwrite -N > > >> - > > >> -# Remove reminiscence of previously run tests > > >> -testdir=$TEST_DIR/$seq > > >> -if [ -e $testdir ]; then > > >> - rm -Rf $testdir > > >> -fi > > >> - > > >> -mkdir $testdir > > >> - > > >> -# Btrfs is a COW filesystem, so a RWF_NOWAIT write will always fail with -EAGAIN > > >> -# when writing to a file range except if it's a NOCOW file and an extent for the > > >> -# range already exists or if it's a COW file and preallocated/unwritten extent > > >> -# exists in the target range. So to make sure that the last write succeeds on > > >> -# all filesystems, use a NOCOW file on btrfs. > > >> -if [ $FSTYP == "btrfs" ]; then > > >> - _require_chattr C > > >> - # Zoned btrfs does not support NOCOW > > >> - _require_non_zoned_device $TEST_DEV > > >> - touch $testdir/f1 > > >> - $CHATTR_PROG +C $testdir/f1 > > >> -fi > > >> - > > >> -# Create a file with pwrite nowait (will fail with EAGAIN) > > >> -$XFS_IO_PROG -f -d -c "pwrite -N -V 1 -b 1M 0 1M" $testdir/f1 > > >> - > > >> -# Write the file without nowait > > >> -$XFS_IO_PROG -f -d -c "pwrite -S 0xaa -W -w -V 1 -b 1M 0 8M" $testdir/f1 | _filter_xfs_io > > >> - > > >> -time_taken=`$XFS_IO_PROG -d -c "pwrite -S 0xbb -N -V 1 -b 1M 2M 1M" $testdir/f1 | awk '/^1/ {print $5}'` > > >> - > > >> -# RWF_NOWAIT should finish within a short period of time so we are choosing > > >> -# a conservative value of 50 ms. Anything longer means it is waiting > > >> -# for something in the kernel which would be a fail. > > >> -if (( $(echo "$time_taken < 0.05" | bc -l) )); then > > >> - echo "RWF_NOWAIT time is within limits." > > >> -else > > >> - echo "RWF_NOWAIT took $time_taken seconds" > > >> -fi > > >> - > > >> -$XFS_IO_PROG -c "pread -v 0 8M" $testdir/f1 | _filter_xfs_io_unique > > >> - > > >> -# success, all done > > >> -status=0 > > >> -exit > > >> diff --git a/tests/generic/471.out b/tests/generic/471.out > > >> deleted file mode 100644 > > >> index ab23272e..00000000 > > >> --- a/tests/generic/471.out > > >> +++ /dev/null > > >> @@ -1,13 +0,0 @@ > > >> -QA output created by 471 > > >> -pwrite: Resource temporarily unavailable > > >> -wrote 8388608/8388608 bytes at offset 0 > > >> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > > >> -RWF_NOWAIT time is within limits. > > >> -00000000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > > >> -* > > >> -00200000: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb ................ > > >> -* > > >> -00300000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > > >> -* > > >> -read 8388608/8388608 bytes at offset 0 > > >> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > > >> -- > > >> 2.27.0 > > >> > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-19 16:25 ` Filipe Manana @ 2023-08-20 3:59 ` Zorro Lang 2023-08-21 5:39 ` Dave Chinner 1 sibling, 0 replies; 13+ messages in thread From: Zorro Lang @ 2023-08-20 3:59 UTC (permalink / raw) To: Filipe Manana Cc: Yang Xu (Fujitsu), fstests@vger.kernel.org, djwong@kernel.org, axboe@kernel.dk, tytso@mit.edu, shr@fb.com On Sat, Aug 19, 2023 at 05:25:35PM +0100, Filipe Manana wrote: > On Fri, Aug 18, 2023 at 1:43 PM Zorro Lang <zlang@redhat.com> wrote: > > > > On Wed, Aug 16, 2023 at 02:58:10PM +0000, Yang Xu (Fujitsu) wrote: > > > on 2023/08/15 18:44, Filipe Manana wrote: > > > > On Mon, Aug 14, 2023 at 4:04 PM Yang Xu <xuyang2018.jy@fujitsu.com> wrote: > > > >> > > > >> I remember this case fails on last year becuase of > > > >> kernel commit cae2de69 ("iomap: Add async buffered write support") > > > >> kernel commit 1aa91d9 ("xfs: Add async buffered write support"). > > > >> as below: > > > >> pwrite: Resource temporarily unavailable > > > >> wrote 8388608/8388608 bytes at offset 0 > > > >> XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > > > >> -RWF_NOWAIT time is within limits. > > > >> +pwrite: Resource temporarily unavailable > > > >> +(standard_in) 1: syntax error > > > >> +RWF_NOWAIT took seconds > > > >> > > > >> So For async buffered write requests, the request will return -EAGAIN > > > > > > > > I'm curious about this. > > > > > > > > All the xfs_io pwrite calls are being done with Direct IO (-d) > > > > argument, so how does that explain the failure? > > > > > > I am not understand async buffer write, but with the following > > > discussion link[1] maybe explain this failure and explain why btrfs passed. > > > > > > > >> if the ilock cannot be obtained immediately. > > > > > > > > What is the ilock? That seems to be xfs specific. > > > > > > yes, I guess it is xfs_ilock and they are xfs specific. > > > > > > > > The test passes on btrfs and btrfs supports async buffered writes - > > > > but I'm still puzzled, because the test only does direct IO writes. > > > > Does xfs falls back from direct IO to buffered IO? > > > > > > > >> > > > >> Here also a discussion[1] that seems generic/471 has been broken. > > > > > > > > Well that discussion doesn't help me understand things. It mentions > > > > some other discussion, presumably with more details. Where's that > > > > other discussion? > > > > > > I think the url that Jens mention should be this[1] when he reviewed > > > Stefan V7 patch for "io-uring/xfs: support async buffered writes". > > > > > > [1]https://lkml.kernel.org/linux-fsdevel/ca60a7dc-b16d-d8ce-f56c-547b449da8c9@kernel.dk/ > > > > Hi Filipe, > > > > Does above explanation make sense to you? > > Not completely. > > It justifies that the test's assumptions are not necessarily correct, > that I understood and it's reasonable. > > However I don't see, neither in that thread nor in this patch's > changelog, why the test started to fail (on xfs, it still passes on > btrfs and ext4) after adding support for async buffered IO writes to > xfs and iomap - as all the writes done by the test are using direct > IO. > > At least the changelog should point to that thread, and not the one it > currently refers to because it doesn't provide any useful information. I'll add above link into commit log when I merge it. > For completeness it should also justify why the async buffered write > support broke the test, as it points out the test fails after those 2 > commits for buffered write support, yet there are no buffered writes > performed by the test. Jens? Darrick? or anyone who can help to provide an explanation about this question Filipe asked, I'll add it into commit log too. Thanks, Zorro > > Anyway, don't make me hold back a patch just because I'm too curious. > > Thanks. > > > > > This patch got several RVBs, but as this patch removes a generic patch, so > > I'd like to see there's not objection from any fs list. If btrfs still have > > more review points, I'll hold this patch, won't merge it in next release. > > > > Thanks, > > Zorro > > > > > > > > > > > Best Regards > > > Yang Xu > > > > > > > > Thanks. > > > > > > > >> > > > >> Now, I met this problem in my linux distribution, then I found the above > > > >> discussion. IMO, remove this case is ok and then we can avoid to meet this > > > >> false report again. > > > >> > > > >> [1]https://lore.kernel.org/linux-xfs/b2865bd6-2346-8f4d-168b-17f06bbedbed@kernel.dk/ > > > >> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> > > > >> --- > > > >> tests/generic/471 | 67 ------------------------------------------- > > > >> tests/generic/471.out | 13 --------- > > > >> 2 files changed, 80 deletions(-) > > > >> delete mode 100755 tests/generic/471 > > > >> delete mode 100644 tests/generic/471.out > > > >> > > > >> diff --git a/tests/generic/471 b/tests/generic/471 > > > >> deleted file mode 100755 > > > >> index fbd0b12a..00000000 > > > >> --- a/tests/generic/471 > > > >> +++ /dev/null > > > >> @@ -1,67 +0,0 @@ > > > >> -#! /bin/bash > > > >> -# SPDX-License-Identifier: GPL-2.0 > > > >> -# Copyright (c) 2017, SUSE Linux Products. All Rights Reserved. > > > >> -# > > > >> -# FS QA Test No. 471 > > > >> -# > > > >> -# write a file with RWF_NOWAIT and it would fail because there are no > > > >> -# blocks allocated. Create a file with direct I/O and re-write it > > > >> -# using RWF_NOWAIT. I/O should finish within 50 microsecods since > > > >> -# block allocations are already performed. > > > >> -# > > > >> -. ./common/preamble > > > >> -_begin_fstest auto quick rw > > > >> - > > > >> -# Import common functions. > > > >> -. ./common/populate > > > >> -. ./common/filter > > > >> -. ./common/attr > > > >> - > > > >> -# real QA test starts here > > > >> -_require_odirect > > > >> -_require_test > > > >> -_require_xfs_io_command pwrite -N > > > >> - > > > >> -# Remove reminiscence of previously run tests > > > >> -testdir=$TEST_DIR/$seq > > > >> -if [ -e $testdir ]; then > > > >> - rm -Rf $testdir > > > >> -fi > > > >> - > > > >> -mkdir $testdir > > > >> - > > > >> -# Btrfs is a COW filesystem, so a RWF_NOWAIT write will always fail with -EAGAIN > > > >> -# when writing to a file range except if it's a NOCOW file and an extent for the > > > >> -# range already exists or if it's a COW file and preallocated/unwritten extent > > > >> -# exists in the target range. So to make sure that the last write succeeds on > > > >> -# all filesystems, use a NOCOW file on btrfs. > > > >> -if [ $FSTYP == "btrfs" ]; then > > > >> - _require_chattr C > > > >> - # Zoned btrfs does not support NOCOW > > > >> - _require_non_zoned_device $TEST_DEV > > > >> - touch $testdir/f1 > > > >> - $CHATTR_PROG +C $testdir/f1 > > > >> -fi > > > >> - > > > >> -# Create a file with pwrite nowait (will fail with EAGAIN) > > > >> -$XFS_IO_PROG -f -d -c "pwrite -N -V 1 -b 1M 0 1M" $testdir/f1 > > > >> - > > > >> -# Write the file without nowait > > > >> -$XFS_IO_PROG -f -d -c "pwrite -S 0xaa -W -w -V 1 -b 1M 0 8M" $testdir/f1 | _filter_xfs_io > > > >> - > > > >> -time_taken=`$XFS_IO_PROG -d -c "pwrite -S 0xbb -N -V 1 -b 1M 2M 1M" $testdir/f1 | awk '/^1/ {print $5}'` > > > >> - > > > >> -# RWF_NOWAIT should finish within a short period of time so we are choosing > > > >> -# a conservative value of 50 ms. Anything longer means it is waiting > > > >> -# for something in the kernel which would be a fail. > > > >> -if (( $(echo "$time_taken < 0.05" | bc -l) )); then > > > >> - echo "RWF_NOWAIT time is within limits." > > > >> -else > > > >> - echo "RWF_NOWAIT took $time_taken seconds" > > > >> -fi > > > >> - > > > >> -$XFS_IO_PROG -c "pread -v 0 8M" $testdir/f1 | _filter_xfs_io_unique > > > >> - > > > >> -# success, all done > > > >> -status=0 > > > >> -exit > > > >> diff --git a/tests/generic/471.out b/tests/generic/471.out > > > >> deleted file mode 100644 > > > >> index ab23272e..00000000 > > > >> --- a/tests/generic/471.out > > > >> +++ /dev/null > > > >> @@ -1,13 +0,0 @@ > > > >> -QA output created by 471 > > > >> -pwrite: Resource temporarily unavailable > > > >> -wrote 8388608/8388608 bytes at offset 0 > > > >> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > > > >> -RWF_NOWAIT time is within limits. > > > >> -00000000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > > > >> -* > > > >> -00200000: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb ................ > > > >> -* > > > >> -00300000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ > > > >> -* > > > >> -read 8388608/8388608 bytes at offset 0 > > > >> -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > > > >> -- > > > >> 2.27.0 > > > >> > > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-19 16:25 ` Filipe Manana 2023-08-20 3:59 ` Zorro Lang @ 2023-08-21 5:39 ` Dave Chinner 2023-08-21 11:16 ` Filipe Manana 1 sibling, 1 reply; 13+ messages in thread From: Dave Chinner @ 2023-08-21 5:39 UTC (permalink / raw) To: Filipe Manana Cc: Zorro Lang, Yang Xu (Fujitsu), fstests@vger.kernel.org, djwong@kernel.org, axboe@kernel.dk, tytso@mit.edu, shr@fb.com On Sat, Aug 19, 2023 at 05:25:35PM +0100, Filipe Manana wrote: > On Fri, Aug 18, 2023 at 1:43 PM Zorro Lang <zlang@redhat.com> wrote: > > On Wed, Aug 16, 2023 at 02:58:10PM +0000, Yang Xu (Fujitsu) wrote: > > > I think the url that Jens mention should be this[1] when he reviewed > > > Stefan V7 patch for "io-uring/xfs: support async buffered writes". > > > > > > [1]https://lkml.kernel.org/linux-fsdevel/ca60a7dc-b16d-d8ce-f56c-547b449da8c9@kernel.dk/ > > > > Hi Filipe, > > > > Does above explanation make sense to you? > > Not completely. > > It justifies that the test's assumptions are not necessarily correct, > that I understood and it's reasonable. > > However I don't see, neither in that thread nor in this patch's > changelog, why the test started to fail (on xfs, it still passes on > btrfs and ext4) after adding support for async buffered IO writes to > xfs and iomap - as all the writes done by the test are using direct > IO. We changed how timestamps are updated so that they are aware of IOCB_NOWAIT. If the IOCB_NOWIAT DIO write now needs to update the inode timestamps, it will return -EAGAIN instead of doing potentially blocking operations that require IO to complete (i.e. taking a transaction reservation). Hence the first time we go to do a DIO read an inode, it's going to do an atime update, which now occurrs from an IOCB_NOWAIT context and we return -EAGAIN.... Yes, we added non-blocking timestamp updates as part of the async buffered write support, but this was a general XFS IO path change of behaviour to address a potential blocking point in *all* IOCB_NOWAIT reads and writes, buffered or direct. > At least the changelog should point to that thread, and not the one it > currently refers to because it doesn't provide any useful information. > For completeness it should also justify why the async buffered write > support broke the test, as it points out the test fails after those 2 > commits for buffered write support, yet there are no buffered writes > performed by the test. async buffered writes didn't break the test. The addition of nonblocking timestamp updates in XFS is what causes the test to now fail. Indeed, we may change this XFS behaviour again some day - if we can guarantee that we can get a transaciton reservation without blocking then we -could- allow the timestamp update to run in IOCB_NOWAIT context. Doing this would then mean the test might randomly fail, depending on whether the timestamp update can be done without blocking or not.... Put simply, the test is not validating that RWF_NOWAIT is behaving correctly - it just was a simple operation that kinda exercised RWF_NOWAIT semantics when we had no other way to test this code. It has outlived it's original purpose, so it should be removed... -Dave. -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-21 5:39 ` Dave Chinner @ 2023-08-21 11:16 ` Filipe Manana 2023-08-21 14:59 ` Yang Xu (Fujitsu) 2023-08-24 2:33 ` Dave Chinner 0 siblings, 2 replies; 13+ messages in thread From: Filipe Manana @ 2023-08-21 11:16 UTC (permalink / raw) To: Dave Chinner Cc: Zorro Lang, Yang Xu (Fujitsu), fstests@vger.kernel.org, djwong@kernel.org, axboe@kernel.dk, tytso@mit.edu, shr@fb.com On Mon, Aug 21, 2023 at 6:39 AM Dave Chinner <david@fromorbit.com> wrote: > > On Sat, Aug 19, 2023 at 05:25:35PM +0100, Filipe Manana wrote: > > On Fri, Aug 18, 2023 at 1:43 PM Zorro Lang <zlang@redhat.com> wrote: > > > On Wed, Aug 16, 2023 at 02:58:10PM +0000, Yang Xu (Fujitsu) wrote: > > > > I think the url that Jens mention should be this[1] when he reviewed > > > > Stefan V7 patch for "io-uring/xfs: support async buffered writes". > > > > > > > > [1]https://lkml.kernel.org/linux-fsdevel/ca60a7dc-b16d-d8ce-f56c-547b449da8c9@kernel.dk/ > > > > > > Hi Filipe, > > > > > > Does above explanation make sense to you? > > > > Not completely. > > > > It justifies that the test's assumptions are not necessarily correct, > > that I understood and it's reasonable. > > > > However I don't see, neither in that thread nor in this patch's > > changelog, why the test started to fail (on xfs, it still passes on > > btrfs and ext4) after adding support for async buffered IO writes to > > xfs and iomap - as all the writes done by the test are using direct > > IO. > > We changed how timestamps are updated so that they are aware of > IOCB_NOWAIT. If the IOCB_NOWIAT DIO write now needs to update the > inode timestamps, it will return -EAGAIN instead of doing > potentially blocking operations that require IO to complete (i.e. > taking a transaction reservation). > > Hence the first time we go to do a DIO read an inode, it's going to > do an atime update, which now occurrs from an IOCB_NOWAIT context > and we return -EAGAIN.... > > Yes, we added non-blocking timestamp updates as part of the async > buffered write support, but this was a general XFS IO path change of > behaviour to address a potential blocking point in *all* IOCB_NOWAIT > reads and writes, buffered or direct. Ok, now that's the kind of explanation I would expect in the changelog. > > > At least the changelog should point to that thread, and not the one it > > currently refers to because it doesn't provide any useful information. > > For completeness it should also justify why the async buffered write > > support broke the test, as it points out the test fails after those 2 > > commits for buffered write support, yet there are no buffered writes > > performed by the test. > > async buffered writes didn't break the test. The addition of > nonblocking timestamp updates in XFS is what causes the test to now > fail. Ok, so the changelog is very misleading, as it points to commits that, as far as I can see at least, have nothing to do with the changes that make timestamp updates aware of NOWAIT semantics. So it should be the following commit to be referred (and possibly others): https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=66fa3cedf16abc82d19b943e3289c82e685419d5 > > Indeed, we may change this XFS behaviour again some day - if we can > guarantee that we can get a transaciton reservation without blocking > then we -could- allow the timestamp update to run in IOCB_NOWAIT > context. Doing this would then mean the test might randomly fail, > depending on whether the timestamp update can be done without > blocking or not.... > > Put simply, the test is not validating that RWF_NOWAIT is behaving > correctly - it just was a simple operation that kinda exercised > RWF_NOWAIT semantics when we had no other way to test this code. It > has outlived it's original purpose, so it should be removed... Thanks for the detailed explanation. A simpler version of this, or perhaps a lore link to your reply should be added to the changelog, because the current one is more like "remove this test because someone else told to do so" without any relevant details. > > -Dave. > -- > Dave Chinner > david@fromorbit.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-21 11:16 ` Filipe Manana @ 2023-08-21 14:59 ` Yang Xu (Fujitsu) 2023-08-24 2:33 ` Dave Chinner 1 sibling, 0 replies; 13+ messages in thread From: Yang Xu (Fujitsu) @ 2023-08-21 14:59 UTC (permalink / raw) To: Filipe Manana, Dave Chinner Cc: Zorro Lang, fstests@vger.kernel.org, djwong@kernel.org, axboe@kernel.dk, tytso@mit.edu, shr@fb.com on 2023/08/21 19:16, Filipe Manana wrote: > On Mon, Aug 21, 2023 at 6:39 AM Dave Chinner <david@fromorbit.com> wrote: >> >> On Sat, Aug 19, 2023 at 05:25:35PM +0100, Filipe Manana wrote: >>> On Fri, Aug 18, 2023 at 1:43 PM Zorro Lang <zlang@redhat.com> wrote: >>>> On Wed, Aug 16, 2023 at 02:58:10PM +0000, Yang Xu (Fujitsu) wrote: >>>>> I think the url that Jens mention should be this[1] when he reviewed >>>>> Stefan V7 patch for "io-uring/xfs: support async buffered writes". >>>>> >>>>> [1]https://lkml.kernel.org/linux-fsdevel/ca60a7dc-b16d-d8ce-f56c-547b449da8c9@kernel.dk/ >>>> >>>> Hi Filipe, >>>> >>>> Does above explanation make sense to you? >>> >>> Not completely. >>> >>> It justifies that the test's assumptions are not necessarily correct, >>> that I understood and it's reasonable. >>> >>> However I don't see, neither in that thread nor in this patch's >>> changelog, why the test started to fail (on xfs, it still passes on >>> btrfs and ext4) after adding support for async buffered IO writes to >>> xfs and iomap - as all the writes done by the test are using direct >>> IO. >> >> We changed how timestamps are updated so that they are aware of >> IOCB_NOWAIT. If the IOCB_NOWIAT DIO write now needs to update the >> inode timestamps, it will return -EAGAIN instead of doing >> potentially blocking operations that require IO to complete (i.e. >> taking a transaction reservation). >> >> Hence the first time we go to do a DIO read an inode, it's going to >> do an atime update, which now occurrs from an IOCB_NOWAIT context >> and we return -EAGAIN.... >> >> Yes, we added non-blocking timestamp updates as part of the async >> buffered write support, but this was a general XFS IO path change of >> behaviour to address a potential blocking point in *all* IOCB_NOWAIT >> reads and writes, buffered or direct. > > Ok, now that's the kind of explanation I would expect in the changelog. > >> >>> At least the changelog should point to that thread, and not the one it >>> currently refers to because it doesn't provide any useful information. >>> For completeness it should also justify why the async buffered write >>> support broke the test, as it points out the test fails after those 2 >>> commits for buffered write support, yet there are no buffered writes >>> performed by the test. >> >> async buffered writes didn't break the test. The addition of >> nonblocking timestamp updates in XFS is what causes the test to now >> fail. > > Ok, so the changelog is very misleading, as it points to commits that, > as far as I can see at least, > have nothing to do with the changes that make timestamp updates aware > of NOWAIT semantics. > > So it should be the following commit to be referred (and possibly others): > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=66fa3cedf16abc82d19b943e3289c82e685419d5 > >> >> Indeed, we may change this XFS behaviour again some day - if we can >> guarantee that we can get a transaciton reservation without blocking >> then we -could- allow the timestamp update to run in IOCB_NOWAIT >> context. Doing this would then mean the test might randomly fail, >> depending on whether the timestamp update can be done without >> blocking or not.... >> >> Put simply, the test is not validating that RWF_NOWAIT is behaving >> correctly - it just was a simple operation that kinda exercised >> RWF_NOWAIT semantics when we had no other way to test this code. It >> has outlived it's original purpose, so it should be removed... > > Thanks for the detailed explanation. > > A simpler version of this, or perhaps a lore link to your reply should > be added to the changelog, > because the current one is more like "remove this test because someone > else told to do so" without > any relevant details. Sorry, I just saw part of the generic/471 history and discussion last week, then wrote the misleading changelog. But now , it is better than do nothing. At least, we figured out why xfs fail reason and why remove this test. So I guess I only need to add the following word as commit message is enough "The test is not validating that RWF_NOWAIT is behaving correctly - it just was a simple operation that kinda exercised RWF_NOWAIT semantics when we had no other way to test this code. It has outlived it's original purpose, so it should be removed... " Is it right? Best Regards Yang Xu > >> >> -Dave. >> -- >> Dave Chinner >> david@fromorbit.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] generic/471: Remove this broken case 2023-08-21 11:16 ` Filipe Manana 2023-08-21 14:59 ` Yang Xu (Fujitsu) @ 2023-08-24 2:33 ` Dave Chinner 1 sibling, 0 replies; 13+ messages in thread From: Dave Chinner @ 2023-08-24 2:33 UTC (permalink / raw) To: Filipe Manana Cc: Zorro Lang, Yang Xu (Fujitsu), fstests@vger.kernel.org, djwong@kernel.org, axboe@kernel.dk, tytso@mit.edu, shr@fb.com On Mon, Aug 21, 2023 at 12:16:54PM +0100, Filipe Manana wrote: > On Mon, Aug 21, 2023 at 6:39 AM Dave Chinner <david@fromorbit.com> wrote: > > > > On Sat, Aug 19, 2023 at 05:25:35PM +0100, Filipe Manana wrote: > > > On Fri, Aug 18, 2023 at 1:43 PM Zorro Lang <zlang@redhat.com> wrote: > > > > On Wed, Aug 16, 2023 at 02:58:10PM +0000, Yang Xu (Fujitsu) wrote: > > > > > I think the url that Jens mention should be this[1] when he reviewed > > > > > Stefan V7 patch for "io-uring/xfs: support async buffered writes". > > > > > > > > > > [1]https://lkml.kernel.org/linux-fsdevel/ca60a7dc-b16d-d8ce-f56c-547b449da8c9@kernel.dk/ > > > > > > > > Hi Filipe, > > > > > > > > Does above explanation make sense to you? > > > > > > Not completely. > > > > > > It justifies that the test's assumptions are not necessarily correct, > > > that I understood and it's reasonable. > > > > > > However I don't see, neither in that thread nor in this patch's > > > changelog, why the test started to fail (on xfs, it still passes on > > > btrfs and ext4) after adding support for async buffered IO writes to > > > xfs and iomap - as all the writes done by the test are using direct > > > IO. > > > > We changed how timestamps are updated so that they are aware of > > IOCB_NOWAIT. If the IOCB_NOWIAT DIO write now needs to update the > > inode timestamps, it will return -EAGAIN instead of doing > > potentially blocking operations that require IO to complete (i.e. > > taking a transaction reservation). > > > > Hence the first time we go to do a DIO read an inode, it's going to > > do an atime update, which now occurrs from an IOCB_NOWAIT context > > and we return -EAGAIN.... > > > > Yes, we added non-blocking timestamp updates as part of the async > > buffered write support, but this was a general XFS IO path change of > > behaviour to address a potential blocking point in *all* IOCB_NOWAIT > > reads and writes, buffered or direct. > > Ok, now that's the kind of explanation I would expect in the changelog. Why? It was clearly obvious in the patch series that this infrastructure was being added to the VFS and XFS was being converted to use it. All the VFS support for this was done in earlier patches in the series, but the bisect doesn't land on them - it lands on the commit that enabled that functionality. Indeed, just because the commit a bisect lands on doesn't describe all the specific changes in behaviour that occur across an entire series, it doesn't mean the change logs for the patches are bad or incomplete. It just means there's more context to the new feature the patch enables than what is in the commit that the bisect lands on. > > > At least the changelog should point to that thread, and not the one it > > > currently refers to because it doesn't provide any useful information. > > > For completeness it should also justify why the async buffered write > > > support broke the test, as it points out the test fails after those 2 > > > commits for buffered write support, yet there are no buffered writes > > > performed by the test. > > > > async buffered writes didn't break the test. The addition of > > nonblocking timestamp updates in XFS is what causes the test to now > > fail. > > Ok, so the changelog is very misleading, as it points to commits that, > as far as I can see at least, > have nothing to do with the changes that make timestamp updates aware > of NOWAIT semantics. > > So it should be the following commit to be referred (and possibly others): > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=66fa3cedf16abc82d19b943e3289c82e685419d5 Precisely my point. This is the async timestamp NOWAIT VFS support patch that the XFS changes depended on. You have to look at the change as a whole, not just individual commits. But this patch didn't enable that functionality in XFS - it's just the infrastructure - and so the bisect is *never* going to land on this patch because nothing actually uses the code at this point. The bisect will always land on the commit that enables the new functionality, and those commits rarely explain all the details of the new functionality that it is enabling. If you don't like that, then review the new feature code as it goes past and ask the authors to rewrite all their commit messages to explain everything in every patch in the series. We just don't do that because it is unnecessary - everyone else who reviewed the series was happy with the commit messages for each commit because they looked at the whole series, not just one specific patch in the large work like you have done and then complained about. > > Indeed, we may change this XFS behaviour again some day - if we can > > guarantee that we can get a transaciton reservation without blocking > > then we -could- allow the timestamp update to run in IOCB_NOWAIT > > context. Doing this would then mean the test might randomly fail, > > depending on whether the timestamp update can be done without > > blocking or not.... > > > > Put simply, the test is not validating that RWF_NOWAIT is behaving > > correctly - it just was a simple operation that kinda exercised > > RWF_NOWAIT semantics when we had no other way to test this code. It > > has outlived it's original purpose, so it should be removed... > > Thanks for the detailed explanation. > > A simpler version of this, or perhaps a lore link to your reply should > be added to the changelog, > because the current one is more like "remove this test because someone > else told to do so" without > any relevant details. <shrug> I don't care if that is done or not, and it should not hold up removing the test. We know why it needs to be removed, and this discussion is already in lore under the patch name, so everyone can find it simply by searching for the commit title in the lore archive. Cheers, Dave. -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2023-08-24 2:33 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-08-14 14:41 [PATCH] generic/471: Remove this broken case Yang Xu 2023-08-14 15:37 ` Darrick J. Wong 2023-08-14 21:40 ` Jens Axboe 2023-08-14 22:42 ` Bill O'Donnell 2023-08-15 10:44 ` Filipe Manana 2023-08-16 14:58 ` Yang Xu (Fujitsu) 2023-08-18 12:43 ` Zorro Lang 2023-08-19 16:25 ` Filipe Manana 2023-08-20 3:59 ` Zorro Lang 2023-08-21 5:39 ` Dave Chinner 2023-08-21 11:16 ` Filipe Manana 2023-08-21 14:59 ` Yang Xu (Fujitsu) 2023-08-24 2:33 ` Dave Chinner
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox