You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
#!/bin/sh
|
|
OPTS="-O bigalloc -C 8192"
|
|
SIZE=4096
|
|
IMG=/tmp/foo.img
|
|
TMP=$(mktemp)
|
|
SIZE_A=15000
|
|
SIZE_B=5000
|
|
SIZE_C=20000
|
|
|
|
DEBUGFS=./debugfs/debugfs
|
|
MKE2FS=./misc/mke2fs
|
|
FSCK=./e2fsck/e2fsck
|
|
|
|
dd if=/dev/zero of=$IMG bs=1k count=$SIZE
|
|
echo $MKE2FS -F -t ext4 -L test $OPTS test.img $SIZE
|
|
$MKE2FS -F -t ext4 -L test $OPTS $IMG $SIZE
|
|
dd if=/dev/zero of=$TMP bs=$SIZE_A count=1 >& /dev/null
|
|
echo Writing $SIZE_A bytes to a
|
|
$DEBUGFS -w -R "write $TMP a" $IMG
|
|
BLKS=$(./debugfs/debugfs -R "blocks a" $IMG)
|
|
cp /dev/null $TMP
|
|
echo "Releasing blocks $BLKS"
|
|
for i in $BLKS ; do echo "freeb $i" >> $TMP; done
|
|
$DEBUGFS -w $IMG < $TMP >& /dev/null
|
|
|
|
echo Writing $SIZE_B bytes to b
|
|
dd if=/dev/zero of=$TMP bs=$SIZE_B count=1 >& /dev/null
|
|
$DEBUGFS -w -R "write $TMP b" $IMG
|
|
if [ -n "$SIZE_C" ]; then
|
|
BLKS=$(./debugfs/debugfs -R "blocks b" $IMG)
|
|
cp /dev/null $TMP
|
|
echo "Releasing blocks $BLKS"
|
|
for i in $BLKS ; do echo "freeb $i" >> $TMP; done
|
|
$DEBUGFS -w $IMG < $TMP >& /dev/null
|
|
|
|
echo Writing $SIZE_C bytes to c
|
|
dd if=/dev/zero of=$TMP bs=$SIZE_C count=1 >& /dev/null
|
|
$DEBUGFS -w -R "write $TMP c" $IMG
|
|
fi
|
|
echo "set_inode_field a mtime 201107040000" > $TMP
|
|
echo "set_inode_field b mtime 201107050000" >> $TMP
|
|
if [ -n "$SIZE_C" ]; then
|
|
echo "set_inode_field c mtime 201107060000" >> $TMP
|
|
fi
|
|
$DEBUGFS -w $IMG < $TMP >& /dev/null
|
|
|
|
$FSCK -fy $IMG
|
|
rm $TMP
|
|
|