From patchwork Mon Jan 28 07:32:49 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zheng Liu X-Patchwork-Id: 216118 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 52ABE2C0080 for ; Mon, 28 Jan 2013 18:20:33 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752609Ab3A1HUc (ORCPT ); Mon, 28 Jan 2013 02:20:32 -0500 Received: from mail-pa0-f53.google.com ([209.85.220.53]:51733 "EHLO mail-pa0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751948Ab3A1HUc (ORCPT ); Mon, 28 Jan 2013 02:20:32 -0500 Received: by mail-pa0-f53.google.com with SMTP id hz1so1347470pad.12 for ; Sun, 27 Jan 2013 23:20:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=ixUK9o8B01d/J4c2RvL/0GNQPScGE+ibYQcPsNs8eLc=; b=yrtBUrBgsONUemSQCDv234OmSXNC6GmRIONxJw2zlIGs6JT0jYTAsGOV2vQXQE0+Qj OwTdl8SThbOEsK+CrqhHJAsrdFLhhdz/Tpk1fArqCCE9XRA7na9d9mC0W6qHcQxtZZXT pKWZch2M9ORCXeYxWJm/Y5VU3LHiBCtam5+nrY3RPvdG7XtXDAjYmp3k05V5Gct2N9Ur 22mCc/UlFr2ae4v6lgAqlWyLIXclnJNBYN+FaRG7qpr3n9Hfso8rSP7gCivO9hdxXeNg HDvaqYAPXc070wxuDxgoqsmZxImywCzcC64ulaOYEHr3YzhXwuLNRVTNejZym5f+AuKt qI7Q== X-Received: by 10.68.186.197 with SMTP id fm5mr9376999pbc.60.1359357631614; Sun, 27 Jan 2013 23:20:31 -0800 (PST) Received: from lz-desktop.taobao.ali.com ([182.92.247.2]) by mx.google.com with ESMTPS id t6sm6226006paz.11.2013.01.27.23.20.26 (version=TLSv1 cipher=RC4-SHA bits=128/128); Sun, 27 Jan 2013 23:20:31 -0800 (PST) From: Zheng Liu To: xfs@oss.sgi.com, linux-ext4@vger.kernel.org Cc: Zheng Liu , "Theodore Ts'o" , Dave Chinner Subject: [PATCH 2/4] xfstests: 295: test fallocate hole punching for all file systems Date: Mon, 28 Jan 2013 15:32:49 +0800 Message-Id: <1359358371-21411-3-git-send-email-wenqing.lz@taobao.com> X-Mailer: git-send-email 1.7.12.rc2.18.g61b472e In-Reply-To: <1359358371-21411-1-git-send-email-wenqing.lz@taobao.com> References: <1359358371-21411-1-git-send-email-wenqing.lz@taobao.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Zheng Liu In 255 it tries to test fallocate hole punching for a file system, but it is only for the file system that supports to preallocate unwritten extents. Recently ext4 file systems will support hole punching feature for a indirect-based file. So a new test case is created to test it. Here this test case does the same thing like 255 except it doesn't try to preallocate some unwritten extents. Certainly all file systems that support hole punching feature and can preallocate unwritten extents also survive in this test case. Signed-off-by: Zheng Liu Cc: "Theodore Ts'o" Cc: Dave Chinner --- 295 | 68 ++++++++++++++ 295.out | 307 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ group | 1 + 3 files changed, 376 insertions(+) create mode 100755 295 create mode 100644 295.out diff --git a/295 b/295 new file mode 100755 index 0000000..3df7dc8 --- /dev/null +++ b/295 @@ -0,0 +1,68 @@ +#! /bin/bash +# FS QA Test No. 295 +# +# Test Generic fallocate hole punching w/o unwritten extent +# +#----------------------------------------------------------------------- +# Copyright (c) 2013 Alibaba Group. 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 +#----------------------------------------------------------------------- +# +# creator +owner=wenqing.lz@taobao.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.* +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +. ./common.punch + +# real QA test starts here +_supported_fs generic +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_fiemap + +testfile=$TEST_DIR/295.$$ + +# Standard punch hole tests +_test_generic_punch pwrite fpunch fpunch fiemap _filter_hole_fiemap $testfile -F + +# Delayed allocation punch hole tests +_test_generic_punch -d pwrite fpunch fpunch fiemap _filter_hole_fiemap $testfile -F + +# Multi hole punch tests +_test_generic_punch -k pwrite fpunch fpunch fiemap _filter_hole_fiemap $testfile -F + +# Delayed allocation multi punch hole tests +_test_generic_punch -d -k pwrite fpunch fpunch fiemap _filter_hole_fiemap $testfile -F + +# success, all done +status=0 +exit diff --git a/295.out b/295.out new file mode 100644 index 0000000..c4c495f --- /dev/null +++ b/295.out @@ -0,0 +1,307 @@ +QA output created by 295 + 1. into a hole +daa100df6e6711906b61c9ab5aa16032 + 2. into allocated space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 4. hole -> data +0: [0..23]: hole +1: [24..31]: extent +2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 5. hole -> unwritten +0: [0..23]: hole +1: [24..31]: extent +2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 6. data -> hole +0: [0..7]: extent +1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 + 7. data -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..31]: extent +3: [32..39]: hole +5309cc2f1fc5a7f94cf52915caef35bd + 8. unwritten -> hole +0: [0..7]: extent +1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 + 9. unwritten -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..31]: extent +3: [32..39]: hole +5309cc2f1fc5a7f94cf52915caef35bd + 10. hole -> data -> hole +daa100df6e6711906b61c9ab5aa16032 + 11. data -> hole -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 13. data -> unwritten -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: extent +1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 + 1. into a hole +daa100df6e6711906b61c9ab5aa16032 + 2. into allocated space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 4. hole -> data +0: [0..23]: hole +1: [24..31]: extent +2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 5. hole -> unwritten +0: [0..23]: hole +1: [24..31]: extent +2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 6. data -> hole +0: [0..7]: extent +1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 + 7. data -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..31]: extent +3: [32..39]: hole +5309cc2f1fc5a7f94cf52915caef35bd + 8. unwritten -> hole +0: [0..7]: extent +1: [8..39]: hole +1b3779878366498b28c702ef88c4a773 + 9. unwritten -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..31]: extent +3: [32..39]: hole +5309cc2f1fc5a7f94cf52915caef35bd + 10. hole -> data -> hole +daa100df6e6711906b61c9ab5aa16032 + 11. data -> hole -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 13. data -> unwritten -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: extent +1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 + 1. into a hole +0: [0..7]: extent +1: [8..39]: hole +5a58e46082be047d0f13bee7974015b9 + 2. into allocated space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 4. hole -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 5. hole -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 6. data -> hole +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 7. data -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 8. unwritten -> hole +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 9. unwritten -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 10. hole -> data -> hole +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 11. data -> hole -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 13. data -> unwritten -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: extent +1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 + 1. into a hole +0: [0..7]: extent +1: [8..39]: hole +5a58e46082be047d0f13bee7974015b9 + 2. into allocated space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 4. hole -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 5. hole -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 6. data -> hole +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 7. data -> unwritten +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 8. unwritten -> hole +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 9. unwritten -> data +0: [0..7]: extent +1: [8..23]: hole +2: [24..39]: extent +cc58a7417c2d7763adc45b6fcd3fa024 + 10. hole -> data -> hole +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 11. data -> hole -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 13. data -> unwritten -> data +0: [0..7]: extent +1: [8..31]: hole +2: [32..39]: extent +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: extent +1: [24..39]: hole +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: hole +1: [16..39]: extent +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: extent +13535fd4d496bf0b74bb2335aa4d1b31 diff --git a/group b/group index 505bc7f..a07d7f3 100644 --- a/group +++ b/group @@ -413,3 +413,4 @@ deprecated 292 auto mkfs quick 293 auto quick 294 auto quick +295 auto quick prealloc