From: Christoph Hellwig <hch@lst.de>
To: zlang@kernel.org
Cc: djwong@kernel.org, fstests@vger.kernel.org
Subject: [PATCH] shared/298: call fs commands on the loop device
Date: Tue, 5 Mar 2024 18:22:46 -0700 [thread overview]
Message-ID: <20240306012246.162729-1-hch@lst.de> (raw)
In general calling fs tools is best done on the block device used for
the file system and not the backing device of a loop file. Thus switch
shared/298 to call all fs commands on the loop device. Also add a
common on why the xfs_io fiemap command is called on the backing file,
and to have a good place for the comment stop passing the backing file
as the argument to get_holes function and just use it implicitly as
the other helpers to with the loop device.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
tests/shared/298 | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/tests/shared/298 b/tests/shared/298
index a6e368143..1d4e8d943 100755
--- a/tests/shared/298
+++ b/tests/shared/298
@@ -46,7 +46,11 @@ get_holes()
# to established convention which requires the filesystem to be
# unmounted while we probe the underlying file.
$UMOUNT_PROG $loop_mnt
- $XFS_IO_PROG -F -c fiemap $1 | grep hole | $SED_PROG 's/.*\[\(.*\)\.\.\(.*\)\].*/\1 \2/'
+
+ # FIEMAP only works on regular files, so call it on the backing file
+ # and not the loop device like everything else
+ $XFS_IO_PROG -F -c fiemap $img_file | grep hole | \
+ $SED_PROG 's/.*\[\(.*\)\.\.\(.*\)\].*/\1 \2/'
_mount $loop_dev $loop_mnt
}
@@ -55,7 +59,7 @@ get_free_sectors()
case $FSTYP in
ext4)
$UMOUNT_PROG $loop_mnt
- $DUMPE2FS_PROG $img_file 2>&1 | grep " Free blocks" | cut -d ":" -f2- | \
+ $DUMPE2FS_PROG $loop_dev 2>&1 | grep " Free blocks" | cut -d ":" -f2- | \
tr ',' '\n' | $SED_PROG 's/^ //' | \
$AWK_PROG -v spb=$sectors_per_block 'BEGIN{FS="-"};
NF {
@@ -77,15 +81,15 @@ get_free_sectors()
local device_size=$($BTRFS_UTIL_PROG filesystem show --raw $loop_mnt 2>&1 \
| sed -n "s/^.*size \([0-9]*\).*$/\1/p")
- local nodesize=$($BTRFS_UTIL_PROG inspect-internal dump-super $img_file \
+ local nodesize=$($BTRFS_UTIL_PROG inspect-internal dump-super $loop_dev \
| sed -n 's/nodesize\s*\(.*\)/\1/p')
# Get holes within block groups
- $BTRFS_UTIL_PROG inspect-internal dump-tree -t extent $img_file \
+ $BTRFS_UTIL_PROG inspect-internal dump-tree -t extent $loop_dev \
| $AWK_PROG -v sectorsize=512 -v nodesize=$nodesize -f $here/src/parse-extent-tree.awk
# Get holes within unallocated space on disk
- $BTRFS_UTIL_PROG inspect-internal dump-tree -t dev $img_file \
+ $BTRFS_UTIL_PROG inspect-internal dump-tree -t dev $loop_dev \
| $AWK_PROG -v sectorsize=512 -v devsize=$device_size -f $here/src/parse-dev-tree.awk
;;
@@ -159,7 +163,7 @@ done
# Get reference fiemap, this can contain i.e. uninitialized inode table
sync
-get_holes $img_file > $fiemap_ref
+get_holes > $fiemap_ref
# Delete some files
find $loop_mnt -type f -print | $AWK_PROG \
@@ -173,7 +177,7 @@ echo "done."
echo -n "Detecting interesting holes in image..."
# Get after-trim fiemap
sync
-get_holes $img_file > $fiemap_after
+get_holes > $fiemap_after
echo "done."
echo -n "Comparing holes to the reported space from FS..."
--
2.39.2
next reply other threads:[~2024-03-06 1:22 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-06 1:22 Christoph Hellwig [this message]
2024-03-06 15:39 ` [PATCH] shared/298: call fs commands on the loop device Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240306012246.162729-1-hch@lst.de \
--to=hch@lst.de \
--cc=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=zlang@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.