From patchwork Thu Jul 20 14:04:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13320582 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 4054CEB64DA for ; Thu, 20 Jul 2023 14:06:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 71D9528010E; Thu, 20 Jul 2023 10:06:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6CD4928004C; Thu, 20 Jul 2023 10:06:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5952B28010E; Thu, 20 Jul 2023 10:06:46 -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 4A56B28004C for ; Thu, 20 Jul 2023 10:06:46 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 0D517B0B4C for ; Thu, 20 Jul 2023 14:06:46 +0000 (UTC) X-FDA: 81032166012.07.71837C0 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf08.hostedemail.com (Postfix) with ESMTP id E01101603E3 for ; Thu, 20 Jul 2023 14:05:04 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=pfDrP84K; spf=none (imf08.hostedemail.com: domain of BATV+ae7cc45e83adbe90d207+7270+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+ae7cc45e83adbe90d207+7270+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689861906; 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=mYeu0tyilbLfTglTrpUbKQUjimXqrsdI92ERouU7b00=; b=GY6Cns7S+UxPxo6jbxMdYonIuNfnxKRe5oge3VtrS/3tA+B9Z3Dtj7Yw4opy8Jh98r+zmn WRmq/tEXLG7VDcjFnDlLjrReIFtZVxLxirR1LMPmGwCC8zM2cNsX65W78VPP2/1bHlzIDi M8rFq4qBp7e06LrbXPMw3MuGPxS1g/w= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=pfDrP84K; spf=none (imf08.hostedemail.com: domain of BATV+ae7cc45e83adbe90d207+7270+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+ae7cc45e83adbe90d207+7270+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689861906; a=rsa-sha256; cv=none; b=rgHmIASqCHNh12vD0RNV1eL0EMJTL6Y2pLuCtbfAssRb9R+kF4pNAmuKw09brbszPAkYS8 QRh6UELA8Ag9IKRPSABNEAjIA/UlY3YGPtbAZNBZQ3j5CpV8aZLfT3NgT2es6UkxzmMTMB GIpqVs5xnHZ292A1ORyX0WGolPm0zWo= 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=mYeu0tyilbLfTglTrpUbKQUjimXqrsdI92ERouU7b00=; b=pfDrP84K4Ruw1GgshQgHzCQDme ++Yts7cPZnSbigxbVpQ//KJxOXm8sFa0ST/f3tVXzc4aoNC4NTzyGVWOsJs0CQ6BIng1WDivwIrxv cbwL0OaqvR6zPhBnHGiRdBvlmC3XeBQ4Xf/bQEJhRiXoAZEW+qaCdR+NL6pcGqu0AjW3ZyBoPuULc WRHzp62GGUcmNAPLYh+a/6YpTj0q2IUpeqzpUUUuDKNdq+4o+VyW/UcHE935/ZqiGfRVqQtrcIJ/W 3Jci/0RWbpyIDvi3BZiP9uFT2dSiq+Zj480cqBscAOupKuyx3TGf1JfGUlFzaEhS4jnA8TDbHvNRU 09ibZWpQ==; Received: from [2001:4bb8:19a:298e:a587:c3ea:b692:5b8d] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1qMUH6-00BKof-0U; Thu, 20 Jul 2023 14:05:00 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Darrick J. Wong" , Andrew Morton , Matthew Wilcox , Christian Brauner , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/6] fs: rename and move block_page_mkwrite_return Date: Thu, 20 Jul 2023 16:04:48 +0200 Message-Id: <20230720140452.63817-3-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230720140452.63817-1-hch@lst.de> References: <20230720140452.63817-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-Rspamd-Queue-Id: E01101603E3 X-Rspam-User: X-Stat-Signature: piuww4qxzxa9jzfw8w8ytygpbxttoobr X-Rspamd-Server: rspam01 X-HE-Tag: 1689861904-286286 X-HE-Meta: U2FsdGVkX18fDSXodcOu17jnYRj/FNp5yAxnlyOXZpliMoO1HENUBj6VElkao75t3p5nuge9O1ZPWrZeDL9hgjolMFDyam+pfeayKhlr9Yh7dwFuw8/MGsL5WUKwTIJCx5HflzJ+LndYuZLJ6yqwdsPDxo5ORlYOIS5uzzevmRin2+9aCqvzFtfXrYAjRKoteWUtmrngp9y3yr/A0h1hEj2K++j1kZ27UZ9MNT/bCe9Nu6yryw0avRBX5HPqQEPRNeptxsDICpMaC8NOfve1QwgrP/0ny/POfU9v1EJIWRInogSB2OuMiu8fmHJ51YxgRghO0vrEkKvE4Jrtie6oJka2oJVkrQc2f8YfFmX8tgStkE5f12xSC2XdeZ4renMHeV1/XZyeJ5XUzoxrpDFP7tVqCi1HFYaeEuKwYrOKrTMQoy5pUHzQkdbDt6MIjpxN7MB7d2/fWN0QZci+HEkytfgnSuAb55mYQHXlhFnigkLB4E4ZRAaaA9gTYFWgVWrNcjZnxgmHw/shKjitUDb2ellcBC9y2KxR1OjvaQIpf25oroom+NEqLybu78suapTZn+37wPe3dugd96f+Euk6Kjatz1+uwRbgOfIqRKpRLsTyfMYfltTSZZb/HbOAh1vH+GnOiN3KV+qH7G4A1zy2B1CjPJZmV+jxG8X2JWHT+4Fg/7GqwAEFAhKjCJSbYOp4S+cwy/kdUTzphMvhC15hAANa8tzvPgqbVdHuHo1EoKQ3fJfm/nyHyWbVmISnWKo583iKtb89VPBZIUWXKPz8F1LUM0pVvNoN5owy5PL8+ef95G60MQXIvOc2gPltoxKRvVAHO+lViUQQT5jsleW4HYq76n3CHOBv2UX9JfQWhwImQhvxsV8ES+UiqTgZXhul8EIt76IC2c2Ny9qBIP2ubKX9MwquIYT2LgtoIv8euph4+YJVQnmb77REL/QBFUqGzGuq5etQT1rGS38IM1d ji/DHdMP hvVxNBuEwXiZBh5VuWrcCGxWuVI3Z6j4L0lOwzCrUPppCDrvUXTsHdXITMZaFO8tgyBd/gIJ795PldpcQEPLUap1KYgPrU+Lz2WbSbfAnD7TU0JUvnZbWvOMMV/oAi3698nQkatlSlPcvdGBGs2WJmlFeXjB+mRXqEDQc08Ep8TcxB/d1+GuQjyvyus2dmXF5Z0iS6sAz5gxltHiMWXW99mO/TyoMRoKEmzzaZBXtUKc86NXM3xPZWJKg6XE/O6IiHdzfvrZFBB29bo2KX3cZlP47beCkeSoql3wl7cEv8IZc+wV4n5KIXLHWQhStFN1YI4+1GQmPmlcanpoUGBAvzRoRH0UeWmGIygoaBDbEfyLAPcKG/49tZmH/BSAHn+/ItfegPTg6HUWVFQdaR8OM79KQtUQ3GE6BkNTLjEDsv0KEXXaktyBHirUVsnIc+xrYovKOEFMKZupE3yOQOv0DO1TYVw== 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: block_page_mkwrite_return is neither block nor mkwrite specific, and should not be under CONFIG_BLOCK. Move it to mm.h and rename it to vmf_fs_error. Signed-off-by: Christoph Hellwig Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Luis Chamberlain --- fs/ext4/inode.c | 2 +- fs/f2fs/file.c | 2 +- fs/gfs2/file.c | 16 ++++++++-------- fs/iomap/buffered-io.c | 2 +- fs/nilfs2/file.c | 2 +- fs/udf/file.c | 2 +- include/linux/buffer_head.h | 12 ------------ include/linux/mm.h | 18 ++++++++++++++++++ 8 files changed, 31 insertions(+), 25 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 43775a6ca5054a..6eea0886b88553 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -6140,7 +6140,7 @@ vm_fault_t ext4_page_mkwrite(struct vm_fault *vmf) if (err == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) goto retry_alloc; out_ret: - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); out: filemap_invalidate_unlock_shared(mapping); sb_end_pagefault(inode->i_sb); diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 093039dee99206..9b3871fb9bfc44 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -159,7 +159,7 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) sb_end_pagefault(inode->i_sb); err: - return block_page_mkwrite_return(err); + return vmf_fs_error(err); } static const struct vm_operations_struct f2fs_file_vm_ops = { diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c index 1bf3c4453516f2..897ef62d6d77a7 100644 --- a/fs/gfs2/file.c +++ b/fs/gfs2/file.c @@ -432,7 +432,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh); err = gfs2_glock_nq(&gh); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_uninit; } @@ -474,7 +474,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) err = gfs2_rindex_update(sdp); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_unlock; } @@ -482,12 +482,12 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) ap.target = data_blocks + ind_blocks; err = gfs2_quota_lock_check(ip, &ap); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_unlock; } err = gfs2_inplace_reserve(ip, &ap); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_quota_unlock; } @@ -500,7 +500,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) } err = gfs2_trans_begin(sdp, rblocks, 0); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_trans_fail; } @@ -508,7 +508,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) if (gfs2_is_stuffed(ip)) { err = gfs2_unstuff_dinode(ip); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_trans_end; } } @@ -524,7 +524,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) err = gfs2_allocate_page_backing(page, length); if (err) - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); out_page_locked: if (ret != VM_FAULT_LOCKED) @@ -558,7 +558,7 @@ static vm_fault_t gfs2_fault(struct vm_fault *vmf) gfs2_holder_init(ip->i_gl, LM_ST_SHARED, 0, &gh); err = gfs2_glock_nq(&gh); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_uninit; } ret = filemap_fault(vmf); diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c index adb92cdb24b009..0607790827b48a 100644 --- a/fs/iomap/buffered-io.c +++ b/fs/iomap/buffered-io.c @@ -1286,7 +1286,7 @@ vm_fault_t iomap_page_mkwrite(struct vm_fault *vmf, const struct iomap_ops *ops) return VM_FAULT_LOCKED; out_unlock: folio_unlock(folio); - return block_page_mkwrite_return(ret); + return vmf_fs_error(ret); } EXPORT_SYMBOL_GPL(iomap_page_mkwrite); diff --git a/fs/nilfs2/file.c b/fs/nilfs2/file.c index a9eb3487efb2c2..740ce26d1e7657 100644 --- a/fs/nilfs2/file.c +++ b/fs/nilfs2/file.c @@ -108,7 +108,7 @@ static vm_fault_t nilfs_page_mkwrite(struct vm_fault *vmf) wait_for_stable_page(page); out: sb_end_pagefault(inode->i_sb); - return block_page_mkwrite_return(ret); + return vmf_fs_error(ret); } static const struct vm_operations_struct nilfs_file_vm_ops = { diff --git a/fs/udf/file.c b/fs/udf/file.c index 243840dc83addf..c0e2080e639eec 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c @@ -67,7 +67,7 @@ static vm_fault_t udf_page_mkwrite(struct vm_fault *vmf) err = block_commit_write(page, 0, end); if (err < 0) { unlock_page(page); - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_unlock; } out_dirty: diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 6cb3e9af78c9ed..7002a9ff63a3da 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -291,18 +291,6 @@ int generic_cont_expand_simple(struct inode *inode, loff_t size); int block_commit_write(struct page *page, unsigned from, unsigned to); int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, get_block_t get_block); -/* Convert errno to return value from ->page_mkwrite() call */ -static inline vm_fault_t block_page_mkwrite_return(int err) -{ - if (err == 0) - return VM_FAULT_LOCKED; - if (err == -EFAULT || err == -EAGAIN) - return VM_FAULT_NOPAGE; - if (err == -ENOMEM) - return VM_FAULT_OOM; - /* -ENOSPC, -EDQUOT, -EIO ... */ - return VM_FAULT_SIGBUS; -} sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *); int block_truncate_page(struct address_space *, loff_t, get_block_t *); diff --git a/include/linux/mm.h b/include/linux/mm.h index 2dd73e4f3d8e3a..75777eae1c9c26 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3386,6 +3386,24 @@ static inline vm_fault_t vmf_error(int err) return VM_FAULT_SIGBUS; } +/* + * Convert errno to return value for ->page_mkwrite() calls. + * + * This should eventually be merged with vmf_error() above, but will need a + * careful audit of all vmf_error() callers. + */ +static inline vm_fault_t vmf_fs_error(int err) +{ + if (err == 0) + return VM_FAULT_LOCKED; + if (err == -EFAULT || err == -EAGAIN) + return VM_FAULT_NOPAGE; + if (err == -ENOMEM) + return VM_FAULT_OOM; + /* -ENOSPC, -EDQUOT, -EIO ... */ + return VM_FAULT_SIGBUS; +} + struct page *follow_page(struct vm_area_struct *vma, unsigned long address, unsigned int foll_flags);