}
run_test 129 "test directory size limit ========================"
+OLDIFS="$IFS"
+cleanup_130() {
+ trap 0
+ IFS="$OLDIFS"
+}
+
test_130a() {
filefrag_op=$(filefrag -e 2>&1 | grep "invalid option")
[ -n "$filefrag_op" ] && skip "filefrag does not support FIEMAP" && return
+ trap cleanup_130 EXIT RETURN
+
local fm_file=$DIR/$tfile
lfs setstripe -s 65536 -c 1 $fm_file || error "setstripe failed on $fm_file"
dd if=/dev/zero of=$fm_file bs=65536 count=1 || error "dd failed for $fm_file"
frag_lun=`echo $line | cut -d: -f5`
ext_len=`echo $line | cut -d: -f4`
if (( $frag_lun != $lun )); then
+ cleanup_130
error "FIEMAP on 1-stripe file($fm_file) failed"
return
fi
done
if (( lun != frag_lun || start_blk != 0 || tot_len != 64 )); then
+ cleanup_130
error "FIEMAP on 1-stripe file($fm_file) failed;"
return
fi
+
+ cleanup_130
+
echo "FIEMAP on single striped file succeeded"
}
run_test 130a "FIEMAP (1-stripe file)"
filefrag_op=$(filefrag -e 2>&1 | grep "invalid option")
[ -n "$filefrag_op" ] && skip "filefrag does not support FIEMAP" && return
+ trap cleanup_130 EXIT RETURN
+
local fm_file=$DIR/$tfile
lfs setstripe -s 65536 -c 2 $fm_file || error "setstripe failed on $fm_file"
dd if=/dev/zero of=$fm_file bs=1M count=2 || error "dd failed on $fm_file"
ext_len=`echo $line | cut -d: -f4`
if (( $frag_lun != $last_lun )); then
if (( tot_len != 1024 )); then
+ cleanup_130
error "FIEMAP on $fm_file failed; returned len $tot_len for OST $last_lun instead of 256"
return
else
last_lun=$frag_lun
done
if (( num_luns != 2 || tot_len != 1024 )); then
+ cleanup_130
error "FIEMAP on $fm_file failed; returned wrong number of luns or wrong len for OST $last_lun"
return
fi
+ cleanup_130
+
echo "FIEMAP on 2-stripe file succeeded"
}
run_test 130b "FIEMAP (2-stripe file)"
filefrag_op=$(filefrag -e 2>&1 | grep "invalid option")
[ -n "$filefrag_op" ] && skip "filefrag does not support FIEMAP" && return
+ trap cleanup_130 EXIT RETURN
+
local fm_file=$DIR/$tfile
lfs setstripe -s 65536 -c 2 $fm_file || error "setstripe failed on $fm_file"
dd if=/dev/zero of=$fm_file seek=1 bs=1M count=1 || error "dd failed on $fm_file"
if (( $frag_lun != $last_lun )); then
logical=`echo $line | cut -d: -f2 | cut -d. -f1`
if (( logical != 512 )); then
+ cleanup_130
error "FIEMAP on $fm_file failed; returned logical start for lun $logical instead of 512"
return
fi
if (( tot_len != 512 )); then
+ cleanup_130
error "FIEMAP on $fm_file failed; returned len $tot_len for OST $last_lun instead of 1024"
return
else
last_lun=$frag_lun
done
if (( num_luns != 2 || tot_len != 512 )); then
+ cleanup_130
error "FIEMAP on $fm_file failed; returned wrong number of luns or wrong len for OST $last_lun"
return
fi
+ cleanup_130
+
echo "FIEMAP on 2-stripe file with hole succeeded"
}
run_test 130c "FIEMAP (2-stripe file with hole)"
filefrag_op=$(filefrag -e 2>&1 | grep "invalid option")
[ -n "$filefrag_op" ] && skip "filefrag does not support FIEMAP" && return
+ trap cleanup_130 EXIT RETURN
+
local fm_file=$DIR/$tfile
lfs setstripe -s 65536 -c $OSTCOUNT $fm_file || error "setstripe failed on $fm_file"
dd if=/dev/zero of=$fm_file bs=1M count=$OSTCOUNT || error "dd failed on $fm_file"
ext_len=`echo $line | cut -d: -f4`
if (( $frag_lun != $last_lun )); then
if (( tot_len != 1024 )); then
+ cleanup_130
error "FIEMAP on $fm_file failed; returned len $tot_len for OST $last_lun instead of 1024"
return
else
last_lun=$frag_lun
done
if (( num_luns != OSTCOUNT || tot_len != 1024 )); then
+ cleanup_130
error "FIEMAP on $fm_file failed; returned wrong number of luns or wrong len for OST $last_lun"
return
fi
+ cleanup_130
+
echo "FIEMAP on N-stripe file succeeded"
}
run_test 130d "FIEMAP (N-stripe file)"
filefrag_op=$(filefrag -e 2>&1 | grep "invalid option")
[ -n "$filefrag_op" ] && skip "filefrag does not support FIEMAP" && return
+ trap cleanup_130 EXIT RETURN
+
local fm_file=$DIR/$tfile
lfs setstripe -s 65536 -c 2 $fm_file || error "setstripe failed on $fm_file"
NUM_BLKS=512
ext_len=`echo $line | cut -d: -f4`
if (( $frag_lun != $last_lun )); then
if (( tot_len != $EXPECTED_LEN )); then
+ cleanup_130
error "FIEMAP on $fm_file failed; returned len $tot_len for OST $last_lun instead of $EXPECTED_LEN"
return
else
last_lun=$frag_lun
done
if (( num_luns != 2 || tot_len != $EXPECTED_LEN )); then
- echo "$num_luns $tot_len"
+ cleanup_130
error "FIEMAP on $fm_file failed; returned wrong number of luns or wrong len for OST $last_lun"
return
fi
+ cleanup_130
+
echo "FIEMAP with continuation calls succeeded"
}
run_test 130e "FIEMAP (test continuation FIEMAP calls)"