50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/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
 | 
						|
 |