Message ID | 151314502196.18893.14496524309954254435.stgit@magnolia (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Dec 12, 2017 at 10:03:42PM -0800, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > We're removing from XFS the ability to perform no-allocation file > creation. This was added years ago because someone at SGI demanded that > we still be able to create (empty?) files with zero free blocks Just to correct the record, it wasn't SGI that demanded this - it was implemented by SGI a long, long time ago (~1998) in response to customer demands. > remaining so long as there were free inodes and space in existing > directory blocks. This came at an unacceptable risk of ENOSPC'ing > midway through a transaction and shutting down the fs, so we're removing > it for the create case. Well, 20 years later we consider it an unacceptible risk. :P > However, some tests fail as a result, so fix them to be more flexible > about not failing when a dir/file creation fails due to ENOSPC. > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Looks fine. Reviewed-by: Dave Chinner <dchinner@redhat.com>
diff --git a/tests/xfs/013 b/tests/xfs/013 index 80298ca..394b9bc 100755 --- a/tests/xfs/013 +++ b/tests/xfs/013 @@ -145,8 +145,10 @@ $FSSTRESS_PROG -d $SCRATCH_MNT/fsstress -n 9999999 -p 2 -S t \ for i in $(seq 1 $LOOPS) do # hard link the content of the current directory to the next - cp -Rl $SCRATCH_MNT/dir$i $SCRATCH_MNT/dir$((i+1)) 2>&1 | \ - filter_enospc + while ! test -d $SCRATCH_MNT/dir$((i+1)); do + cp -Rl $SCRATCH_MNT/dir$i $SCRATCH_MNT/dir$((i+1)) 2>&1 | \ + filter_enospc + done # do a random replacement of files in the new directory _rand_replace $SCRATCH_MNT/dir$((i+1)) $COUNT diff --git a/tests/xfs/014 b/tests/xfs/014 index 875ab40..08cd001 100755 --- a/tests/xfs/014 +++ b/tests/xfs/014 @@ -112,6 +112,9 @@ _test_enospc() # consume 1/2 of the current preallocation across the set of 4 writers write_size=$((TOTAL_PREALLOC / 2 / 4)) for i in $(seq 0 3); do + touch $dir/file.$i + done + for i in $(seq 0 3); do $XFS_IO_PROG -f -c "pwrite 0 $write_size" $dir/file.$i \ >> $seqres.full & done diff --git a/tests/xfs/104 b/tests/xfs/104 index 785027e..c3b5977 100755 --- a/tests/xfs/104 +++ b/tests/xfs/104 @@ -65,7 +65,7 @@ _stress_scratch() # -w ensures that the only ops are ones which cause write I/O FSSTRESS_ARGS=`_scale_fsstress_args -d $SCRATCH_MNT -w -p $procs \ -n $nops $FSSTRESS_AVOID` - $FSSTRESS_PROG $FSSTRESS_ARGS >> $seqres.full & + $FSSTRESS_PROG $FSSTRESS_ARGS >> $seqres.full 2>&1 & } # real QA test starts here diff --git a/tests/xfs/109 b/tests/xfs/109 index e0fdec3..2625f15 100755 --- a/tests/xfs/109 +++ b/tests/xfs/109 @@ -79,7 +79,7 @@ allocate() while [ $j -lt 100 ]; do $XFS_IO_PROG -f -c 'pwrite -b 64k 0 16m' $file \ >/dev/null 2>&1 - rm $file + test -e $file && rm $file let j=$j+1 done } &