From patchwork Mon May 20 17:20:34 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josef Bacik X-Patchwork-Id: 2594401 Return-Path: X-Original-To: patchwork-linux-btrfs@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 92CA7DF2A2 for ; Mon, 20 May 2013 17:20:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757522Ab3ETRUi (ORCPT ); Mon, 20 May 2013 13:20:38 -0400 Received: from dkim2.fusionio.com ([66.114.96.54]:60700 "EHLO dkim2.fusionio.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755528Ab3ETRUh (ORCPT ); Mon, 20 May 2013 13:20:37 -0400 Received: from mx2.fusionio.com (unknown [10.101.1.160]) by dkim2.fusionio.com (Postfix) with ESMTP id F1D9F9A036D for ; Mon, 20 May 2013 11:20:36 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fusionio.com; s=default; t=1369070437; bh=6QBRxBRRnnpzOznTHNcI8qsQf0UCzUzOhp4GEnLjA1I=; h=From:To:Subject:Date; b=mOtB0LOm2NBI9nzD4rTqE5ir3Z9NBZOIp7lU+ygrSX5eE8HKB1l3H2oD7I3tMh5mS AtKoMO9y1MOAR0VeRyGUo590QbZrXn4Z/NlHbBGezq8Dc3GLWzCUPUS/48iUf3AvW3 rDgVeMIDvwBd7iboQL5kyuJ9Auaj1QVxSA3jVEjU= X-ASG-Debug-ID: 1369070436-0421b55f2e4bc60001-6jHSXT Received: from mail1.int.fusionio.com (mail1.int.fusionio.com [10.101.1.21]) by mx2.fusionio.com with ESMTP id zGot5o8DcFDJHGRb (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO); Mon, 20 May 2013 11:20:36 -0600 (MDT) X-Barracuda-Envelope-From: JBacik@fusionio.com Received: from localhost (76.182.72.146) by mail.fusionio.com (10.101.1.19) with Microsoft SMTP Server (TLS) id 8.3.83.0; Mon, 20 May 2013 11:20:35 -0600 From: Josef Bacik To: , Subject: [PATCH] xfstests: btrfs 308: regression test for btrfs send Date: Mon, 20 May 2013 13:20:34 -0400 X-ASG-Orig-Subj: [PATCH] xfstests: btrfs 308: regression test for btrfs send Message-ID: <1369070434-20852-1-git-send-email-jbacik@fusionio.com> X-Mailer: git-send-email 1.7.7.6 MIME-Version: 1.0 X-Barracuda-Connect: mail1.int.fusionio.com[10.101.1.21] X-Barracuda-Start-Time: 1369070436 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.131524 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 I'm not sure how the numbering is supposed to work now that we've split everything out so I'm just going with the next number in the directory. This is a regression test for btrfs send, we had a problem where we'd try to send a file that had been deleted in the source snapshot. This is just to make sure we don't have the same problem in the future. Thanks, Signed-off-by: Josef Bacik --- src/Makefile | 2 +- src/hold-open.c | 29 ++++++++++++++++++++ tests/btrfs/308 | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/308.out | 2 + tests/btrfs/group | 1 + 5 files changed, 107 insertions(+), 1 deletions(-) create mode 100644 src/hold-open.c create mode 100644 tests/btrfs/308 create mode 100644 tests/btrfs/308.out diff --git a/src/Makefile b/src/Makefile index c18ffc9..3ab9a21 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,7 +18,7 @@ LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize preallo_rw_pattern_reader \ locktest unwritten_mmap bulkstat_unlink_test t_stripealign \ bulkstat_unlink_test_modified t_dir_offset t_futimens t_immutable \ stale_handle pwrite_mmap_blocked t_dir_offset2 seek_sanity_test \ - seek_copy_test t_readdir_1 t_readdir_2 fsync-tester + seek_copy_test t_readdir_1 t_readdir_2 fsync-tester hold-open SUBDIRS = diff --git a/src/hold-open.c b/src/hold-open.c new file mode 100644 index 0000000..f44c1dd --- /dev/null +++ b/src/hold-open.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + int fd; + + if (argc < 2) { + fprintf(stderr, "Usage: hold-open \n"); + return -1; + } + + fd = open(argv[1], O_RDONLY); + if (fd < 0) { + fprintf(stderr, "Error opening file: %d\n", errno); + return -1; + } + + while (1) { + sleep(60); + } + + close(fd); + return 0; +} diff --git a/tests/btrfs/308 b/tests/btrfs/308 new file mode 100644 index 0000000..144be99 --- /dev/null +++ b/tests/btrfs/308 @@ -0,0 +1,74 @@ +#! /bin/bash +# FS QA Test No. btrfs/308 +# +# btrfs send ESTALE regression test, kernel.org bugzilla 57491 +# +#----------------------------------------------------------------------- +# Copyright (c) 2013 Fusion IO. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch + +_scratch_mkfs > /dev/null 2>&1 +_scratch_mount + +dd if=/dev/zero of=$SCRATCH_MNT/foo bs=1M count=10 > /dev/null 2>&1 +sync +$BTRFS_UTIL_PROG subvol snap -r $SCRATCH_MNT $SCRATCH_MNT/snap > /dev/null 2>&1 +dd if=/dev/zero of=$SCRATCH_MNT/foo bs=1M count=10 oflag=append > /dev/null 2>&1 +sync + +# We need to hold the file open, tail -f makes the output file look weird so +# here is this awful hack to get around that +$here/src/hold-open $SCRATCH_MNT/foo & + +# need this so that tail doesn't error out racing with the rm +sleep 1 +rm -f $SCRATCH_MNT/foo +$BTRFS_UTIL_PROG subvol snap -r $SCRATCH_MNT $SCRATCH_MNT/snap1 > /dev/null 2>&1 +$BTRFS_UTIL_PROG send -f /dev/null -p $SCRATCH_MNT/snap $SCRATCH_MNT/snap1 >/dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "send failed" +fi +kill $! + +echo "Silence is golden" +status=0 ; exit diff --git a/tests/btrfs/308.out b/tests/btrfs/308.out new file mode 100644 index 0000000..a731eaa --- /dev/null +++ b/tests/btrfs/308.out @@ -0,0 +1,2 @@ +QA output created by 308 +Silence is golden diff --git a/tests/btrfs/group b/tests/btrfs/group index bc6c256..666054b 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -9,3 +9,4 @@ 276 auto rw metadata 284 auto 307 auto quick +308 auto quick