From patchwork Wed May 30 10:00:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10438251 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2CBDD602CC for ; Wed, 30 May 2018 10:01:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1E16F288E8 for ; Wed, 30 May 2018 10:01:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 10FB2288EF; Wed, 30 May 2018 10:01:18 +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=-2.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE, T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EE5DB288B7 for ; Wed, 30 May 2018 10:01:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C91336B0281; Wed, 30 May 2018 06:00:57 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C3DC36B0282; Wed, 30 May 2018 06:00:57 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B2D706B0283; Wed, 30 May 2018 06:00:57 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl0-f69.google.com (mail-pl0-f69.google.com [209.85.160.69]) by kanga.kvack.org (Postfix) with ESMTP id 7033B6B0281 for ; Wed, 30 May 2018 06:00:57 -0400 (EDT) Received: by mail-pl0-f69.google.com with SMTP id 31-v6so11108510plf.19 for ; Wed, 30 May 2018 03:00:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references; bh=EnoBTD0DB4XBNLX/KGawRPj5XOp+D5P1oDoUlur9yzo=; b=hebUJPmifSyl2SqDjQhXIp5ybhl2/AqiDDR3JitAeQCK9kGtodurT8/WVYs9mg1htk i+ATE7UPPT+2xy7x5SvpjjcfGGZPfK/DlzHWaNG8/DwDdvO9cYT1v6bV1Oc2Dp8HYl5k 41gwOIY03sL+NIqIXahqc6Tb5DUeqXKj8VydMzZHxQaDWxA28vUyhNmcYIk2eNMPtAZW H/7oLIY09EFjUnW06TGG4+/MzXdV7V8aSb1yX9DQ+TOIbhQaBLDNyvna3uC5cFm+X0Zg ax5HfTLhLYqTpVS2NuWLqoINlrTEAVJjJ2qHxzA1wdYqjQU7O8sl/dSK6pvXk8JJjzlL i0Bw== X-Gm-Message-State: ALKqPwcZS0W9pQJWXSWgnwhQwmviplWShS/Gxu13KvUCAIMSLsZnO5xn bA1DcqTsjLFUXMHKne0S7JtbhRLdwDeOh344rN7RYiWjyIxmDZtqwFvaZPNbcP1oDgP39BieoXa 91Cu8nGEWC6Ltcu9DYqCbqeGfKoIPNGGMmorMnyWba68bz1w1IK+LLcuHVvtzQzI= X-Received: by 2002:a17:902:1081:: with SMTP id c1-v6mr2178297pla.153.1527674457148; Wed, 30 May 2018 03:00:57 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKBdb+z2ADayOkz9WiTcAhENrFpHq2LYglbhjP4/mWmYiY9nmxYn4mdQswewaLEO6AiIGLw X-Received: by 2002:a17:902:1081:: with SMTP id c1-v6mr2178224pla.153.1527674456250; Wed, 30 May 2018 03:00:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527674456; cv=none; d=google.com; s=arc-20160816; b=F/q3rBuIIT1AEO2eizplsRQx7wJPyyRtp5I9eOntfrb0kYeeXF9FobSzwaE7o0vrYN Nb+zcNnx444oBl4PpCYwR4seeiOKs1QrlsaYKuLrM8e6VmSK35VedMKkcqPMHvcN8wB4 GJPZhUHRhXKq5Ln3LnT9a5eG6xyK+u+Kz7iBiG9C3lj5jT2kypf0Is0VEvOh2lKYqTTc I7HxsWYVG+4pag4v44NCtwppe7haJhqqC4vWvb1aeXbGcRy3YAP3nkTnY7TgRPfaXO3N janzr/5jvf1prL7OU8ewI5gm8jbZ97YJIxroIDCDesT/OQ+BKHQgbas/7inJErjup/7e fAgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=EnoBTD0DB4XBNLX/KGawRPj5XOp+D5P1oDoUlur9yzo=; b=I2vkr/Fmcny+uomA+fWHJTomamaBSzL2CaQrajUgIXJuBZqcwzN6aWhP2R7knjCdST Ky5lcraej5DXXAs7SSiaUdrZY/ywRDboO7czGlvhVCmhSSzhlewY9Aby/A8iiuVilF0Q c9pIQyxbt5LzK9Udw9h5l5k26jMr7+yiKV5xtbCmxFT9gOYCQ575W9Y9Cilj5Op+x1Fd ioky1Gv7/+kpjOcMKUAkSBUvHLVgsjQVkXhR7MlgX8bWCFfaa7GVmh9BOS0AOXwoEJjw rX3X71znq4lgfDhhXmDruGqyvrPcSkOz/xhrEtzOZaOH0mEs3lzskwrQSBVtQSRXxad4 NCkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=RcTKLEGH; spf=pass (google.com: best guess record for domain of batv+1f4557cc97fec8e307c5+5393+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+1f4557cc97fec8e307c5+5393+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id u7-v6si34709380plq.160.2018.05.30.03.00.56 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 30 May 2018 03:00:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+1f4557cc97fec8e307c5+5393+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=RcTKLEGH; spf=pass (google.com: best guess record for domain of batv+1f4557cc97fec8e307c5+5393+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+1f4557cc97fec8e307c5+5393+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=References:In-Reply-To:Message-Id: Date:Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=EnoBTD0DB4XBNLX/KGawRPj5XOp+D5P1oDoUlur9yzo=; b=RcTKLEGHIcsb09VTnnrVnGy3u BM6MCsWR0b/7+GwEbSKgIHRfcT5aaRFvQQgdJUuLNbtq5cqvExNDED3P2ZMjQHy+hU6b7PfXSag2B 15yXe5xEkcpxBLp288mynj5kwy6q/q5M4i+tMkclG2GtMkoXmFb6NFyOg5rrBJYcbYpgrT7nNoF18 cPt4CRdyB/VkXK40L5LAxtIcS08b3DNQ0RtfGTlxtPW6UjNSqv37rlA+BBfAUeAunCbRwMcUhxmsx jllfLOSal/T0vgLiwcgAwNda6J/oEDxpVr2nxaiOI2y07iXdb2T8LM0HYrJyjEVY7RX/e6An5gsTh YUuny4NtQ==; Received: from 213-225-38-123.nat.highway.a1.net ([213.225.38.123] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1fNxuV-0008Op-CU; Wed, 30 May 2018 10:00:51 +0000 From: Christoph Hellwig To: linux-xfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 08/18] xfs: remove xfs_reflink_find_cow_mapping Date: Wed, 30 May 2018 12:00:03 +0200 Message-Id: <20180530100013.31358-9-hch@lst.de> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180530100013.31358-1-hch@lst.de> References: <20180530100013.31358-1-hch@lst.de> X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP We only have one caller left, and open coding the simple extent list lookup in it allows us to make the code both more understandable and reuse calculations and variables already present. Signed-off-by: Christoph Hellwig Reviewed-by: Darrick J. Wong Reviewed-by: Brian Foster --- fs/xfs/xfs_aops.c | 17 ++++++++++++----- fs/xfs/xfs_reflink.c | 30 ------------------------------ fs/xfs/xfs_reflink.h | 2 -- fs/xfs/xfs_trace.h | 1 - 4 files changed, 12 insertions(+), 38 deletions(-) diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c index 8cc41a786b5e..e2671b223409 100644 --- a/fs/xfs/xfs_aops.c +++ b/fs/xfs/xfs_aops.c @@ -385,6 +385,7 @@ xfs_map_blocks( ssize_t count = i_blocksize(inode); xfs_fileoff_t offset_fsb, end_fsb; int whichfork = XFS_DATA_FORK; + struct xfs_iext_cursor icur; int error = 0; int nimaps = 1; @@ -396,8 +397,18 @@ xfs_map_blocks( (ip->i_df.if_flags & XFS_IFEXTENTS)); ASSERT(offset <= mp->m_super->s_maxbytes); + if (offset > mp->m_super->s_maxbytes - count) + count = mp->m_super->s_maxbytes - offset; + end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + count); + offset_fsb = XFS_B_TO_FSBT(mp, offset); + + /* + * Check if this is offset is covered by a COW extents, and if yes use + * it directly instead of looking up anything in the data fork. + */ if (xfs_is_reflink_inode(ip) && - xfs_reflink_find_cow_mapping(ip, offset, imap)) { + xfs_iext_lookup_extent(ip, ip->i_cowfp, offset_fsb, &icur, imap) && + imap->br_startoff <= offset_fsb) { xfs_iunlock(ip, XFS_ILOCK_SHARED); /* * Truncate can race with writeback since writeback doesn't @@ -417,10 +428,6 @@ xfs_map_blocks( goto allocate_blocks; } - if (offset > mp->m_super->s_maxbytes - count) - count = mp->m_super->s_maxbytes - offset; - end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + count); - offset_fsb = XFS_B_TO_FSBT(mp, offset); error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb, imap, &nimaps, XFS_BMAPI_ENTIRE); if (!nimaps) { diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index 713e857d9ffa..8e5eb8e70c89 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -484,36 +484,6 @@ xfs_reflink_allocate_cow( return error; } -/* - * Find the CoW reservation for a given byte offset of a file. - */ -bool -xfs_reflink_find_cow_mapping( - struct xfs_inode *ip, - xfs_off_t offset, - struct xfs_bmbt_irec *imap) -{ - struct xfs_ifork *ifp = XFS_IFORK_PTR(ip, XFS_COW_FORK); - xfs_fileoff_t offset_fsb; - struct xfs_bmbt_irec got; - struct xfs_iext_cursor icur; - - ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL | XFS_ILOCK_SHARED)); - - if (!xfs_is_reflink_inode(ip)) - return false; - offset_fsb = XFS_B_TO_FSBT(ip->i_mount, offset); - if (!xfs_iext_lookup_extent(ip, ifp, offset_fsb, &icur, &got)) - return false; - if (got.br_startoff > offset_fsb) - return false; - - trace_xfs_reflink_find_cow_mapping(ip, offset, 1, XFS_IO_OVERWRITE, - &got); - *imap = got; - return true; -} - /* * Trim an extent to end at the next CoW reservation past offset_fsb. */ diff --git a/fs/xfs/xfs_reflink.h b/fs/xfs/xfs_reflink.h index 701487bab468..15a456492667 100644 --- a/fs/xfs/xfs_reflink.h +++ b/fs/xfs/xfs_reflink.h @@ -32,8 +32,6 @@ extern int xfs_reflink_allocate_cow(struct xfs_inode *ip, struct xfs_bmbt_irec *imap, bool *shared, uint *lockmode); extern int xfs_reflink_convert_cow(struct xfs_inode *ip, xfs_off_t offset, xfs_off_t count); -extern bool xfs_reflink_find_cow_mapping(struct xfs_inode *ip, xfs_off_t offset, - struct xfs_bmbt_irec *imap); extern void xfs_reflink_trim_irec_to_next_cow(struct xfs_inode *ip, xfs_fileoff_t offset_fsb, struct xfs_bmbt_irec *imap); diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index 9d4c4ca24fe6..ed8f774944ba 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h @@ -3227,7 +3227,6 @@ DEFINE_INODE_IREC_EVENT(xfs_reflink_convert_cow); DEFINE_RW_EVENT(xfs_reflink_reserve_cow); DEFINE_SIMPLE_IO_EVENT(xfs_reflink_bounce_dio_write); -DEFINE_IOMAP_EVENT(xfs_reflink_find_cow_mapping); DEFINE_INODE_IREC_EVENT(xfs_reflink_trim_irec); DEFINE_SIMPLE_IO_EVENT(xfs_reflink_cancel_cow_range);