All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Thumshirn <jth@kernel.org>
To: Eryu Guan <guaneryu@gmail.com>
Cc: Qu Wenruo <wqu@suse.com>,
	linux-btrfs@vger.kernel.org, fstests@vger.kernel.org,
	Damien Le Moal <Damien.LeMoal@wdc.com>,
	Johannes Thumshirn <jth@kernel.org>
Subject: [PATCH] btrfs/140: use proper helpers to get devid and physical offset for corruption
Date: Fri,  3 Jan 2020 12:18:10 +0100	[thread overview]
Message-ID: <20200103111810.658-1-jth@kernel.org> (raw)

Similar to fstests commit 1a27bf14ef8b "btrfs/14[23]: Use proper help to
get both devid and physical offset for corruption." btrfs/140 needs the
same treatment to pass with updated btrfs-progs.

Signed-off-by: Johannes Thumshirn <jth@kernel.org>
---
 tests/btrfs/140 | 35 +++++++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/tests/btrfs/140 b/tests/btrfs/140
index 1c5aa679..2517263b 100755
--- a/tests/btrfs/140
+++ b/tests/btrfs/140
@@ -46,10 +46,26 @@ _require_odirect
 
 get_physical()
 {
-	# $1 is logical address
-	# print chunk tree and find devid 2 which is $SCRATCH_DEV
+	local logical=$1
+	local stripe=$2
 	$BTRFS_UTIL_PROG inspect-internal dump-tree -t 3 $SCRATCH_DEV | \
-	grep $1 -A 6 | awk '($1 ~ /stripe/ && $3 ~ /devid/ && $4 ~ /1/) { print $6 }'
+		grep $logical -A 6 | \
+		$AWK_PROG "(\$1 ~ /stripe/ && \$3 ~ /devid/ && \$2 ~ /$stripe/) { print \$6 }"
+}
+
+get_devid()
+{
+	local logical=$1
+	local stripe=$2
+	$BTRFS_UTIL_PROG inspect-internal dump-tree -t 3 $SCRATCH_DEV | \
+		grep $logical -A 6 | \
+		$AWK_PROG "(\$1 ~ /stripe/ && \$3 ~ /devid/ && \$2 ~ /$stripe/) { print \$4 }"
+}
+
+get_device_path()
+{
+	local devid=$1
+	echo "$SCRATCH_DEV_POOL" | $AWK_PROG "{print \$$devid}"
 }
 
 _scratch_dev_pool_get 2
@@ -72,10 +88,16 @@ echo "step 2......corrupt file extent" >>$seqres.full
 
 ${FILEFRAG_PROG} -v $SCRATCH_MNT/foobar >> $seqres.full
 logical_in_btrfs=`${FILEFRAG_PROG} -v $SCRATCH_MNT/foobar | _filter_filefrag | cut -d '#' -f 1`
-physical_on_scratch=`get_physical ${logical_in_btrfs}`
+physical=$(get_physical ${logical_in_btrfs} 1)
+devid=$(get_devid ${logical_in_btrfs} 1)
+target_dev=$(get_device_path $devid)
 
 _scratch_unmount
-$XFS_IO_PROG -d -c "pwrite -S 0xbb -b 64K $physical_on_scratch 64K" $SCRATCH_DEV |\
+$BTRFS_UTIL_PROG ins dump-tree -t 3 $SCRATCH_DEV | \
+	grep $logical_in_btrfs -A 6 >> $seqres.full
+echo "Corrupt stripe 1 devid $devid devpath $target_dev physical $physical" \
+	>> $seqres.full
+$XFS_IO_PROG -d -c "pwrite -S 0xbb -b 64K $physical 64K" $target_dev |\
 	_filter_xfs_io_offset
 
 _scratch_mount
@@ -96,7 +118,8 @@ done
 _scratch_unmount
 
 # check if the repair works
-$XFS_IO_PROG -d -c "pread -v -b 512 $physical_on_scratch 512" $SCRATCH_DEV |\
+echo "Reading from physical $physical device $target_dev" >> $seqres.full
+$XFS_IO_PROG -c "pread -v -b 512 $physical 512" $target_dev | \
 	_filter_xfs_io_offset
 
 _scratch_dev_pool_put
-- 
2.16.4


             reply	other threads:[~2020-01-03 11:19 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-03 11:18 Johannes Thumshirn [this message]
2020-01-03 15:42 ` [PATCH] btrfs/140: use proper helpers to get devid and physical offset for corruption Josef Bacik
2020-01-06  8:16 ` Eryu Guan
2020-01-06  8:56   ` Qu Wenruo
2020-01-07  7:14     ` Johannes Thumshirn

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=20200103111810.658-1-jth@kernel.org \
    --to=jth@kernel.org \
    --cc=Damien.LeMoal@wdc.com \
    --cc=fstests@vger.kernel.org \
    --cc=guaneryu@gmail.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=wqu@suse.com \
    /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.