mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
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 <jmoyer@redhat.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
committed by
Christoph Hellwig
parent
2dbd21dc15
commit
882c8684b1
@@ -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...
|
||||
|
||||
Reference in New Issue
Block a user