Hi Stephen,
On 2 October 2015 at 06:56, Stephen Warren wrote:
> In my patch series to replace fs/fat with "ff.c", I enhanced ff.c to
> optimize file reading, so that reads of contiguous clusters are submitted
> to the IO device as a single read. This test attempts to torture-test
> edge-cases of that enhancement.
>
> BTW, the only way I found to validate that this script actually does
> create non-contiguous files was to manually inspect the FAT bitmap in a
> hex dump of the FAT image. hdparm --fibmap doesn't work on loop-mounted
> filesystems. filefrag -v -e seems to lie about files being contiguous
> when they aren't.
>
> Signed-off-by: Stephen Warren
> ---
> test/fs/fat-noncontig-test.sh | 52
> +++
> 1 file changed, 52 insertions(+)
> create mode 100755 test/fs/fat-noncontig-test.sh
>
> diff --git a/test/fs/fat-noncontig-test.sh b/test/fs/fat-noncontig-test.sh
> new file mode 100755
> index ..8153708bbf78
> --- /dev/null
> +++ b/test/fs/fat-noncontig-test.sh
> @@ -0,0 +1,52 @@
> +#!/bin/bash
> +
Can you add a comment explaining what this test does?
Also I get this:
mount: mount point /mnt/tmp does not exist
umount: /mnt/tmp: not found
mount: mount point /mnt/tmp does not exist
/usr/bin/crc32: No such file or directory
umount: /mnt/tmp: not found
so does it need some extra steps?
> +odir=sandbox
> +img=${odir}/fat.img
> +mnt=/mnt/tmp
> +fill=/dev/urandom
> +testfn=noncontig.img
> +mnttestfn=${mnt}/${testfn}
> +crcaddr=0
> +loadaddr=1000
> +
> +make O=${odir} -s sandbox_defconfig && make O=${odir} -s -j8
> +
> +if [ ! -f ${img} ]; then
> +fallocate -l 40M ${img}
> +mkfs -t fat ${img}
> +
> +sudo mount -o loop,uid=$(id -u) ${img} ${mnt}
> +
> +for ((sects=8; sects < 512; sects += 8)); do
> +fn=${mnt}/keep-${sects}.img
> +dd if=${fill} of=${fn} bs=512 count=${sects} >/dev/null 2>&1
> +fn=${mnt}/remove-${sects}.img
> +dd if=${fill} of=${fn} bs=512 count=${sects} >/dev/null 2>&1
> +done
> +
> +rm -f ${mnt}/remove-*.img
> +
> +# 511 deliberately to trigger a file size that's not a multiple of the
> +# sector size (ignoring sizes that are multiples of both).
> +dd if=${fill} of=${mnttestfn} bs=511 >/dev/null 2>&1
> +
> +sudo umount ${mnt}
> +fi
> +
> +sudo mount -o ro,loop,uid=$(id -u) ${img} ${mnt}
> +crc=0x`crc32 ${mnttestfn}`
> +sudo umount ${mnt}
> +
> +crc=`printf %02x%02x%02x%02x \
> +$((${crc} & 0xff)) \
> +$(((${crc} >> 8) & 0xff)) \
> +$(((${crc} >> 16) & 0xff)) \
> +$((${crc} >> 24))`
> +
> +./sandbox/u-boot << EOF
> +host bind 0 ${img}
> +load host 0:0 ${loadaddr} ${testfn}
> +crc32 ${loadaddr} \$filesize ${crcaddr}
> +if itest.l *${crcaddr} != ${crc}; then echo FAILURE; else echo PASS; fi
> +reset
> +EOF
> --
> 1.9.1
>
Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot