From patchwork Fri Sep 6 18:50:56 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josef Bacik X-Patchwork-Id: 2854811 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 E3F549F2D6 for ; Fri, 6 Sep 2013 18:51:07 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7943C20335 for ; Fri, 6 Sep 2013 18:51:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 537EC20328 for ; Fri, 6 Sep 2013 18:51:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751024Ab3IFSvC (ORCPT ); Fri, 6 Sep 2013 14:51:02 -0400 Received: from dkim1.fusionio.com ([66.114.96.53]:34122 "EHLO dkim1.fusionio.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751164Ab3IFSvA (ORCPT ); Fri, 6 Sep 2013 14:51:00 -0400 Received: from mx2.fusionio.com (unknown [10.101.1.160]) by dkim1.fusionio.com (Postfix) with ESMTP id B54307C042F for ; Fri, 6 Sep 2013 12:50:59 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fusionio.com; s=default; t=1378493459; bh=/729ydGq8AQO3jXfIMVU5wXO7gDdQEfsuFmM7eaHRRk=; h=From:To:Subject:Date; b=jpFgdX3G3H7nI6geAdjXTFOc8QQlH8+Kbn2CCe1kjVL6Ls+FiS4HyEodOW+SuMmjJ Czz+7J+nS1EE2CNrYtecpV8qB9rAepdIj34N8b+WaxRwZ2CL0GrIn44hRjG46b87sC hAJa5U0Uc9Tmy2pUULTfJ6shRaujMug9sT1RdHE0= X-ASG-Debug-ID: 1378493458-0421b50220365430001-6jHSXT Received: from CAS1.int.fusionio.com (cas1.int.fusionio.com [10.101.1.40]) by mx2.fusionio.com with ESMTP id 3lE3eRSoTKwADyjQ (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Fri, 06 Sep 2013 12:50:58 -0600 (MDT) X-Barracuda-Envelope-From: JBacik@fusionio.com Received: from localhost (10.101.1.160) by mail.fusionio.com (10.101.1.40) with Microsoft SMTP Server (TLS) id 14.3.158.1; Fri, 6 Sep 2013 12:50:57 -0600 From: Josef Bacik To: Subject: [PATCH] Btrfs-progs: add make test framework Date: Fri, 6 Sep 2013 14:50:56 -0400 X-ASG-Orig-Subj: [PATCH] Btrfs-progs: add make test framework Message-ID: <1378493456-5382-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: cas1.int.fusionio.com[10.101.1.40] X-Barracuda-Start-Time: 1378493458 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.40 X-Barracuda-Spam-Status: No, SCORE=0.40 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=K2_OBSCURED_EMAIL, OBSCURED_EMAIL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.140396 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 OBSCURED_EMAIL BODY: Message seems to contain rot13ed address 0.40 K2_OBSCURED_EMAIL Message seems to contain rot13ed address Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, NORMAL_HTTP_TO_IP,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 We need to start adding some sanity tests to btrfs-progs to make sure we aren't breaking things with our patches. The most important of these tools is btrfsck. This patch gets things started by adding a basic btrfsck test that makes sure we can fix a corruption problem we know we can fix. Thanks, Signed-off-by: Josef Bacik --- Makefile | 7 +++++++ tests/bad-file-extent-bytenr.img | Bin 0 -> 4096 bytes tests/fsck-tests.sh | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 0 deletions(-) create mode 100644 tests/bad-file-extent-bytenr.img create mode 100644 tests/fsck-tests.sh diff --git a/Makefile b/Makefile index c43cb68..9fbe292 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ libbtrfs_headers = send-stream.h send-utils.h send.h rbtree.h btrfs-list.h \ CHECKFLAGS= -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise \ -Wuninitialized -Wshadow -Wundef DEPFLAGS = -Wp,-MMD,$(@D)/.$(@F).d,-MT,$@ +TESTS = fsck-tests.sh INSTALL = install prefix ?= /usr/local @@ -87,6 +88,12 @@ endif all: version.h $(progs) manpages +test: + $(Q)for t in $(TESTS); do \ + echo " [TEST] $$t"; \ + bash tests/$$t || exit 1; \ + done + # # NOTE: For static compiles, you need to have all the required libs # static equivalent available diff --git a/tests/bad-file-extent-bytenr.img b/tests/bad-file-extent-bytenr.img new file mode 100644 index 0000000000000000000000000000000000000000..d2a05bb8f83d7f1bdc4be1441d3d8d35a89e142e GIT binary patch literal 4096 zcmeH}eK^y5AIJB=HZis#ld?QS9Mv4_Of8wMb+Xy{-7?nK7F$e6QQb1IAX+fGlXZfMf;0!Vkj zJvX_KWEOFo=%gw@5vC86umI%0Q@Kpn;Kos~t8AM#5}}Iev<%H_=M(YY>vRsP6|{X% z%!njroW!5@!d|E;=0Fi)&zOQKQ0@W*x3i9*Rv@{&RVIlTf+h<_YkMV3gnNEEL9z3p zoAlx;MA$Z_-~qsSxw3Ahviza+Re;u)K3iGc$~j&?N;%Nv`i;;v6-O4gW*uwxO^d(~ zAP}f+x~0LcT=VlI(lPD+zOh-}pmxLjOi`R-S(>&(wVug=T3~?ZI}5C#o@7U?*X+5p zSUrGyGq61;#UvEa{#INBZWl_VA{R~xxV=5W{$IVJ6+btc4tYL~QqNOPYQZLBAt zC<$2z=O_MM)b$dAUq%p}K^Gmkgz}q5PxeG|&T7n~tDd$d>#M#tLmkvrwwYSX%o*Z5 z+F|Jnh^5>Opo?^LmBy7LW8t9;5*}(z#3LK5)c~TJ0DV^X7|ofXZljSOEI*iGOEL2> zyms?y=YU$=G~M9wC9-C@A~MUPN5P+56asQb7^Kb=Q7Z>*cDq!<{D*BQ{L?YdZLE@^ zlS9Q&E9#b;iK&nKMun2`9=?4K)$NywboPAXv7djx@a$qA{=&uLHU~LJ5U#9qzTeZj zJK&96z$-ri*Hbbb;gKF#C6XsLa}V*^F50xo@aeG9_-9^E@9%wht!YF}OK%@FS0B+R zc$uMbpEWrt)AeGRAorUV2{?i}2`qJJNrvt2L1d`}P?6 zYa$V!<4#y{8v&m^d`7Fnl)`8aD9pCT(>!U7f!kml(o6f2y^PNT~YY+ea97ZMRO19VZd>M?@vlKv~U`g)kou6npII1s7=}eTYX5ijc4g@+Jx- zf%ESm>VnD$gtGjkRt<5%s9vbfw^i%aJFSO0Uc6E zu3DRFM{YHi4?g3j-fg&9^8xCi7J@kFeAusb)o(sKn}VyCj2+=IXV*A3q`ZApQt)V~ zUk7dri$z{O@KpF&_h?`x8Cj7BhGZxCLa0)J4Cr!X#UKG}u;!-A;xstUw-|!W8xtI0PL*!TUK{D%l!B{ zu2yqjR>4M(^gJ5T*El`%Mb|3IS)C zAoI*Z)MtDBqP>lfb}WQHr8venClWZri%xBi2t+Tq$_+{kCwAAAJvFUN&Bv-rrV7~h zCa8Q_YI`kO(|@`bPR4WBhuS9N0?eLd_gFO6_e{7+Euv;eb}K@u7(ynbeEvNKv<8hn z!`U4a23A^~^yx> fsck-tests-results.txt + $here/btrfs-image -r $i $TEST_DEV >> fsck-tests-results.txt 2>&1 \ + || _fail "restore failed" + $here/btrfsck $TEST_DEV >> fsck-test-results.txt 2>&1 + [ $? -eq 0 ] && _fail "btrfsck should have detected corruption" + + $here/btrfsck --repair $TEST_DEV >> fsck-test-results.txt 2>&1 || \ + _fail "btrfsck should have repaired the image" + + $here/btrfsck $TEST_DEV >> fsck-test-results.txt 2>&1 || \ + _fail "btrfsck did not correct corruption" +done