From patchwork Mon Jun 24 15:17:27 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josef Bacik X-Patchwork-Id: 2771901 Return-Path: X-Original-To: patchwork-linux-btrfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id D4EB29F3A0 for ; Mon, 24 Jun 2013 15:18:01 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id D50A220198 for ; Mon, 24 Jun 2013 15:17:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 394E420190 for ; Mon, 24 Jun 2013 15:17:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750939Ab3FXPRs (ORCPT ); Mon, 24 Jun 2013 11:17:48 -0400 Received: from dkim1.fusionio.com ([66.114.96.53]:35906 "EHLO dkim1.fusionio.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751182Ab3FXPRq (ORCPT ); Mon, 24 Jun 2013 11:17:46 -0400 Received: from mx2.fusionio.com (unknown [10.101.1.160]) by dkim1.fusionio.com (Postfix) with ESMTP id B28DF7C035B for ; Mon, 24 Jun 2013 09:17:45 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fusionio.com; s=default; t=1372087065; bh=anPX0CwClPCvY4lE3V3fKhbAFOrK2yyTnWDW9vfekyc=; h=From:To:Subject:Date; b=ahKNpn0a6X2u6rctIt0qXJOGb0JCDZLk2/puedOAgDLILgiw34rOf/6NsTlNGjrVW XJ21ypqgzsJ1UBiQ84lPXrkVUrqRAb8qnQ+m72b91+YiQGtiGktkeavUotdxkxHErA gmTpolEhaWbv9C+/UyCZNm/IZq8g7sWeAYumV9/c= X-ASG-Debug-ID: 1372087064-0421b502206f220001-6jHSXT Received: from CAS2.int.fusionio.com (cas2.int.fusionio.com [10.101.1.41]) by mx2.fusionio.com with ESMTP id 4ltNCO7cMOs4fexR (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO); Mon, 24 Jun 2013 09:17:44 -0600 (MDT) X-Barracuda-Envelope-From: JBacik@fusionio.com Received: from localhost (10.101.1.160) by mail.fusionio.com (10.101.1.41) with Microsoft SMTP Server (TLS) id 14.3.123.3; Mon, 24 Jun 2013 09:17:44 -0600 From: Josef Bacik To: , Subject: [PATCH] xfstests: fix btrfs/265 so it actually works Date: Mon, 24 Jun 2013 11:17:27 -0400 X-ASG-Orig-Subj: [PATCH] xfstests: fix btrfs/265 so it actually works Message-ID: <1372087047-3176-1-git-send-email-jbacik@fusionio.com> X-Mailer: git-send-email 1.7.7.6 MIME-Version: 1.0 X-Originating-IP: [10.101.1.160] X-Barracuda-Connect: cas2.int.fusionio.com[10.101.1.41] X-Barracuda-Start-Time: 1372087064 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://10.101.1.181:8000/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at fusionio.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.134841 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Spam-Status: No, score=-7.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP There are a few problems with btrfs/265. First we don't redirect the output of btrfs fi ba somwhere else, so we fail this test outright. Secondly if you have less than 4 devices in your scratch dev pool it won't work because you can't mkfs raid10 without 4 devices. This is all impossible to figure out at first glance because the test redirects all output to /dev/null. So do a few things 1) Redirect all output to $seqres.full to help the next poor sap who finds a problem. 2) Add an optional option for _require_scratch_dev_pool to specify the minimum number of devices required to run the test, so you get a nice helpful error instead of "mkfs failed" in $seqres.full if you don't specify enough devices in your scratch dev pool. 3) Redirect the output from btrfs fi ba to $seqres.full instead of letting its output go to stdout and making the test fail anyways. With these changes this test now passes for me. Thanks, Signed-off-by: Josef Bacik --- common/rc | 11 ++++++++--- tests/btrfs/265 | 30 ++++++++++++++++-------------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/common/rc b/common/rc index fe6bbfc..ad7cbc9 100644 --- a/common/rc +++ b/common/rc @@ -1964,10 +1964,15 @@ _test_inode_extsz() echo $blocks } -# scratch_dev_pool should contain the disks pool for the btrfs raid +# scratch_dev_pool should contain the disks pool for the btrfs raid, optionally +# you can provide the minimum number of devices required for this test _require_scratch_dev_pool() { local i + local _count=2 + + [ $# -eq 1 ] && _count=$1 + if [ -z "$SCRATCH_DEV_POOL" ]; then _notrun "this test requires a valid \$SCRATCH_DEV_POOL" fi @@ -1976,8 +1981,8 @@ _require_scratch_dev_pool() # so fail it case $FSTYP in btrfs) - if [ "`echo $SCRATCH_DEV_POOL|wc -w`" -lt 2 ]; then - _notrun "btrfs and this test needs 2 or more disks in SCRATCH_DEV_POOL" + if [ "`echo $SCRATCH_DEV_POOL|wc -w`" -lt $_count ]; then + _notrun "btrfs and this test needs $_count or more disks in SCRATCH_DEV_POOL" fi ;; *) diff --git a/tests/btrfs/265 b/tests/btrfs/265 index 79a9ddf..fcf5730 100755 --- a/tests/btrfs/265 +++ b/tests/btrfs/265 @@ -49,14 +49,16 @@ _need_to_be_root _supported_fs btrfs _supported_os Linux _require_scratch -_require_scratch_dev_pool +_require_scratch_dev_pool 4 _require_deletable_scratch_dev_pool +rm -f $seqres.full + # Test cases related to raid in btrfs _test_raid0() { export MKFS_OPTIONS="-m raid0 -d raid0" - _scratch_mkfs $SCRATCH_DEV_POOL > /dev/null 2>&1 || _fail "mkfs failed" + _scratch_mkfs $SCRATCH_DEV_POOL >> $seqres.full 2>&1 || _fail "mkfs failed" _scratch_mount dirp=`mktemp -duq $SCRATCH_MNT/dir.XXXXXX` _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 @@ -66,7 +68,7 @@ _test_raid0() _test_raid1() { export MKFS_OPTIONS="-m raid1 -d raid1" - _scratch_mkfs $SCRATCH_DEV_POOL > /dev/null 2>&1 || _fail "mkfs failed" + _scratch_mkfs $SCRATCH_DEV_POOL >> $seqres.full 2>&1 || _fail "mkfs failed" _scratch_mount dirp=`mktemp -duq $SCRATCH_MNT/dir.XXXXXX` _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 @@ -76,7 +78,7 @@ _test_raid1() _test_raid10() { export MKFS_OPTIONS="-m raid10 -d raid10" - _scratch_mkfs $SCRATCH_DEV_POOL > /dev/null 2>&1 || _fail "mkfs failed" + _scratch_mkfs $SCRATCH_DEV_POOL >> $seqres.full 2>&1 || _fail "mkfs failed" _scratch_mount dirp=`mktemp -duq $SCRATCH_MNT/dir.XXXXXX` _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 @@ -86,7 +88,7 @@ _test_raid10() _test_single() { export MKFS_OPTIONS="-m single -d single" - _scratch_mkfs $SCRATCH_DEV_POOL > /dev/null 2>&1 || _fail "mkfs failed" + _scratch_mkfs $SCRATCH_DEV_POOL >> $seqres.full 2>&1 || _fail "mkfs failed" _scratch_mount dirp=`mktemp -duq $SCRATCH_MNT/dir.XXXXXX` _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 @@ -102,14 +104,14 @@ _test_add() n=$(($n-1)) export MKFS_OPTIONS="" - _scratch_mkfs > /dev/null 2>&1 || _fail "mkfs failed" + _scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed" _scratch_mount dirp=`mktemp -duq $SCRATCH_MNT/dir.XXXXXX` _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 for i in `seq 1 $n`; do - $BTRFS_UTIL_PROG device add ${devs[$i]} $SCRATCH_MNT > /dev/null 2>&1 || _fail "device add failed" + $BTRFS_UTIL_PROG device add ${devs[$i]} $SCRATCH_MNT >> $seqres.full 2>&1 || _fail "device add failed" done - $BTRFS_UTIL_PROG filesystem balance $SCRATCH_MNT || _fail "balance failed" + $BTRFS_UTIL_PROG filesystem balance $SCRATCH_MNT >> $seqres.full || _fail "balance failed" umount $SCRATCH_MNT } @@ -127,7 +129,7 @@ _test_replace() ds=${devs[@]:0:$n} export MKFS_OPTIONS="-m raid1 -d raid1" - _scratch_mkfs "$ds" > /dev/null 2>&1 || _fail "tr: mkfs failed" + _scratch_mkfs "$ds" >> $seqres.full 2>&1 || _fail "tr: mkfs failed" _scratch_mount dirp=`mktemp -duq $SCRATCH_MNT/dir.XXXXXX` _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 @@ -143,16 +145,16 @@ _test_replace() _devmgt_remove ${DEVHTL} dev_removed=1 - $BTRFS_UTIL_PROG fi show $SCRATCH_DEV | grep "Some devices missing" > /dev/null || _fail \ + $BTRFS_UTIL_PROG fi show $SCRATCH_DEV | grep "Some devices missing" >> $seqres.full || _fail \ "btrfs did not report device missing" # add a new disk to btrfs ds=${devs[@]:$(($n)):1} - $BTRFS_UTIL_PROG device add ${ds} $SCRATCH_MNT > /dev/null 2>&1 || _fail "dev add failed" + $BTRFS_UTIL_PROG device add ${ds} $SCRATCH_MNT >> $seqres.full 2>&1 || _fail "dev add failed" # in some system balance fails if there is no delay (a bug) # putting sleep 10 to work around as of now # sleep 10 - $BTRFS_UTIL_PROG filesystem balance $SCRATCH_MNT || _fail "dev balance failed" + $BTRFS_UTIL_PROG filesystem balance $SCRATCH_MNT >> $seqres.full 2>&1 || _fail "dev balance failed" # cleaup. add the removed disk umount $SCRATCH_MNT @@ -162,7 +164,7 @@ _test_replace() _test_remove() { - _scratch_mkfs "$SCRATCH_DEV_POOL" > /dev/null 2>&1 || _fail "mkfs failed" + _scratch_mkfs "$SCRATCH_DEV_POOL" >> $seqres.full 2>&1 || _fail "mkfs failed" _scratch_mount dirp=`mktemp -duq $SCRATCH_MNT/dir.XXXXXX` _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 @@ -170,7 +172,7 @@ _test_remove() # pick last dev in the list dev_del=`echo ${SCRATCH_DEV_POOL} | awk '{print $NF}'` $BTRFS_UTIL_PROG device delete $dev_del $SCRATCH_MNT || _fail "btrfs device delete failed" - $BTRFS_UTIL_PROG filesystem show $SCRATCH_DEV 2>&1 | grep $dev_del > /dev/null && _fail "btrfs still shows the deleted dev" + $BTRFS_UTIL_PROG filesystem show $SCRATCH_DEV 2>&1 | grep $dev_del >> $seqres.full && _fail "btrfs still shows the deleted dev" umount $SCRATCH_MNT }