xref: /aosp_15_r20/external/e2fsprogs/tests/u_direct_io/script (revision 6a54128f25917bfc36a8a6e9d722c04a0b4641b6)
1*6a54128fSAndroid Build Coastguard WorkerDESCRIPTION="direct I/O in unix_io"
2*6a54128fSAndroid Build Coastguard WorkerOUT=$test_name.log
3*6a54128fSAndroid Build Coastguard Workerif test "$(id -u)" -ne 0 ; then
4*6a54128fSAndroid Build Coastguard Worker    echo "$test_name: $DESCRIPTION: skipped (not root)"
5*6a54128fSAndroid Build Coastguard Workerelif ! command -v losetup >/dev/null ; then
6*6a54128fSAndroid Build Coastguard Worker    echo "$test_name: $DESCRIPTION: skipped (no losetup)"
7*6a54128fSAndroid Build Coastguard Workerelif test ! -x $DEBUGFS_EXE; then
8*6a54128fSAndroid Build Coastguard Worker    echo "$test_name: $DESCRIPTION: skipped (no debugfs)"
9*6a54128fSAndroid Build Coastguard Workerelse
10*6a54128fSAndroid Build Coastguard Worker    dd if=/dev/zero of=$TMPFILE bs=1M count=128 > /dev/null 2>&1
11*6a54128fSAndroid Build Coastguard Worker    LOOP=$(losetup --show --sector-size 4096 -f $TMPFILE)
12*6a54128fSAndroid Build Coastguard Worker    if [ ! -b "$LOOP" ]; then
13*6a54128fSAndroid Build Coastguard Worker        echo "$test_name: $DESCRIPTION: skipped (no loop devices)"
14*6a54128fSAndroid Build Coastguard Worker        rm -f $TMPFILE
15*6a54128fSAndroid Build Coastguard Worker        exit 0
16*6a54128fSAndroid Build Coastguard Worker    fi
17*6a54128fSAndroid Build Coastguard Worker    echo mke2fs -F -o Linux -t ext4 -O ^metadata_csum,^uninit_bg -D \$LOOP > $OUT
18*6a54128fSAndroid Build Coastguard Worker    $MKE2FS -F -o Linux -t ext4 -O ^metadata_csum,^uninit_bg -D $LOOP 2>&1 | \
19*6a54128fSAndroid Build Coastguard Worker	sed -f $cmd_dir/filter.sed >> $OUT
20*6a54128fSAndroid Build Coastguard Worker
21*6a54128fSAndroid Build Coastguard Worker    echo debugfs -D -R stats \$LOOP >> $OUT
22*6a54128fSAndroid Build Coastguard Worker    $DEBUGFS -D -R stats $LOOP 2>&1 | sed -f $cmd_dir/filter.sed >> $OUT
23*6a54128fSAndroid Build Coastguard Worker
24*6a54128fSAndroid Build Coastguard Worker    echo e2fsck -fn -N test_filesys \$LOOP > $OUT.new
25*6a54128fSAndroid Build Coastguard Worker    $FSCK -fn -N test_filesys $LOOP >> $OUT.new 2>&1
26*6a54128fSAndroid Build Coastguard Worker    echo Exit status is $? >> $OUT.new
27*6a54128fSAndroid Build Coastguard Worker    sed -f $cmd_dir/filter.sed $OUT.new >> $OUT
28*6a54128fSAndroid Build Coastguard Worker    rm -f $OUT.new
29*6a54128fSAndroid Build Coastguard Worker
30*6a54128fSAndroid Build Coastguard Worker    losetup -d $LOOP
31*6a54128fSAndroid Build Coastguard Worker
32*6a54128fSAndroid Build Coastguard Worker    echo e2fsck -fn -N test_filesys \$TMPFILE > $OUT.new
33*6a54128fSAndroid Build Coastguard Worker    $FSCK -fn -N test_filesys $TMPFILE >> $OUT.new 2>&1
34*6a54128fSAndroid Build Coastguard Worker    echo Exit status is $? >> $OUT.new
35*6a54128fSAndroid Build Coastguard Worker    sed -f $cmd_dir/filter.sed $OUT.new >> $OUT
36*6a54128fSAndroid Build Coastguard Worker    rm -f $OUT.new
37*6a54128fSAndroid Build Coastguard Worker
38*6a54128fSAndroid Build Coastguard Worker    cmp -s $test_name.log $test_dir/expect
39*6a54128fSAndroid Build Coastguard Worker
40*6a54128fSAndroid Build Coastguard Worker    if [ "$?" -eq 0 ]; then
41*6a54128fSAndroid Build Coastguard Worker	echo "$test_name: $DESCRIPTION: ok"
42*6a54128fSAndroid Build Coastguard Worker	touch $test_name.ok
43*6a54128fSAndroid Build Coastguard Worker    else
44*6a54128fSAndroid Build Coastguard Worker	echo "$test_name: $DESCRIPTION: failed"
45*6a54128fSAndroid Build Coastguard Worker	diff $DIFF_OPTS $test_dir/expect $test_name.log >> $test_name.failed
46*6a54128fSAndroid Build Coastguard Worker    fi
47*6a54128fSAndroid Build Coastguard Workerfi
48*6a54128fSAndroid Build Coastguard Worker
49*6a54128fSAndroid Build Coastguard Workerunset LOOP
50