From patchwork Thu Aug 16 07:26:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chandan Rajendra X-Patchwork-Id: 10567093 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B3D14913 for ; Thu, 16 Aug 2018 07:25:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 983FA2A9DE for ; Thu, 16 Aug 2018 07:25:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8CA692AA02; Thu, 16 Aug 2018 07:25:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7BF012A9DE for ; Thu, 16 Aug 2018 07:25:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389314AbeHPKWY (ORCPT ); Thu, 16 Aug 2018 06:22:24 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:48322 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727882AbeHPKWX (ORCPT ); Thu, 16 Aug 2018 06:22:23 -0400 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w7G7OJwN147354 for ; Thu, 16 Aug 2018 03:25:54 -0400 Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by mx0a-001b2d01.pphosted.com with ESMTP id 2kw2wjv4ha-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 16 Aug 2018 03:25:53 -0400 Received: from localhost by e32.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 16 Aug 2018 01:25:52 -0600 Received: from b03cxnp08026.gho.boulder.ibm.com (9.17.130.18) by e32.co.us.ibm.com (192.168.1.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 16 Aug 2018 01:25:50 -0600 Received: from b03ledav004.gho.boulder.ibm.com (b03ledav004.gho.boulder.ibm.com [9.17.130.235]) by b03cxnp08026.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w7G7Pnon6357326 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 16 Aug 2018 00:25:49 -0700 Received: from b03ledav004.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3BA0C7805F; Thu, 16 Aug 2018 01:25:49 -0600 (MDT) Received: from b03ledav004.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 859147805C; Thu, 16 Aug 2018 01:25:47 -0600 (MDT) Received: from localhost.localdomain.com (unknown [9.199.32.128]) by b03ledav004.gho.boulder.ibm.com (Postfix) with ESMTP; Thu, 16 Aug 2018 01:25:47 -0600 (MDT) From: Chandan Rajendra To: fstests@vger.kernel.org Cc: Chandan Rajendra , eguan@redhat.com, darrick.wong@oracle.com Subject: [PATCH 10/16] xfs/325: Inject free_extent error after CoW operation Date: Thu, 16 Aug 2018 12:56:40 +0530 X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180816072646.14490-1-chandan@linux.vnet.ibm.com> References: <20180816072646.14490-1-chandan@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18081607-0004-0000-0000-0000147755B7 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009553; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000266; SDB=6.01074235; UDB=6.00553573; IPR=6.00854192; MB=3.00022746; MTD=3.00000008; XFM=3.00000015; UTC=2018-08-16 07:25:51 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18081607-0005-0000-0000-00008879C616 Message-Id: <20180816072646.14490-11-chandan@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-08-16_03:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=3 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1808160080 Sender: fstests-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On a 64k blocksized filesystem, when the test CoWs the file2's offset range [10 * 64k, 19 * 64k], the call to xfs_bmapi_reserve_delalloc() allocates 32 64k blocks. This is because XFS_DEFAULT_COWEXTSZ_HINT has the value of 32 and xfs_get_cowextsz_hint() uses this to compute the extent alignment. This leads to xfs_bmapi_reserve_delalloc() to reserve space corresponding to the file range [0, 32 * 64k] in the inode's cow fork area. On completion of write I/O corresponding to file2's range [10 * 64k, 19 * 64k], xfs_end_io() moves 10 out of the originally allocated 32 64k blocks to the data fork area. The remaining 22 64k blocks linger on in cow fork area of the inode. Later, when servicing the exit() syscall for the xfs_io process, xfs_free_eofblocks() ends up invoking xfs_reflink_cancel_cow_blocks() since i_delayed_blks has the value 22. xfs_reflink_cancel_cow_blocks() indirectly invokes __xfs_free_extent() which returns EIO since XFS_ERRTAG_FREE_EXTENT has been set. This leads to the filesystem to be shutdown. The "rm" command invoked later ends up returning an error and hence the test fails. The test actually requires that the filesystem gets shutdown when executing the "rm" command. To fix the problem, this commit injects the free_extent error after we CoW file2's [10 * 64k, 19 * 64k] range. Signed-off-by: Chandan Rajendra --- tests/xfs/325 | 5 +++-- tests/xfs/325.out | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/xfs/325 b/tests/xfs/325 index b156de9..6795901 100755 --- a/tests/xfs/325 +++ b/tests/xfs/325 @@ -54,11 +54,12 @@ echo "Check files" md5sum $SCRATCH_MNT/file1 | _filter_scratch md5sum $SCRATCH_MNT/file2 | _filter_scratch +echo "CoW a few blocks" +$XFS_IO_PROG -c "pwrite -W -S 0x67 $((10 * blksz)) $((10 * blksz))" $SCRATCH_MNT/file2 >> $seqres.full + echo "Inject error" _scratch_inject_error "free_extent" -echo "CoW a few blocks" -$XFS_IO_PROG -c "pwrite -W -S 0x67 $((10 * blksz)) $((10 * blksz))" $SCRATCH_MNT/file2 >> $seqres.full rm $SCRATCH_MNT/file1 sync diff --git a/tests/xfs/325.out b/tests/xfs/325.out index 4e25d2b..92027cd 100644 --- a/tests/xfs/325.out +++ b/tests/xfs/325.out @@ -4,8 +4,8 @@ Create files Check files d5a0ed0305c8df4180cb2bf975ecffe8 SCRATCH_MNT/file1 d5a0ed0305c8df4180cb2bf975ecffe8 SCRATCH_MNT/file2 -Inject error CoW a few blocks +Inject error FS should be shut down, touch will fail touch: cannot touch 'SCRATCH_MNT/badfs': Input/output error Remount to replay log