From 7d1210aa231504de5e97c540b0ee32c151625629 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Sun, 25 Jan 2009 21:31:16 +0100 Subject: [PATCH] add test 202, xfs_repair handling of single-AG filesystems Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen --- 202 | 42 ++++++++++++++++++++++++++++++++++++++++++ 202.out | 31 +++++++++++++++++++++++++++++++ group | 1 + 3 files changed, 74 insertions(+) create mode 100644 202 create mode 100644 202.out diff --git a/202 b/202 new file mode 100644 index 00000000..1eab256a --- /dev/null +++ b/202 @@ -0,0 +1,42 @@ +#! /bin/sh +# FS QA Test No. 202 +# +# Test out the xfs_repair -o force_geometry option on single-AG filesystems. +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 Christoph Hellwig. +#----------------------------------------------------------------------- +# +# creator +owner=hch@lst.de + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +_require_scratch + +echo "== Creating single-AG filesystem ==" +_scratch_mkfs_xfs -d agcount=1 >/dev/null 2>&1 + +echo "== Trying to repair it (should fail) ==" +xfs_repair $SCRATCH_DEV + +echo "== Trying to repair it with -o force_geometry ==" +xfs_repair -o force_geometry $SCRATCH_DEV + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 diff --git a/202.out b/202.out new file mode 100644 index 00000000..f79ce716 --- /dev/null +++ b/202.out @@ -0,0 +1,31 @@ +QA output created by 202 +== Creating single-AG filesystem == +== Trying to repair it (should fail) == +Phase 1 - find and verify superblock... +Only one AG detected - cannot validate filesystem geometry. +Use the -o force_geometry option to proceed. +== Trying to repair it with -o force_geometry == +Phase 1 - find and verify superblock... +Phase 2 - using internal log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... + - agno = 0 + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... + - check for inodes claiming duplicate blocks... + - agno = 0 +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +done +*** done diff --git a/group b/group index e9d450d9..9242ca7a 100644 --- a/group +++ b/group @@ -303,3 +303,4 @@ atime 199 mount auto 200 mount auto 201 metadata auto +202 repair auto -- 2.39.5