Create test 178 as described by bnaujok.

Merge of master-melb:xfs-cmds:29273a by kenmcd.

  New Test
This commit is contained in:
Mohamed Barwani
2007-07-30 15:59:01 +00:00
parent d671606385
commit f9ab891b3a
4 changed files with 167 additions and 0 deletions
Executable
+84
View File
@@ -0,0 +1,84 @@
#! /bin/sh
# FS QA Test No. 178
#
# Reproduce PV#:967665
# Test if mkfs.xfs wipes old AG headers when using -f option
#
#-----------------------------------------------------------------------
# Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved.
#-----------------------------------------------------------------------
#
# creator
owner=mohamedb@sgi.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
cd /
rm -f $tmp.*
}
# dd the 1st sector then repair
_dd_repair_check()
{
#dd first sector
dd if=/dev/zero of=$1 bs=$2 count=1 2>&1 | _filter_dd
#xfs_repair
_scratch_xfs_repair 2>&1 | _filter_repair
#check repair
if _check_scratch_fs; then
echo "repair passed"
else
echo "repair failed!"
fi
}
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.repair
# real QA test starts here
# Modify as appropriate.
_supported_fs xfs
_supported_os Linux
# From the PV
# o Summary of testing:
# 1. mkfs.xfs a default filesystem, note agcount value.
# 2. dd zero first sector and repair and verify.
# 3. mkfs.xfs overriding agcount to a smaller value
# (ie. each AG is bigger)
# 4. dd zero first sector, repair and verify.
# -> old mkfs.xfs will cause repair to incorrectly
# fix filesystem, new mkfs.xfs will be fine.
_require_scratch
_scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs \
|| _fail "mkfs failed!"
# By executing the followint tmp file, will get on the mkfs options stored in
# variables
. $tmp.mkfs
[ $agcount -le 2 ] && _notrun "Test requires more than 2 AGs."
_dd_repair_check $SCRATCH_DEV $sectsz
# smaller AGCOUNT
let "agcount=$agcount-2"
_scratch_mkfs_xfs -dagcount=$agcount >/dev/null 2>&1 \
|| _fail "mkfs failed!"
_dd_repair_check $SCRATCH_DEV $sectsz
# success, all done
status=0
exit
+79
View File
@@ -0,0 +1,79 @@
QA output created by 178
meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks
data = bsize=XXX blocks=XXX, imaxpct=PCT
= sunit=XXX swidth=XXX, unwritten=X
naming =VERN bsize=XXX
log =LDEV bsize=XXX blocks=XXX
realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX
Phase 1 - find and verify superblock...
bad primary superblock - bad magic number !!!
attempting to find secondary superblock...
found candidate secondary superblock...
verified secondary superblock...
writing modified primary superblock
sb root inode value INO inconsistent with calculated value INO
resetting superblock root inode pointer to INO
sb realtime bitmap inode INO inconsistent with calculated value INO
resetting superblock realtime bitmap ino pointer to INO
sb realtime summary inode INO inconsistent with calculated value INO
resetting superblock realtime summary ino pointer to INO
Phase 2 - using <TYPEOF> 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...
- process newly discovered inodes...
Phase 4 - check for duplicate blocks...
- setting up duplicate extent list...
- check for inodes claiming duplicate blocks...
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...
Note - stripe unit (0) and width (0) fields have been reset.
Please set with mount -o sunit=<value>,swidth=<value>
done
repair passed
Phase 1 - find and verify superblock...
bad primary superblock - bad magic number !!!
attempting to find secondary superblock...
found candidate secondary superblock...
verified secondary superblock...
writing modified primary superblock
sb root inode value INO inconsistent with calculated value INO
resetting superblock root inode pointer to INO
sb realtime bitmap inode INO inconsistent with calculated value INO
resetting superblock realtime bitmap ino pointer to INO
sb realtime summary inode INO inconsistent with calculated value INO
resetting superblock realtime summary ino pointer to INO
Phase 2 - using <TYPEOF> 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...
- process newly discovered inodes...
Phase 4 - check for duplicate blocks...
- setting up duplicate extent list...
- check for inodes claiming duplicate blocks...
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...
Note - stripe unit (0) and width (0) fields have been reset.
Please set with mount -o sunit=<value>,swidth=<value>
done
repair passed
+3
View File
@@ -124,6 +124,9 @@ _filter_mkfs()
print STDERR "ddev=$1\nisize=$2\nagcount=$3\nagsize=$4\n";
print STDOUT "meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks\n";
}
if (/^\s+=\s+sectsz=(\d+)\s+attr=(\d+)/) {
print STDERR "sectsz=$1\nattr=$2\n";
}
if (/^data\s+=\s+bsize=(\d+)\s+blocks=(\d+), imaxpct=(\d+)/) {
print STDERR "dbsize=$1\ndblocks=$2\nimaxpct=$3\n";
print STDOUT "data = bsize=XXX blocks=XXX, imaxpct=PCT\n";
+1
View File
@@ -263,3 +263,4 @@ filestreams dgc@sgi.com
173 rw filestreams auto
174 rw filestreams auto
177 rw other auto
178 mkfs other auto