On Wed, May 18, 2022 at 02:32:28PM -0700, Eric Biggers wrote: > On Wed, May 18, 2022 at 04:22:14PM -0400, Gabriel Krisman Bertazi wrote: > > Coreutils commit d435cfc0bc55 ("touch: fix wrong > > diagnostic (Bug#48106)"), released in coreutils v9.0, changed the error > > reported by the tool when openat() fails with EINVAL. Instead of > > reporting a generic message for the failure of either openat() or the > > following utimensat(), it now differentiates both failures with > > different messages. > > > > This change breaks generic/556, which relied on the parsing of that > > message. This test was originally developed by me on a Debian > > Buster (coreutils v8.x), so I used the generic error message. Now that > > I tried to run it on a more modern distro, it reports a different error > > message, which fails the test. > > > > We could do it in a more flexible way to catch future changes. These > > are unlikely, and many other parts of fstests just use this generic > > touch message, so don't bother with it here. > > > > There is no change in behavior on the kernel side, just a broken test. > > On both older and new distros, the kernel correctly rejects this invalid > > sequence with -EINVAL, as shown in the strace hunk below: > > > > ... > > openat(AT_FDCWD, "/scratch_mnt/strict/corac\314\247\303", ...) = -1 EINVAL > > utimensat(AT_FDCWD, "/scratch_mnt/strict/corac\314\247\303", ...) = -1 EINVAL > > ... > > > > Signed-off-by: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxx> > > --- > > tests/generic/556.out | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/tests/generic/556.out b/tests/generic/556.out > > index f9dd9542fb12..12c77a5b0176 100644 > > --- a/tests/generic/556.out > > +++ b/tests/generic/556.out > > @@ -12,5 +12,5 @@ user.foo="bar" > > # file: SCRATCH_MNT/xattrs/x/f1 > > user.foo="bar" > > > > -touch: setting times of 'SCRATCH_MNT/strict/corac'$'\314\247\303': Invalid argument > > -touch: setting times of 'SCRATCH_MNT/strict/cora'$'\303\247\303': Invalid argument > > +touch: cannot touch 'SCRATCH_MNT/strict/corac'$'\314\247\303': Invalid argument > > +touch: cannot touch 'SCRATCH_MNT/strict/cora'$'\303\247\303': Invalid argument > > This would break the test on systems that still have an older version of > coreutils, right? For example, currently kvm-xfstests test appliances are based > on Debian Bullseye by default, which isn't very old, but it has coreutils 8.32. > > Can you filter the output to allow the test to pass with both old and new > coreutils versions? Or, find another way to test the same thing without relying > on a tool that has changed its output. Seconded, those of us running ancient distros like Ubuntu 22.04 will need compatibility with 8.32 for a few years yet... ;) --D > - Eric