From patchwork Fri May 19 09:35:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13248134 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37953C77B75 for ; Fri, 19 May 2023 09:57:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9A36F900004; Fri, 19 May 2023 05:57:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 95352900003; Fri, 19 May 2023 05:57:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 84372900004; Fri, 19 May 2023 05:57:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 728EB900003 for ; Fri, 19 May 2023 05:57:08 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 3719B40A2E for ; Fri, 19 May 2023 09:57:08 +0000 (UTC) X-FDA: 80806551336.21.EA43F93 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf06.hostedemail.com (Postfix) with ESMTP id D1424180011 for ; Fri, 19 May 2023 09:57:05 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=fNcIJXSt; dmarc=none; spf=none (imf06.hostedemail.com: domain of BATV+aecf67361b95543ec79f+7208+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+aecf67361b95543ec79f+7208+infradead.org+hch@bombadil.srs.infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684490226; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=l1nHpSO+SfI7dJoy9Bf6sKMQrfHZhTAI7csUoY2gOqg=; b=k+LhkyzuEcFrk5VIz+yWxTfuXenD/RcrwGK6Us40VjNS8WEEjsJEL3dSv2XWMyRwzciSdT /U6UI2jhI5a2zHYG5UzUtyA1GxMRs7Z07XZ16Y7x3rRcjyMnp8GfCr65BCTdphzKxCtOm5 Y7CvQ06cpV8HHWgecjCZ0gNq0ulcXvw= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=fNcIJXSt; dmarc=none; spf=none (imf06.hostedemail.com: domain of BATV+aecf67361b95543ec79f+7208+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+aecf67361b95543ec79f+7208+infradead.org+hch@bombadil.srs.infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684490226; a=rsa-sha256; cv=none; b=sgL9wKL656Eqe32o5zrFdG94f8obumv7BLM0fuJ7WZQRVN363xzz6RuZ6Tmd0RT8N4UVcu STTEPPJIwWxQwPPRHi2eISbU6c/vb6jix8qUg8LgNioqkBQDIlwzDknMZhS4kWMmuYEoWO ET7UlNauRnGOEScFR+FbIDVXKZPJYcA= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=l1nHpSO+SfI7dJoy9Bf6sKMQrfHZhTAI7csUoY2gOqg=; b=fNcIJXStbg35Q3/kxwRadlJBkR BDEVYzDTYkGHq1nmqbayvo2Mb8RhUWRs2vpPYsKxu8f33DSVER7T9eunP8b8/p+Cm1VPG75aVtHEh rUAEhk75WkLoyrZwgVxPM/pVzSBCQHe5cSaLK2/BGJnm0EZLku21y03qF/1nrgLfo8Y/CBxH34Xpi mjIWogLEu/YGtIV81gHtLrQwwS6ZOgNx8i2yLDnmdlw9wjPJt68CN5aY4zUsNNalfAYBB5h0jwBe9 IU91VmeeMOfWsiiyMRY6eeqJxbWxpymNlF04FNOu5GcpFrlEbHeZbYXoC9JEhrJNWBeTP/bnm84Qw taYBszPA==; Received: from [2001:4bb8:188:3dd5:e8d0:68bb:e5be:210a] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1pzwWI-00Fjbs-0u; Fri, 19 May 2023 09:35:30 +0000 From: Christoph Hellwig To: Matthew Wilcox Cc: Jens Axboe , Xiubo Li , Ilya Dryomov , Alexander Viro , Christian Brauner , "Theodore Ts'o" , Jaegeuk Kim , Chao Yu , Miklos Szeredi , Andreas Gruenbacher , "Darrick J. Wong" , Trond Myklebust , Anna Schumaker , Damien Le Moal , Andrew Morton , linux-block@vger.kernel.org, ceph-devel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net (open list:F2FS FILE SYSTEM), cluster-devel@redhat.com, linux-xfs@vger.kernel.org, linux-nfs@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 02/13] filemap: update ki_pos in generic_perform_write Date: Fri, 19 May 2023 11:35:10 +0200 Message-Id: <20230519093521.133226-3-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230519093521.133226-1-hch@lst.de> References: <20230519093521.133226-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: D1424180011 X-Stat-Signature: u19zexkw5pauo7kxso5su3pdrhj16gs7 X-HE-Tag: 1684490225-193567 X-HE-Meta: U2FsdGVkX18NUY9iD8aI+qMuBlOMg4wZVLEI7dZMSu2A4e6zvUU21yZLlzWBTIcW6IsnaXPKW5Zy9uroR7SyBpkAKDczB6Vc6T9bU+Zzoedk2dciYYmjGZfSdgQLAxoCGVGTCQ3s6/W91ITU3Z9XedsTuRM7V0arwLByVV6UgaiEN0rU8rvqmON9P5CDUYQHwWa/f9IoVdOXjwF14W/0H4DFl3XoJ1Obobif49REsYZ+B1uMCOrljfFQ2WHRyE9gQi1fi0qFcFkQ4J0CZLVi/KOcvvWflOQxNtqPhyrw5521A2uScBIY0jt1jAiervshry7bYYOCWRX0GRdXWCRxg0qpGGDohByyFw1jQjp4xW2Z+rrSXhN384LS4+VbT3tWscv0cyu3UhU1OMCXvoiXAc6hrGMGERFNi/Qp0qZYtSY3IGUvLUerp40ETWDSMNdZoskLMYG9H/Wxb3csSU4ely6R2P71qSAAKP9uumD59NRNH9dzW4wOT/OAmaUk/0oZ54Ih6leH9IYr0NbZa1JdQzAJH3ifsfbEdhzRuxZVFi+QIoxvtW9VPbnFtxe4d2VrdhS+6P4ctZN1/9370aW9iSAdrRgkSFDLi+BBd9gWNzIrJ6sf1I86pF+WpA28sd0DmDZfGJrg76qRro3O2R/XkYWfMt5RLFDPC4a6H6gIj6Tx7q2tVOxuJks8EG2e625UyfUAWz3Hf84D1Kl0LqaJzlRtcutXYHNwSJN1D93OyP+6cMJtDF0R9g8LDJkeyNDQbx8wHgRdHg+1KOTl7I09h2fMrHz8qXK+fKj+DM9WEp2aaRzb6QR/9Ysor4t1tys2olf8ixrWD+BAe2vIW+Mns0J2JFMz8PSQWm4SxS3nQGcjLXAtmekeO6tFbiUL4emfgtknhHhc+abTjKBeKGxyWYNKHhmxWA1iTjI8W/C1zDZHRUaDpzilIRGW+XA4P/PjYEuCbAP8SCcINr9w5az Tm+CtWjp WhcnzHjq5ALWHjDdjuUJxinfNwCh3Ip8Ky4Jba9H8DMzDEeApXAGNlQ9o7ZhWwtzGUC2KBmCNWlFoDNV2//QL03x9RIMIOloH1or4KbePKtCMbxDLvlP/NZ9A0A+VCvky4W+A/KOCdnUnIdKAlWe+MSjjtESGPDMDjN8a3ZSLHOB1mmHEya5URQAZe1JTHeu7iNh9RGiJkcMxijySIul3JAXDpDwuuSKI6JLJJPL5XPxXP8Kpst7mLtO91SakWv92oZBW9CO4Edrv0e7BTOVMMt3xXZwWnrwuIKfVmIVAbnQ7iG7cypOOA2c156DPUPx3QkoD65L4H6eNabBT976Lz2MbZvzmMZ9eCb8kx1vg6jpK3Od4Yrs0D4ev3v6li1D+5l/oRMTPlrSDc86sc2ytqRWmSB/xB4P23Hxj2HK5+0IFgkfYNcBTHUzvsli6s+/Dxk/DJNRIUL8SiYs= 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: All callers of generic_perform_write need to updated ki_pos, move it into common code. Signed-off-by: Christoph Hellwig Reviewed-by: Damien Le Moal Reviewed-by: Xiubo Li --- fs/ceph/file.c | 2 -- fs/ext4/file.c | 9 +++------ fs/f2fs/file.c | 1 - fs/nfs/file.c | 1 - mm/filemap.c | 8 ++++---- 5 files changed, 7 insertions(+), 14 deletions(-) diff --git a/fs/ceph/file.c b/fs/ceph/file.c index f4d8bf7dec88a8..feeb9882ef635a 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -1894,8 +1894,6 @@ static ssize_t ceph_write_iter(struct kiocb *iocb, struct iov_iter *from) * can not run at the same time */ written = generic_perform_write(iocb, from); - if (likely(written >= 0)) - iocb->ki_pos = pos + written; ceph_end_io_write(inode); } diff --git a/fs/ext4/file.c b/fs/ext4/file.c index d101b3b0c7dad8..50824831d31def 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -291,12 +291,9 @@ static ssize_t ext4_buffered_write_iter(struct kiocb *iocb, out: inode_unlock(inode); - if (likely(ret > 0)) { - iocb->ki_pos += ret; - ret = generic_write_sync(iocb, ret); - } - - return ret; + if (unlikely(ret <= 0)) + return ret; + return generic_write_sync(iocb, ret); } static ssize_t ext4_handle_inode_extension(struct inode *inode, loff_t offset, diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 5ac53d2627d20d..9e3855e43a7a63 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -4522,7 +4522,6 @@ static ssize_t f2fs_buffered_write_iter(struct kiocb *iocb, current->backing_dev_info = NULL; if (ret > 0) { - iocb->ki_pos += ret; f2fs_update_iostat(F2FS_I_SB(inode), inode, APP_BUFFERED_IO, ret); } diff --git a/fs/nfs/file.c b/fs/nfs/file.c index f0edf5a36237d1..3cc87ae8473356 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c @@ -658,7 +658,6 @@ ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from) goto out; written = result; - iocb->ki_pos += written; nfs_add_stats(inode, NFSIOS_NORMALWRITTENBYTES, written); if (mntflags & NFS_MOUNT_WRITE_EAGER) { diff --git a/mm/filemap.c b/mm/filemap.c index b4c9bd368b7e58..4d0ec2fa1c7070 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3957,7 +3957,10 @@ ssize_t generic_perform_write(struct kiocb *iocb, struct iov_iter *i) balance_dirty_pages_ratelimited(mapping); } while (iov_iter_count(i)); - return written ? written : status; + if (!written) + return status; + iocb->ki_pos += written; + return written; } EXPORT_SYMBOL(generic_perform_write); @@ -4036,7 +4039,6 @@ ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from) endbyte = pos + status - 1; err = filemap_write_and_wait_range(mapping, pos, endbyte); if (err == 0) { - iocb->ki_pos = endbyte + 1; written += status; invalidate_mapping_pages(mapping, pos >> PAGE_SHIFT, @@ -4049,8 +4051,6 @@ ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from) } } else { written = generic_perform_write(iocb, from); - if (likely(written > 0)) - iocb->ki_pos += written; } out: current->backing_dev_info = NULL;