From patchwork Wed Sep 12 06:26:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chandan Rajendra X-Patchwork-Id: 10596793 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 3B2D614DB for ; Wed, 12 Sep 2018 06:24:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2AA1F2984C for ; Wed, 12 Sep 2018 06:24:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1F1AB2985F; Wed, 12 Sep 2018 06:24:36 +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 B42FF2984C for ; Wed, 12 Sep 2018 06:24:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727403AbeILL1e (ORCPT ); Wed, 12 Sep 2018 07:27:34 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:39260 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725910AbeILL1e (ORCPT ); Wed, 12 Sep 2018 07:27:34 -0400 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w8C6JdGa092870 for ; Wed, 12 Sep 2018 02:24:33 -0400 Received: from e14.ny.us.ibm.com (e14.ny.us.ibm.com [129.33.205.204]) by mx0b-001b2d01.pphosted.com with ESMTP id 2meusq3ktx-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 12 Sep 2018 02:24:33 -0400 Received: from localhost by e14.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 12 Sep 2018 02:24:32 -0400 Received: from b01cxnp23032.gho.pok.ibm.com (9.57.198.27) by e14.ny.us.ibm.com (146.89.104.201) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Wed, 12 Sep 2018 02:24:30 -0400 Received: from b01ledav001.gho.pok.ibm.com (b01ledav001.gho.pok.ibm.com [9.57.199.106]) by b01cxnp23032.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w8C6OUSg24707088 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 12 Sep 2018 06:24:30 GMT Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3602D2805C; Wed, 12 Sep 2018 02:22:34 -0400 (EDT) Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D4AC428059; Wed, 12 Sep 2018 02:22:32 -0400 (EDT) Received: from localhost.in.ibm.com (unknown [9.124.35.206]) by b01ledav001.gho.pok.ibm.com (Postfix) with ESMTP; Wed, 12 Sep 2018 02:22:32 -0400 (EDT) From: Chandan Rajendra To: fstests@vger.kernel.org Cc: Chandan Rajendra , guaneryu@gmail.com, darrick.wong@oracle.com, linux-xfs@vger.kernel.org Subject: [PATCH V3 10/19] xfs/325: Inject free_extent error after CoW operation Date: Wed, 12 Sep 2018 11:56:17 +0530 X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180912062626.14349-1-chandan@linux.vnet.ibm.com> References: <20180912062626.14349-1-chandan@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18091206-0052-0000-0000-0000032F3D6C X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009706; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000266; SDB=6.01087104; UDB=6.00561328; IPR=6.00867116; MB=3.00023245; MTD=3.00000008; XFM=3.00000015; UTC=2018-09-12 06:24:32 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18091206-0053-0000-0000-00005E0B0E1C Message-Id: <20180912062626.14349-11-chandan@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-09-12_05:,, 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-1809120068 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