On Tue, Sep 27, 2022 at 09:24:08PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > In commit ea15099b71, I observed that this test tries to test the > behavior of the extent size hint on the data device. If the test runner > set up MKFS_OPTIONS such that the filesystem gets created with a > realtime section and rtinherit set on the root directory, then the > preconditions of this test (creating files on the data section) is not > satisfied and the results of this test are incorrect. The solution was > to force all files created by this test to be assigned to the data > section. > > Unfortunately, the correction that I made has side effects beyond this > test -- by clearing rtinherit on $TEST_DIR, all tests that run after > this one will create files on the data section, because the test > filesystem persists for the duration of the entire test run. This leads > to the wrong things being tested. > > Fix this new problem by clearing the rtinherit flag on $TDIR, which > contains the files created by this test and is removed during cleanup, > and leave a few comments celebrating our new discoveries. > > Fixes: ea15099b71 ("xfs: force file creation to the data device for certain layout tests") > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- OK, good news is most of _xfs_force_bdev run on SCRATCH_MNT, only this x/229 run on TEST_DIR. Better to not change TEST_DIR directly, to avoid it affect later testing. Thanks for fix it. Reviewed-by: Zorro Lang <zlang@xxxxxxxxxx> Thanks, Zorro > common/xfs | 3 +++ > tests/xfs/229 | 7 ++++++- > 2 files changed, 9 insertions(+), 1 deletion(-) > > > diff --git a/common/xfs b/common/xfs > index 170dd621a1..e1c15d3d04 100644 > --- a/common/xfs > +++ b/common/xfs > @@ -201,6 +201,9 @@ _xfs_get_file_block_size() > # For each directory, each file subsequently created will target the given > # device for file data allocations. For each empty regular file, each > # subsequent file data allocation will be on the given device. > +# > +# NOTE: If you call this on $TEST_DIR, you must reset the rtinherit flag state > +# before the end of the test to avoid polluting subsequent tests. > _xfs_force_bdev() > { > local device="$1" > diff --git a/tests/xfs/229 b/tests/xfs/229 > index 2221b9c49c..a58fd16bba 100755 > --- a/tests/xfs/229 > +++ b/tests/xfs/229 > @@ -31,11 +31,16 @@ _require_fs_space $TEST_DIR 3200000 > TDIR="${TEST_DIR}/t_holes" > NFILES="10" > EXTSIZE="256k" > -_xfs_force_bdev data $TEST_DIR > > # Create the test directory > mkdir ${TDIR} > > +# Per-directory extent size hints aren't particularly useful for files that > +# are created on the realtime section. Force the test file to be created on > +# the data directory. Do not change the rtinherit flag on $TEST_DIR because > +# that will affect other tests. > +_xfs_force_bdev data $TDIR > + > # Set the test directory extsize > $XFS_IO_PROG -c "extsize ${EXTSIZE}" ${TDIR} > >