mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
test: fat: add error-checking to non-contig test
Check the result code of all command that are executed. Without this,
if the fallocate invocation fails (this feature is not supported on ext3
filesystems for example) then a zero-length output file will be created,
and subsequent the mkfs and mount invocations will fail, which will cause
the subsequent dd invocation to attempt to fill up the host's entire free
disk space. That's not a nice user experience!
Related, if fallocate does fail, try to create the test disk image using
dd instead. That should work everywhere.
Fixes: 4a28274227
("test: fat: add test of non-contiguous file reads")
Signed-off-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
parent
60f989a939
commit
34a60d9bc8
1 changed files with 32 additions and 0 deletions
|
@ -74,9 +74,25 @@ make O=${odir} -s sandbox_defconfig && make O=${odir} -s -j8
|
|||
mkdir -p ${mnt}
|
||||
if [ ! -f ${img} ]; then
|
||||
fallocate -l 40M ${img}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo fallocate failed - using dd instead
|
||||
dd if=/dev/zero of=${img} bs=1024 count=$((40 * 1024))
|
||||
if [ $? -ne 0 ]; then
|
||||
echo Could not create empty disk image
|
||||
exit $?
|
||||
fi
|
||||
fi
|
||||
mkfs.fat ${img}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo Could not create FAT filesystem
|
||||
exit $?
|
||||
fi
|
||||
|
||||
sudo mount -o loop,uid=$(id -u) ${img} ${mnt}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo Could not mount test filesystem
|
||||
exit $?
|
||||
fi
|
||||
|
||||
for ((sects=8; sects < 512; sects += 8)); do
|
||||
fn=${mnt}/keep-${sects}.img
|
||||
|
@ -92,11 +108,23 @@ if [ ! -f ${img} ]; then
|
|||
dd if=${fill} of=${mnttestfn} bs=511 >/dev/null 2>&1
|
||||
|
||||
sudo umount ${mnt}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo Could not unmount test filesystem
|
||||
exit $?
|
||||
fi
|
||||
fi
|
||||
|
||||
sudo mount -o ro,loop,uid=$(id -u) ${img} ${mnt}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo Could not mount test filesystem
|
||||
exit $?
|
||||
fi
|
||||
crc=0x`crc32 ${mnttestfn}`
|
||||
sudo umount ${mnt}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo Could not unmount test filesystem
|
||||
exit $?
|
||||
fi
|
||||
|
||||
crc=`printf %02x%02x%02x%02x \
|
||||
$((${crc} & 0xff)) \
|
||||
|
@ -111,3 +139,7 @@ crc32 ${loadaddr} \$filesize ${crcaddr}
|
|||
if itest.l *${crcaddr} != ${crc}; then echo FAILURE; else echo PASS; fi
|
||||
reset
|
||||
EOF
|
||||
if [ $? -ne 0 ]; then
|
||||
echo U-Boot exit status indicates an error
|
||||
exit $?
|
||||
fi
|
||||
|
|
Loading…
Reference in a new issue