Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp3744129rwb; Fri, 20 Jan 2023 23:00:54 -0800 (PST) X-Google-Smtp-Source: AMrXdXu0mqs5JjCq2xjOkgqeN2Q7Es07x5ZRvOSzhOakME8noUZT2e9HZTxCLn+xWTekaTXLz1aS X-Received: by 2002:a17:906:95d2:b0:7c1:37:6d5e with SMTP id n18-20020a17090695d200b007c100376d5emr17954402ejy.2.1674284454725; Fri, 20 Jan 2023 23:00:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674284454; cv=none; d=google.com; s=arc-20160816; b=kh31RgCyyQxCrBPBpYE7AnSW9wihTY8CEu/bo8qDPLe0nl9oo8wdfraSFZ8sftmhLQ DSccHD31Nm34vkQS0RVK0TUdi0R34wauAIl9Er7Uwi0nx+OhL4gTZOud+7+4ReTHugj/ X7ADsX37DYHdI3GKQtEzPYromzxSLBtwsNtrZ6JcC/4ge0PdcAO3HUCTkmOmSmLOiUT8 Ac3PouLWte/LkUWNjDUoVwcIGhORrBucBLvPwK6YAc4ZyrMT2H1rIDSKICx7KNnb9tvu 3yooto+gmjiqpTSymZbFUQ9gmjkIrmQd8IKyzqblKnbIlWoSKZkgd++KAnyIxRfEIBXV D9zQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=o5i5qXxICSG+cq4jO8TGXskNtUwwrBBqvoBV9YksFl0=; b=yz/uojcE1pecXs5LMG5OvT14Y7ZLs3+TwkM7MeInpxQKz5DzGVRYO//QrjMaqhjXOI anlwAn5X9CMMCX+PmnhOuUzHmHi3wdfed/GZMX1tHfbpDLRONgiEz1h/TBClrWLJzBKD +5F/HQopaMvWN3UYGVeb6yfvDoKVansboTsrw/FtjbOmURwoljzzsgLW87IuEV1yB7XW khyyJGiDcnTwRdHlqKv/r5SRU+w88iVqWpzHHP9LOF8XSpkYI/xXeBIJgRMIlSuPUT9O OSQIv8Oy3BMfsknCkfJ9Q2f+xzQXldrdUXs+Cg4z6MqrVSlf2RwkC0gQsGuwn6ox/DZT eQiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=WOXQpn1P; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id td7-20020a1709078c8700b00870d2ca6798si2516995ejc.800.2023.01.20.23.00.31; Fri, 20 Jan 2023 23:00:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=WOXQpn1P; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229768AbjAUG6E (ORCPT + 99 others); Sat, 21 Jan 2023 01:58:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229485AbjAUG6D (ORCPT ); Sat, 21 Jan 2023 01:58:03 -0500 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75B913344B; Fri, 20 Jan 2023 22:58:02 -0800 (PST) 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:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type: Content-ID:Content-Description:In-Reply-To:References; bh=o5i5qXxICSG+cq4jO8TGXskNtUwwrBBqvoBV9YksFl0=; b=WOXQpn1PzakC+RFN34/XzUonXP vsoTRXKMhhTh26lIMHpqZJCj89ilMzL9Xs9wuuOgcKtvV4w7MNLKQ24CYHAmpB7yKqLM9N2sObTUq C3atVe/a0mm/s2AFxCA3H4HDAbsOdwh1j1HF0GKBTpIaBh0MKmsv040zNn/2nMVy/bIE2x/B1PAtJ 5LQq9MjNF9Td8J/WqI13GW1GkKbc8hl/wa0C4JIGvGU1KDiDq13qGaCMLPK7aUb09i2TcD6ByW4+3 mlDvAbBEJ+VGbuw628D7djrokVdfqZbOirBrNjGQmL8Q7vdXaHGVHqotN7Z00B3pMNKCRjhh93Qcz ONM5PLwA==; Received: from [2001:4bb8:19a:2039:6754:cc81:9ace:36fc] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1pJ7p7-00DSLx-RA; Sat, 21 Jan 2023 06:57:58 +0000 From: Christoph Hellwig To: Andrew Morton , Matthew Wilcox , Hugh Dickins Cc: linux-afs@lists.infradead.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, cluster-devel@redhat.com, linux-mm@kvack.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-nilfs@vger.kernel.org Subject: return an ERR_PTR from __filemap_get_folio v2 Date: Sat, 21 Jan 2023 07:57:48 +0100 Message-Id: <20230121065755.1140136-1-hch@lst.de> X-Mailer: git-send-email 2.39.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Hi all, __filemap_get_folio and its wrappers can return NULL for three different conditions, which in some cases requires the caller to reverse engineer the decision making. This is fixed by returning an ERR_PTR instead of NULL and thus transporting the reason for the failure. But to make that work we first need to ensure that no xa_value special case is returned and thus return the FGP_ENTRY flag. It turns out that flag is barely used and can usually be deal with in a better way. Note that the shmem patches in here are non-trivial and need some careful review and testing. Changes since v1: - drop the patches to check for errors in btrfs and gfs2 - document the new calling conventions for the wrappers around __filemap_get_folio - rebased against the iomap changes in latest linux-next Diffstat fs/afs/dir.c | 10 +++---- fs/afs/dir_edit.c | 2 - fs/afs/write.c | 4 +- fs/btrfs/disk-io.c | 2 - fs/ext4/inode.c | 2 - fs/ext4/move_extent.c | 8 ++--- fs/hugetlbfs/inode.c | 2 - fs/iomap/buffered-io.c | 15 +---------- fs/netfs/buffered_read.c | 4 +- fs/nilfs2/page.c | 6 ++-- include/linux/pagemap.h | 15 +++++------ include/linux/shmem_fs.h | 1 mm/filemap.c | 27 ++++++++----------- mm/folio-compat.c | 4 +- mm/huge_memory.c | 5 +-- mm/memcontrol.c | 2 - mm/mincore.c | 2 - mm/shmem.c | 64 +++++++++++++++++++---------------------------- mm/swap_state.c | 17 ++++++------ mm/swapfile.c | 4 +- mm/truncate.c | 15 +++++------ 21 files changed, 94 insertions(+), 117 deletions(-)