All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marco Benatto <mbenatto@redhat.com>
To: fstests@vger.kernel.org
Cc: linux-xfs@vger.kernel.org, mbenatto@redhat.com
Subject: [PATCH] xfstests: Teste root inode parent pointer repairing
Date: Fri, 15 Jun 2018 18:14:48 -0300	[thread overview]
Message-ID: <20180615211448.7341-1-mbenatto@redhat.com> (raw)

Recently we found out xfs_repair were not repairing
root inode parent pointer when root inode is on short-form
and parent points to an invalid inode number (refer to:
"xfs_repair: Fix root inode's parent when it's bogus for sf
directory" on xfs-devel list).

This test checks if xfs_repair successfully repair the
filesystem in the scenario mentioned before.

Signed-off-by: Marco Benatto <mbenatto@redhat.com>
---
 tests/xfs/450     | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/450.out |  1 +
 tests/xfs/group   |  1 +
 3 files changed, 67 insertions(+)
 create mode 100755 tests/xfs/450
 create mode 100644 tests/xfs/450.out

diff --git a/tests/xfs/450 b/tests/xfs/450
new file mode 100755
index 0000000..7e33431
--- /dev/null
+++ b/tests/xfs/450
@@ -0,0 +1,65 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2018 Red Hat Inc.  All Rights Reserved.
+#
+# FS QA Test 450
+#
+# Make sure xfs_repair can repair root inode parent's pointer
+# when it contains a bogus ino when it's using shot form directory
+#
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+
+status=1	# failure is the default!
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs xfs
+_supported_os Linux
+_require_scratch
+
+
+_scratch_mkfs >> /dev/null 2>&1
+
+# Check on-disk format version
+ver=$($XFS_DB_PROG -c 'sb 0' -c 'addr rootino' -c 'p core.version' $SCRATCH_DEV |
+		awk '{print$3}')
+
+case $ver in
+	2)
+		prefix="u.sfdir2"
+		;;
+	3)
+		prefix="u3.sfdir3"
+		;;
+	*)
+		_notrun "can't modify this disk format"
+		;;
+esac
+
+_scratch_xfs_db -x -c 'sb 0' \
+					-c 'addr rootino' \
+					-c "write ${prefix}.hdr.parent.i4 0" >> /$seqres.full 2>&1 \
+				|| _fail "xfs_db command failed"
+
+_scratch_xfs_repair >> $seqres.full 2>&1
+
+_scratch_xfs_repair -n >> $seqres.full 2>&1
+
+if [ $? -eq 1 ]
+then
+	_fail "xfs_repair failed to repair filesystem"
+else
+	echo "OK"
+	status=0
+fi
+
+exit
diff --git a/tests/xfs/450.out b/tests/xfs/450.out
new file mode 100644
index 0000000..d86bac9
--- /dev/null
+++ b/tests/xfs/450.out
@@ -0,0 +1 @@
+OK
diff --git a/tests/xfs/group b/tests/xfs/group
index 932ab90..3a1db0b 100644
--- a/tests/xfs/group
+++ b/tests/xfs/group
@@ -447,3 +447,4 @@
 447 auto mount
 448 auto quick fuzzers
 449 auto quick
+450 auto quick
-- 
2.9.5


             reply	other threads:[~2018-06-15 21:14 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-15 21:14 Marco Benatto [this message]
2018-06-15 21:21 ` [PATCH] xfstests: Teste root inode parent pointer repairing Darrick J. Wong
2018-06-18 17:45   ` Marco Benatto

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=20180615211448.7341-1-mbenatto@redhat.com \
    --to=mbenatto@redhat.com \
    --cc=fstests@vger.kernel.org \
    --cc=linux-xfs@vger.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.