From: Jeff Moyer Date: Fri, 11 Feb 2011 22:04:37 +0000 (-0500) Subject: 078: xfs_repair should be run against the losetup'd device, not the image file X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=882c8684b14ba6623130e9a495207e0e44bbd664;p=xfstests-dev.git 078: xfs_repair should be run against the losetup'd device, not the image file When running test 078 against a 4k logical block sized disk, it fails in xfs_repair. The problem is that xfs_repair is passed the loopback filename instead of the actual loop device. This means that it opens the file O_DIRECT, and tries to do 512 byte aligned I/O to a 4k sector device. The loop device, for better or for worse, will do buffered I/O, and thus does not suffer from the same problem. So, the attached patch sets up the loop device and passes that to xfs_repair. This resolves the issue on my test system. Comments are more than welcome. Signed-off-by: Jeff Moyer Signed-off-by: Christoph Hellwig --- diff --git a/078 b/078 index b8d9132e..5cb66dfa 100755 --- a/078 +++ b/078 @@ -53,7 +53,7 @@ _supported_os Linux # Must have loop device _require_loop -LOOP_DEV=$TEST_DIR/$seq.fs +LOOP_IMG=$TEST_DIR/$seq.fs LOOP_MNT=$TEST_DIR/$seq.mnt _filter_io() @@ -75,7 +75,7 @@ _grow_loop() check=$4 agsize=$5 - dparam="file,name=$LOOP_DEV,size=$original" + dparam="file,name=$LOOP_IMG,size=$original" if [ -n "$agsize" ]; then dparam="$dparam,agsize=$agsize" fi @@ -89,9 +89,9 @@ _grow_loop() | _filter_mkfs 2>/dev/null echo "*** extend loop file" - $XFS_IO_PROG -c "pwrite $new_size $bsize" $LOOP_DEV | _filter_io + $XFS_IO_PROG -c "pwrite $new_size $bsize" $LOOP_IMG | _filter_io echo "*** mount loop filesystem" - mount -t xfs -o loop $LOOP_DEV $LOOP_MNT + mount -t xfs -o loop $LOOP_IMG $LOOP_MNT echo "*** grow loop filesystem" #xfs_growfs $LOOP_MNT 2>&1 | grep -e "^data" #| _filter_growfs 2>/dev/null @@ -104,10 +104,13 @@ _grow_loop() if [ "$check" -gt "0" ] then echo "*** check" + LOOP_DEV=`losetup -f` + losetup $LOOP_DEV $LOOP_IMG _check_xfs_filesystem $LOOP_DEV none none + losetup -d $LOOP_DEV fi - rm -f $LOOP_DEV + rm -f $LOOP_IMG } # Wes' problem sizes...