defrag: add options to _defrag helper

Sometimes it is not easy to know number of expected extents in advance.
In that case it is reasonable to provide sane MIN and MAX values.
Also helper will check that number of extents before defragmentaion
is not greather than after.

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Dmitry Monakhov
2014-08-13 11:16:49 +10:00
committed by Dave Chinner
parent 6bcae5cbe4
commit 2f87a77e0f
2 changed files with 99 additions and 14 deletions
+6 -6
View File
@@ -60,33 +60,33 @@ rm -f $fragfile
echo "zero-length file:" | tee -a $seqres.full
touch $fragfile
_defrag $fragfile
_defrag --before 0 --after 0 $fragfile
echo "Sparse file (no blocks):" | tee -a $seqres.full
$XFS_IO_PROG -f -c "truncate 1m" $fragfile
_defrag $fragfile
_defrag --before 0 --after 0 $fragfile
echo "Contiguous file:" | tee -a $seqres.full
dd if=/dev/zero of=$fragfile bs=4k count=4 &>/dev/null
_defrag $fragfile
_defrag --before 1 --after 1 $fragfile
echo "Write backwards sync, but contiguous - should defrag to 1 extent" | tee -a $seqres.full
for I in `seq 9 -1 0`; do
dd if=/dev/zero of=$fragfile bs=4k count=1 conv=notrunc seek=$I oflag=sync &>/dev/null
done
_defrag $fragfile
_defrag --before 10 --after 1 $fragfile
echo "Write backwards sync leaving holes - defrag should do nothing" | tee -a $seqres.full
for I in `seq 31 -2 0`; do
dd if=/dev/zero of=$fragfile bs=4k count=1 conv=notrunc seek=$I oflag=sync &>/dev/null
done
_defrag $fragfile
_defrag --before 16 --after 16 $fragfile
echo "Write forwards sync leaving holes - defrag should do nothing" | tee -a $seqres.full
for I in `seq 0 2 31`; do
dd if=/dev/zero of=$fragfile bs=4k count=1 conv=notrunc seek=$I oflag=sync &>/dev/null
done
_defrag $fragfile
_defrag --before 16 --after 16 $fragfile
rm -f $seqres.full
status=0