Message ID | 20240410070720.9035-1-ddiss@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | generic/027: use 300M FS to accommodate XFS limits | expand |
On Wed, Apr 10, 2024 at 05:07:20PM +1000, David Disseldorp wrote: > As of xfsprogs commit 6e0ed3d1 ("mkfs: stop allowing tiny filesystems") > attempts to create XFS filesystems sized under 300M fail. > > Lacking MIN_FSSIZE configuration, failure of _scratch_mkfs_sized() in > generic/027 doesn't halt the test, leading _scratch_mount() to mount any > previously created (full-size) filesystem. As a result create_file() > may loop near-endlessly awaiting ENOSPC. > > Use a 300M sized filesystem to support XFS' limit, and explicitly check > for _scratch_mkfs_sized() failure to avoid endless loops if the limit > changes again in future. Hmmm. Does your test environment export (as in, the bash keyword) TEST_DEV and TEST_DIR? mkfs.xfs is supposed to detect fstests and allow sub-300M filesystems for testing. The detection breaks if TEST_{DEV,DIR} are set but not exported in the config file; perhaps fstests ought to be exporting them like it does for the <cough> other detection key. --D > Signed-off-by: David Disseldorp <ddiss@suse.de> > --- > tests/generic/027 | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/tests/generic/027 b/tests/generic/027 > index 47f1981d..4f8cf6d8 100755 > --- a/tests/generic/027 > +++ b/tests/generic/027 > @@ -35,13 +35,14 @@ _require_scratch > > echo "Silence is golden" > > -_scratch_mkfs_sized $((256 * 1024 * 1024)) >>$seqres.full 2>&1 > +_scratch_mkfs_sized $((300 * 1024 * 1024)) >>$seqres.full 2>&1 \ > + || _fail "_scratch_mkfs_sized failed" > _scratch_mount > > echo "Reserve 2M space" >>$seqres.full > $XFS_IO_PROG -f -c "pwrite 0 2m" $SCRATCH_MNT/testfile >>$seqres.full 2>&1 > echo "Fulfill the fs" >>$seqres.full > -$XFS_IO_PROG -f -c "pwrite 0 254m" $SCRATCH_MNT/bigfile >>$seqres.full 2>&1 > +$XFS_IO_PROG -f -c "pwrite 0 298m" $SCRATCH_MNT/bigfile >>$seqres.full 2>&1 > echo "Remove reserved file" >>$seqres.full > rm -f $SCRATCH_MNT/testfile > > -- > 2.35.3 > >
On Wed, 10 Apr 2024 08:28:06 -0700, Darrick J. Wong wrote: > On Wed, Apr 10, 2024 at 05:07:20PM +1000, David Disseldorp wrote: > > As of xfsprogs commit 6e0ed3d1 ("mkfs: stop allowing tiny filesystems") > > attempts to create XFS filesystems sized under 300M fail. > > > > Lacking MIN_FSSIZE configuration, failure of _scratch_mkfs_sized() in > > generic/027 doesn't halt the test, leading _scratch_mount() to mount any > > previously created (full-size) filesystem. As a result create_file() > > may loop near-endlessly awaiting ENOSPC. > > > > Use a 300M sized filesystem to support XFS' limit, and explicitly check > > for _scratch_mkfs_sized() failure to avoid endless loops if the limit > > changes again in future. > > Hmmm. Does your test environment export (as in, the bash keyword) > TEST_DEV and TEST_DIR? mkfs.xfs is supposed to detect fstests and allow > sub-300M filesystems for testing. Ah, I missed that getenv() logic in xfs_mkfs. > The detection breaks if TEST_{DEV,DIR} are set but not exported in the > config file; perhaps fstests ought to be exporting them like it does for > the <cough> other detection key. Yep, in my case I have a configs/$hostname.config environment and common.config doesn't explicitly export TEST_DEV. I'll rework this fix.
diff --git a/tests/generic/027 b/tests/generic/027 index 47f1981d..4f8cf6d8 100755 --- a/tests/generic/027 +++ b/tests/generic/027 @@ -35,13 +35,14 @@ _require_scratch echo "Silence is golden" -_scratch_mkfs_sized $((256 * 1024 * 1024)) >>$seqres.full 2>&1 +_scratch_mkfs_sized $((300 * 1024 * 1024)) >>$seqres.full 2>&1 \ + || _fail "_scratch_mkfs_sized failed" _scratch_mount echo "Reserve 2M space" >>$seqres.full $XFS_IO_PROG -f -c "pwrite 0 2m" $SCRATCH_MNT/testfile >>$seqres.full 2>&1 echo "Fulfill the fs" >>$seqres.full -$XFS_IO_PROG -f -c "pwrite 0 254m" $SCRATCH_MNT/bigfile >>$seqres.full 2>&1 +$XFS_IO_PROG -f -c "pwrite 0 298m" $SCRATCH_MNT/bigfile >>$seqres.full 2>&1 echo "Remove reserved file" >>$seqres.full rm -f $SCRATCH_MNT/testfile
As of xfsprogs commit 6e0ed3d1 ("mkfs: stop allowing tiny filesystems") attempts to create XFS filesystems sized under 300M fail. Lacking MIN_FSSIZE configuration, failure of _scratch_mkfs_sized() in generic/027 doesn't halt the test, leading _scratch_mount() to mount any previously created (full-size) filesystem. As a result create_file() may loop near-endlessly awaiting ENOSPC. Use a 300M sized filesystem to support XFS' limit, and explicitly check for _scratch_mkfs_sized() failure to avoid endless loops if the limit changes again in future. Signed-off-by: David Disseldorp <ddiss@suse.de> --- tests/generic/027 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)