From patchwork Wed Mar 5 20:47:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14003356 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C4EBE2571B3 for ; Wed, 5 Mar 2025 20:47:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207663; cv=none; b=i4n6m8/KwwZjwDOJ1+9VtJ7WzrDdgiRg8/TmHaSAB5k1EgWPOf+r8wyNLEbS09IhREpNNqFAnabL7hL5cPUoty0p5e/k7tdAJB/nmbux9bu69UVBt32y1AU9AaGGU5sgYn7+d50/nVlO2xjXMTlC8JQ1TP1jSZtnZYmWi2uCqDE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207663; c=relaxed/simple; bh=H7Z7ritYcj8LHqWqd2JE1MWZodI9cbZE/VlDkNbNAQ8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PlGYiShTRmhis/IoUvcdM7n1EKIhOqWuX/fES4MAZYq5/JxkLHdTUUL1Sbpi1uX+2KZS9V1ZdQrzjJFhJXptluP8fo5Pn3co2Dz1pxcXBlc0o8n0yCcgLjQa62N1oINxAIcbm5qmHwosg0g56f/YFKshfolO72ZHdJdSCZ/3Yuc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=shuKo/cN; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="shuKo/cN" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=47d4BYLDfR0fIjbv5YFWD63SrofnqHiMYToK5cQd6ss=; b=shuKo/cNlKLLdhkZqljT8g33Ie Zllm6a6zmegMieh6WoFHXinPJyi1icC6LULoPpqq0AT4sleu8+NegwDgsq2v1uvMPeWVyDSW6CnKk qkYU1KWmolvnPFxZr4768CDbE/4hglQP86DbQEyb/OnYq7IYfv5l+zTT2y7Y4H8DZNyPpOuiDhT0c AEWqCUqbIe3y0vB8F8A0uMom5Eg7ppSkaeiveO8aISnDEkwY74Z/gDwL3h/zX/1moW6uaZtzmICEZ C0qHY1PRPePip+AcW35srsAy425BAyBREyQOg53836jLo/HefhoIblgAXa8e2DBkstJzdvlbKbzjN Zg+KYrNw==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tpveS-00000006Bmu-3zus; Wed, 05 Mar 2025 20:47:36 +0000 From: "Matthew Wilcox (Oracle)" To: Christian Brauner Cc: "Matthew Wilcox (Oracle)" , devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, Mike Marshall Subject: [PATCH v2 1/9] orangefs: Do not truncate file size Date: Wed, 5 Mar 2025 20:47:25 +0000 Message-ID: <20250305204734.1475264-2-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305204734.1475264-1-willy@infradead.org> References: <20250305204734.1475264-1-willy@infradead.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 'len' is used to store the result of i_size_read(), so making 'len' a size_t results in truncation to 4GiB on 32-bit systems. Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Mike Marshall --- fs/orangefs/inode.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index aae6d2b8767d..63d7c1ca0dfd 100644 --- a/fs/orangefs/inode.c +++ b/fs/orangefs/inode.c @@ -23,9 +23,9 @@ static int orangefs_writepage_locked(struct page *page, struct orangefs_write_range *wr = NULL; struct iov_iter iter; struct bio_vec bv; - size_t len, wlen; + size_t wlen; ssize_t ret; - loff_t off; + loff_t len, off; set_page_writeback(page); @@ -91,8 +91,7 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow, struct orangefs_write_range *wrp, wr; struct iov_iter iter; ssize_t ret; - size_t len; - loff_t off; + loff_t len, off; int i; len = i_size_read(inode); From patchwork Wed Mar 5 20:47:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14003349 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC77218DF73 for ; Wed, 5 Mar 2025 20:47:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207660; cv=none; b=MEi522beAr+LvsDlk0JVT4RrsYZohsk9z78lEoi+HLlvwp51gUHk73gIrjDa/imKfg0nIjgkvPBHkHU2F/97bgw5dgRZRRNK6enkMoNQz7a38JDccbMFkvFqfQ37FP2YqK8uwN+dAoCgIPlSichF0dGwCGPFsi89h0sW3DqCDNA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207660; c=relaxed/simple; bh=CZwRZM0JGepXYBodsXzTH0tXQB27XfMl4/9vli8r314=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=RB5ggB9Ubm2ZQWIpo6WDGCSMOEPg5hSoyQVOP84PokRIco+Yq4Q6e00/MJeqobJ9H8AzBXqQNTTUtzPZ1g9+WlarEmW/nhwEEbo2FuOnckAdbc+GLTgRDPjViSyh7uLO0CROsYLmOvAq6gmuXGmhvH3EZ0lfVuKU2Gi9ETwou3Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=W/b1r7ll; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="W/b1r7ll" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description; bh=tJpuebJhSuz4wsfowZF8peK48yQJiiHPMRRBEl8mVqA=; b=W/b1r7llv8Nty+1s6XGHKA+Cty jSJHx3GRs3e1cUnpQeQw7lUMYzuan1kOUG1IEY7xJh2Lied8+51cpWdbS2ePFdGsfewRq3fv0Kkiy gQHm1hWDC+vh0l9lh4hTdJhzdywaEHNxpqYinwZoZ7wFNvFPeqirxLF7TZjey03nyQgwXCd4JCoak /4ItZREXWtVQNLeA8sbXWF6dULam8xICWnVQGaiVo3AGPX4YHfiDUDkU8cjHVEtgd2s7AVNfa5xtg rtwIqEGxlkLnCD2R50KXQiQtg3Td4F8ZwON0a/m7IZeReyC7T6LTIOg21oZGYa1hThrYgaHFkNicJ yuTYYj2g==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tpveT-00000006Bmw-05S8; Wed, 05 Mar 2025 20:47:37 +0000 From: "Matthew Wilcox (Oracle)" To: Christian Brauner Cc: "Matthew Wilcox (Oracle)" , devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, Mike Marshall Subject: [PATCH v2 2/9] orangefs: Move s_kmod_keyword_mask_map to orangefs-debugfs.c Date: Wed, 5 Mar 2025 20:47:26 +0000 Message-ID: <20250305204734.1475264-3-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305204734.1475264-1-willy@infradead.org> References: <20250305204734.1475264-1-willy@infradead.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Attempting to build orangefs with W=1 currently reports errors like: In file included from ../fs/orangefs/protocol.h:287, from ../fs/orangefs/waitqueue.c:16: ../fs/orangefs/orangefs-debug.h:86:18: error: ‘num_kmod_keyword_mask_map’ defined but not used [-Werror=unused-const-variable=] Move num_kmod_keyword_mask_map, s_kmod_keyword_mask_map and struct __keyword_mask_s to orangefs-debugfs.c which is the only file they're used in. Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Mike Marshall --- fs/orangefs/orangefs-debug.h | 43 ---------------------------------- fs/orangefs/orangefs-debugfs.c | 43 ++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/fs/orangefs/orangefs-debug.h b/fs/orangefs/orangefs-debug.h index 6e079d4230d0..d4463534cec6 100644 --- a/fs/orangefs/orangefs-debug.h +++ b/fs/orangefs/orangefs-debug.h @@ -43,47 +43,4 @@ #define GOSSIP_MAX_NR 16 #define GOSSIP_MAX_DEBUG (((__u64)1 << GOSSIP_MAX_NR) - 1) -/* a private internal type */ -struct __keyword_mask_s { - const char *keyword; - __u64 mask_val; -}; - -/* - * Map all kmod keywords to kmod debug masks here. Keep this - * structure "packed": - * - * "all" is always last... - * - * keyword mask_val index - * foo 1 0 - * bar 2 1 - * baz 4 2 - * qux 8 3 - * . . . - */ -static struct __keyword_mask_s s_kmod_keyword_mask_map[] = { - {"super", GOSSIP_SUPER_DEBUG}, - {"inode", GOSSIP_INODE_DEBUG}, - {"file", GOSSIP_FILE_DEBUG}, - {"dir", GOSSIP_DIR_DEBUG}, - {"utils", GOSSIP_UTILS_DEBUG}, - {"wait", GOSSIP_WAIT_DEBUG}, - {"acl", GOSSIP_ACL_DEBUG}, - {"dcache", GOSSIP_DCACHE_DEBUG}, - {"dev", GOSSIP_DEV_DEBUG}, - {"name", GOSSIP_NAME_DEBUG}, - {"bufmap", GOSSIP_BUFMAP_DEBUG}, - {"cache", GOSSIP_CACHE_DEBUG}, - {"debugfs", GOSSIP_DEBUGFS_DEBUG}, - {"xattr", GOSSIP_XATTR_DEBUG}, - {"init", GOSSIP_INIT_DEBUG}, - {"sysfs", GOSSIP_SYSFS_DEBUG}, - {"none", GOSSIP_NO_DEBUG}, - {"all", GOSSIP_MAX_DEBUG} -}; - -static const int num_kmod_keyword_mask_map = (int) - (ARRAY_SIZE(s_kmod_keyword_mask_map)); - #endif /* __ORANGEFS_DEBUG_H */ diff --git a/fs/orangefs/orangefs-debugfs.c b/fs/orangefs/orangefs-debugfs.c index f52073022fae..f7095c91660c 100644 --- a/fs/orangefs/orangefs-debugfs.c +++ b/fs/orangefs/orangefs-debugfs.c @@ -44,6 +44,49 @@ #include "protocol.h" #include "orangefs-kernel.h" +/* a private internal type */ +struct __keyword_mask_s { + const char *keyword; + __u64 mask_val; +}; + +/* + * Map all kmod keywords to kmod debug masks here. Keep this + * structure "packed": + * + * "all" is always last... + * + * keyword mask_val index + * foo 1 0 + * bar 2 1 + * baz 4 2 + * qux 8 3 + * . . . + */ +static struct __keyword_mask_s s_kmod_keyword_mask_map[] = { + {"super", GOSSIP_SUPER_DEBUG}, + {"inode", GOSSIP_INODE_DEBUG}, + {"file", GOSSIP_FILE_DEBUG}, + {"dir", GOSSIP_DIR_DEBUG}, + {"utils", GOSSIP_UTILS_DEBUG}, + {"wait", GOSSIP_WAIT_DEBUG}, + {"acl", GOSSIP_ACL_DEBUG}, + {"dcache", GOSSIP_DCACHE_DEBUG}, + {"dev", GOSSIP_DEV_DEBUG}, + {"name", GOSSIP_NAME_DEBUG}, + {"bufmap", GOSSIP_BUFMAP_DEBUG}, + {"cache", GOSSIP_CACHE_DEBUG}, + {"debugfs", GOSSIP_DEBUGFS_DEBUG}, + {"xattr", GOSSIP_XATTR_DEBUG}, + {"init", GOSSIP_INIT_DEBUG}, + {"sysfs", GOSSIP_SYSFS_DEBUG}, + {"none", GOSSIP_NO_DEBUG}, + {"all", GOSSIP_MAX_DEBUG} +}; + +static const int num_kmod_keyword_mask_map = (int) + (ARRAY_SIZE(s_kmod_keyword_mask_map)); + #define DEBUG_HELP_STRING_SIZE 4096 #define HELP_STRING_UNINITIALIZED \ "Client Debug Keywords are unknown until the first time\n" \ From patchwork Wed Mar 5 20:47:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14003357 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79E3D2580C2 for ; Wed, 5 Mar 2025 20:47:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207665; cv=none; b=WS+0waer0iKXkUJ/+Uk1/cMOLl4ny273nNunvWtqBDlNaPAUC9YgvGuuxj1FZk8q8Gx7YD6ynCnKOaEHNAzdJNvJS3VZ8BHEezx2pfNQ9nseUrAbMEVmKajr34wTAdyFZZVj8fy8Nv6aOYt+/dtuo/W44Xi5Ug63xzEAYSReIIc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207665; c=relaxed/simple; bh=P9BiaB8GU3F/U3fkyNOLTk/DmK+ojI7iT+j29iK8LGw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=f1d1iD0vU8yjLFr0OLi6w3lOkK8HfYZrUsdSZBw/nz3loUzGebDaeh1/lsPjeZkU40E0gVfLbnBApfrUYchZOG143h38eREl06yK2hYtWzFbi4w2PxzaLwSUO0lib9jIiOdts0JzHJNNecrq3op19tVCAjUxb9wYUlRJaqoY/AE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=lMyjVDY1; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="lMyjVDY1" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=1kekQQ4S2DXYL2wViV13EFeHuXe3fpARyuID7EwOzzk=; b=lMyjVDY1q6FsA3rKWhY3dZL0Tn kmffeG57Vv+vAVS2UTJexldN+ljkyheQwdSAkqt20QLV+4vv1RSOam+j7esjM3SC5+xljuBbOdPhj VFwivRqzC9z6DsINN0ECKSCjVJGaBLqtv8IR/ZcycHcSYn0GrDq9zdTYScoeMOmztckCFCYUer2wg 0XPZqT7Yub0gX9Q2BfR03SwAOGztnCBLDJCm8FSUVUyMyaqsbV7xGNgwDkSwe3pITbddvvE/zso7v y9Ivw0++cnd8+9nJLmvs1EypsfwXjGQyIcY5TJJDI8QU5uaXZcxHQO6YG8Jl+NGCTsWsrMWU+Mbpd TTlBrSLA==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tpveT-00000006Bmz-0Wup; Wed, 05 Mar 2025 20:47:37 +0000 From: "Matthew Wilcox (Oracle)" To: Christian Brauner Cc: "Matthew Wilcox (Oracle)" , devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, Mike Marshall Subject: [PATCH v2 3/9] orangefs: make open_for_read and open_for_write boolean Date: Wed, 5 Mar 2025 20:47:27 +0000 Message-ID: <20250305204734.1475264-4-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305204734.1475264-1-willy@infradead.org> References: <20250305204734.1475264-1-willy@infradead.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 sparse currently warns: fs/orangefs/file.c:119:32: warning: incorrect type in assignment (different base types) fs/orangefs/file.c:119:32: expected int open_for_write fs/orangefs/file.c:119:32: got restricted fmode_t Turning open_for_write and open_for_read into booleans (which is how they're used) removes this warning. Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Mike Marshall --- fs/orangefs/file.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index d68372241b30..90c49c0de243 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c @@ -57,8 +57,8 @@ ssize_t wait_for_direct_io(enum ORANGEFS_io_type type, struct inode *inode, int buffer_index; ssize_t ret; size_t copy_amount; - int open_for_read; - int open_for_write; + bool open_for_read; + bool open_for_write; new_op = op_alloc(ORANGEFS_VFS_OP_FILE_IO); if (!new_op) From patchwork Wed Mar 5 20:47:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14003353 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E054C253340 for ; Wed, 5 Mar 2025 20:47:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; cv=none; b=Ase/Nad2IvxIhIyjsp5M7nTkYi8IGcbX21kWDu7tlu7h/exr/V5iMmXhfgv44zJW8ppG1ea+3rZH9UKAwHjKX7zKluMyxIAz3DcKwofd9Ne8oBH3FPB17SZ4ZBglVBhSLE4GqrBmj1GmrlGbKZnCyY9CgI9wSiWveqg+LS25os0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; c=relaxed/simple; bh=/ZkpV6VzDEWZ++NDYAivQ2PVGTdaj/CKfft0UriuEPo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m7U08TmEv6QKy7qM5QU9ZGGXx1jlfdrbVmtyRRItfJ9TRWZcE5X2Osk4TLpC+D/Lp0keKKYti6i5DR9D+n6RyuooYMmw0nBVuRCScf+rCWcwhbo0Jc+bQOQykZezwcHbQRpEzm0hLXtI6TIqoXhxbuTKTVxJuSAgseZ3QHJSoZA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=RWm7PUCH; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="RWm7PUCH" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=6OHiEQxE0Mic6ndYDggIZx08G5+QyO3uodDDBOd8sOk=; b=RWm7PUCHT6khHS6TV5tZOB5IRS ZfV5gVKe80wxieCrAXc2N9PAEZdgOoThCiC9qGx5QoAlR6R0THCAGct1Y+5CfRI53AGdgrRI0AQzL YY5EwPOTvmYL8klE0Z98pQOSKZbevj4MHVapsgpv6Cu+kyzgh0GMSvMEfXNrjJ8SYnPgRa7U4AMAI BEJWJGJU+Rx607b5uX7vvsFCLkHInLamwhJ+eIFDdHewNAQMBNj4GzWxtxl7n78e2kM74C6VcDwpE hwBhx9V/og6+t1VuBNN7H+ypqOomKpGe4GukNrNMm5G+QlFntkAx2xBXycb8MveTko3oFIwAvYLr3 Sd33lJVQ==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tpveT-00000006Bn5-0ybw; Wed, 05 Mar 2025 20:47:37 +0000 From: "Matthew Wilcox (Oracle)" To: Christian Brauner Cc: "Matthew Wilcox (Oracle)" , devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, Mike Marshall Subject: [PATCH v2 4/9] orangefs: Remove orangefs_writepage() Date: Wed, 5 Mar 2025 20:47:28 +0000 Message-ID: <20250305204734.1475264-5-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305204734.1475264-1-willy@infradead.org> References: <20250305204734.1475264-1-willy@infradead.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 If we add a migrate_folio operation, we can remove orangefs_writepage (as there is already a writepages operation). filemap_migrate_folio() will do fine as struct orangefs_write_range does not need to be adjusted when the folio is migrated. Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Mike Marshall --- fs/orangefs/inode.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index 63d7c1ca0dfd..4ad049d5cc9c 100644 --- a/fs/orangefs/inode.c +++ b/fs/orangefs/inode.c @@ -64,15 +64,6 @@ static int orangefs_writepage_locked(struct page *page, return ret; } -static int orangefs_writepage(struct page *page, struct writeback_control *wbc) -{ - int ret; - ret = orangefs_writepage_locked(page, wbc); - unlock_page(page); - end_page_writeback(page); - return ret; -} - struct orangefs_writepages { loff_t off; size_t len; @@ -605,7 +596,6 @@ static ssize_t orangefs_direct_IO(struct kiocb *iocb, /** ORANGEFS2 implementation of address space operations */ static const struct address_space_operations orangefs_address_operations = { - .writepage = orangefs_writepage, .readahead = orangefs_readahead, .read_folio = orangefs_read_folio, .writepages = orangefs_writepages, @@ -615,6 +605,7 @@ static const struct address_space_operations orangefs_address_operations = { .invalidate_folio = orangefs_invalidate_folio, .release_folio = orangefs_release_folio, .free_folio = orangefs_free_folio, + .migrate_folio = filemap_migrate_folio, .launder_folio = orangefs_launder_folio, .direct_IO = orangefs_direct_IO, }; From patchwork Wed Mar 5 20:47:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14003354 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F2051254849 for ; Wed, 5 Mar 2025 20:47:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; cv=none; b=CNJ9IjBDLMeBdc6anCRhBNr6Sh2SXVEjcaSpAZju2YvXsaRWrRZEK34CyIHjjZAW+LiLLBxJ+L2W655SuKHduoYTRX6WHFjU9//klqboIGiUFPPn+gZK1v8v7nf824svoxPTcqdYpAT316a34es+Yk7AS24ptOgsJDMi24RTvxs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; c=relaxed/simple; bh=q81xkYVbvPKp6+CumDq/mTmccOLJ9q4eur+z/OV7NsU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CX7SczIjIvfKlrFmI1y4rnXEpZi0eqiU5xP7XhAQB/emXUcA62mp/eUr5ugJ1JRhf8s/1ML9ak2SzHkX3DqRnBDV5t5AKTbjD01uTSq9c4SvrZ4LikI4ec59ciK1f6EXqFFM/8ONMTArbBQuCj+9EHX59rQu924ZqSWOtmhM+S4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=QzEX8hLG; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="QzEX8hLG" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=RY60+f7rCMnrhQSH6beFMGF4z+iQ/ynB4ypXkrWpyxQ=; b=QzEX8hLGOMhTyYi4bMKTc8egca QPOxQMiiYAPzd2KnWs0dKXxDU4AFrh8v5UU4+UgOHaJDz2/hGx4K8aD3AmbWTkd425GGuApNe0VSI dRvUGp4NlPYxnm86zX5xT+9ZCI72s+k6Z93GfmcRMtsHOW/szkUbVO79mQsh8H8JNriDxKXZeQ69N fsI/3xOL+K8pcJ+YpU/Wfp6ctsrOR8IUSZzhLxYC273t+FTN8+0v2sK9mdqV0KDlpL0+Javf2yDMj Iss/M0Y5yYbc//8R8JUHKKN9NrIS9WEqi4/3+C9yPJw7NN/r0r+7GK9lDIeelb4/hgNLu0SNDH+Cf 1DeN+5wg==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tpveT-00000006BnF-1X8a; Wed, 05 Mar 2025 20:47:37 +0000 From: "Matthew Wilcox (Oracle)" To: Christian Brauner Cc: "Matthew Wilcox (Oracle)" , devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, Mike Marshall Subject: [PATCH v2 5/9] orangefs: Convert orangefs_writepage_locked() to take a folio Date: Wed, 5 Mar 2025 20:47:29 +0000 Message-ID: <20250305204734.1475264-6-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305204734.1475264-1-willy@infradead.org> References: <20250305204734.1475264-1-willy@infradead.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Both callers have a folio, pass it in and use it inside orangefs_writepage_locked(). Removes a few hidden calls to compound_head() and accesses to page->mapping. Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Mike Marshall --- fs/orangefs/inode.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index 4ad049d5cc9c..90db1d705fe8 100644 --- a/fs/orangefs/inode.c +++ b/fs/orangefs/inode.c @@ -16,10 +16,10 @@ #include "orangefs-kernel.h" #include "orangefs-bufmap.h" -static int orangefs_writepage_locked(struct page *page, - struct writeback_control *wbc) +static int orangefs_writepage_locked(struct folio *folio, + struct writeback_control *wbc) { - struct inode *inode = page->mapping->host; + struct inode *inode = folio->mapping->host; struct orangefs_write_range *wr = NULL; struct iov_iter iter; struct bio_vec bv; @@ -27,11 +27,11 @@ static int orangefs_writepage_locked(struct page *page, ssize_t ret; loff_t len, off; - set_page_writeback(page); + folio_start_writeback(folio); len = i_size_read(inode); - if (PagePrivate(page)) { - wr = (struct orangefs_write_range *)page_private(page); + if (folio->private) { + wr = folio->private; WARN_ON(wr->pos >= len); off = wr->pos; if (off + wr->len > len) @@ -40,27 +40,27 @@ static int orangefs_writepage_locked(struct page *page, wlen = wr->len; } else { WARN_ON(1); - off = page_offset(page); - if (off + PAGE_SIZE > len) + off = folio_pos(folio); + wlen = folio_size(folio); + + if (wlen > len - off) wlen = len - off; - else - wlen = PAGE_SIZE; } /* Should've been handled in orangefs_invalidate_folio. */ WARN_ON(off == len || off + wlen > len); WARN_ON(wlen == 0); - bvec_set_page(&bv, page, wlen, off % PAGE_SIZE); + bvec_set_folio(&bv, folio, wlen, offset_in_folio(folio, off)); iov_iter_bvec(&iter, ITER_SOURCE, &bv, 1, wlen); ret = wait_for_direct_io(ORANGEFS_IO_WRITE, inode, &off, &iter, wlen, len, wr, NULL, NULL); if (ret < 0) { - mapping_set_error(page->mapping, ret); + mapping_set_error(folio->mapping, ret); } else { ret = 0; } - kfree(detach_page_private(page)); + kfree(folio_detach_private(folio)); return ret; } @@ -179,7 +179,7 @@ static int orangefs_writepages_callback(struct folio *folio, orangefs_writepages_work(ow, wbc); ow->npages = 0; } - ret = orangefs_writepage_locked(&folio->page, wbc); + ret = orangefs_writepage_locked(folio, wbc); mapping_set_error(folio->mapping, ret); folio_unlock(folio); folio_end_writeback(folio); @@ -474,7 +474,7 @@ static int orangefs_launder_folio(struct folio *folio) }; folio_wait_writeback(folio); if (folio_clear_dirty_for_io(folio)) { - r = orangefs_writepage_locked(&folio->page, &wbc); + r = orangefs_writepage_locked(folio, &wbc); folio_end_writeback(folio); } return r; From patchwork Wed Mar 5 20:47:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14003350 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F1E44253B4F for ; Wed, 5 Mar 2025 20:47:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207660; cv=none; b=k9A9v5SbxHJjhviPFGcnAwbsUm3a+xvB/fFzTXD6e9QVZyKWKMtmOo2Tesg2K0nCswqZqt5+baZcgCOQpkhlD11Z4/nhrvGZBY/Ml9axEbLicXyTikq4ssiRcygjH8sENBaGp1ZHQCdT96ICy1g6kzUrvWyxiUEtQQwh6nesGbI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207660; c=relaxed/simple; bh=t6GU5joqG8Az3G15UHNVwOwsC0cD4LWwaZ5NgLNH8wA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HXt44YDELJtcNwFz9kVy3u67ORpZEMc8YhbMbQ1V2vrCP+Yj0aHuQnGl8hiZTojl4XqxYJjeOUQ7aW3QhsLO/rFKFd+C9Ip43CjjzTBmIWFUlL+D6EwaUwcmynp2rsOgtOWkv3SQ8GRKr5fl1rA7H1RP9LSak0MtcPIiVVgjSdA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=OQFDoEgS; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="OQFDoEgS" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=1O5mcTlCY9Xs5ZmOA0cfSQHIHUlIXaHcXo/V1Pj27bE=; b=OQFDoEgSkew/iLLiCtK8UjvIo5 nfFAR+awLcV1MtY3K/e1ncnNL5EXGqCvtvcjFoPGZSDc0pSSWryRwt3L0ory7jVwB3mxUrspLu2iU dseDT7lE6erAXc7OhD042UHgaMM3qrH3np40oHoYHc3I7SuoVHhkPsizbziE4xGl022M1ukh+iCw2 Ar1Y+msfHL2XFLdxggsRX7cl0sEFHoK7EzgPWcJatMhhB6Od9FcyzvKDaT3m04M5okDrxOgtNs3bK gAiJkD66aTqY+KDOZrTE0AYID0is8br/0n10sXrVGJZDNnTBi02MkyCRKG3RyKUM2myUd3M6k1T+k gT6gJQrg==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tpveT-00000006BnN-26V3; Wed, 05 Mar 2025 20:47:37 +0000 From: "Matthew Wilcox (Oracle)" To: Christian Brauner Cc: "Matthew Wilcox (Oracle)" , devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, Mike Marshall Subject: [PATCH v2 6/9] orangefs: Pass mapping to orangefs_writepages_work() Date: Wed, 5 Mar 2025 20:47:30 +0000 Message-ID: <20250305204734.1475264-7-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305204734.1475264-1-willy@infradead.org> References: <20250305204734.1475264-1-willy@infradead.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Remove two accesses to page->mapping by passing the mapping from orangefs_writepages() to orangefs_writepages_callback() and then orangefs_writepages_work(). That makes it obvious that all folios come from the same mapping, so we can hoist the call to mapping_set_error() outside the loop. While I'm here, switch from write_cache_pages() to writeback_iter() which removes an indirect function call. Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Mike Marshall --- fs/orangefs/inode.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index 90db1d705fe8..879d96c11b1c 100644 --- a/fs/orangefs/inode.c +++ b/fs/orangefs/inode.c @@ -71,14 +71,15 @@ struct orangefs_writepages { kgid_t gid; int maxpages; int npages; + struct address_space *mapping; struct page **pages; struct bio_vec *bv; }; static int orangefs_writepages_work(struct orangefs_writepages *ow, - struct writeback_control *wbc) + struct writeback_control *wbc) { - struct inode *inode = ow->pages[0]->mapping->host; + struct inode *inode = ow->mapping->host; struct orangefs_write_range *wrp, wr; struct iov_iter iter; ssize_t ret; @@ -107,8 +108,8 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow, ret = wait_for_direct_io(ORANGEFS_IO_WRITE, inode, &off, &iter, ow->len, 0, &wr, NULL, NULL); if (ret < 0) { + mapping_set_error(ow->mapping, ret); for (i = 0; i < ow->npages; i++) { - mapping_set_error(ow->pages[i]->mapping, ret); if (PagePrivate(ow->pages[i])) { wrp = (struct orangefs_write_range *) page_private(ow->pages[i]); @@ -137,9 +138,8 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow, } static int orangefs_writepages_callback(struct folio *folio, - struct writeback_control *wbc, void *data) + struct writeback_control *wbc, struct orangefs_writepages *ow) { - struct orangefs_writepages *ow = data; struct orangefs_write_range *wr = folio->private; int ret; @@ -197,7 +197,9 @@ static int orangefs_writepages(struct address_space *mapping, { struct orangefs_writepages *ow; struct blk_plug plug; - int ret; + int error; + struct folio *folio = NULL; + ow = kzalloc(sizeof(struct orangefs_writepages), GFP_KERNEL); if (!ow) return -ENOMEM; @@ -213,15 +215,17 @@ static int orangefs_writepages(struct address_space *mapping, kfree(ow); return -ENOMEM; } + ow->mapping = mapping; blk_start_plug(&plug); - ret = write_cache_pages(mapping, wbc, orangefs_writepages_callback, ow); + while ((folio = writeback_iter(mapping, wbc, folio, &error))) + error = orangefs_writepages_callback(folio, wbc, ow); if (ow->npages) - ret = orangefs_writepages_work(ow, wbc); + error = orangefs_writepages_work(ow, wbc); blk_finish_plug(&plug); kfree(ow->pages); kfree(ow->bv); kfree(ow); - return ret; + return error; } static int orangefs_launder_folio(struct folio *); From patchwork Wed Mar 5 20:47:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14003355 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8922F25486B for ; Wed, 5 Mar 2025 20:47:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; cv=none; b=PE17FDsOkepskWeaZU9610wPRmGXmOcaHg/d2BD/mR4JGyAJQlaAEQ5d7nL/wFoxNu3u6wrzwm7WAS/7Ciz7qr/+hcQFNRf4KWIzUPM6B/iuE6iA1VWCJDx5t+GRszobH/VeHVTaukrwTgb+7OWBhdji5fbXSQ2moOb2RSo717c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; c=relaxed/simple; bh=SzG9HOQSoXm+MAoPjlJAH/t0h0G5IDNciFoyhbM+hjM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VpIycVFPJxlt2jsC6EBdqhRe9zC5L689oasfLAifWT7iQl3USA2VUqkBAiO4Y6QRJSwsEpd593CGmKBs9njVjTwDnj0pMia2yiwxYpK6qA4WkpPZxo/KmxxNa4xPo8Y0lG7M8l2vc0rnWZI1IHHPw9OOBXtYCWzWpX0Q5kGzews= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=FZYpwx2Z; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="FZYpwx2Z" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=5BzNXNHKC1Tn1Nct68aiy/1TPdaC/IIAzgU3YaciPxg=; b=FZYpwx2Z0PJcR27ACxunai6Drb oEUvYV1JLIwfx0bmwK+cv5nVnyDxIQrxkDKRt7pYi3rr82ldi4+qapAiYIy95sqiNFFQinPQz+f7x k8e8Xl3n3+7vyNDb2idXXybYLjODZg+ypuA5XS3tUz/KzUQB4tTGCSWA/a+/xvJzs2oSmGlbbT11N 4qew6J39cADntK4LwT2yks2HAdHvg6/uVCpIHlpolISR63324q39kzVj4Ky2Bj//JXzL/Wkyv7F81 HcMaGpTJny4HrSfwtoJ8MQHyK7p0raOLLEHqQ0jrflxsttpotjnQ1VqWk/HI6kKFiENfW9KO/DGof B0lQw8iw==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tpveT-00000006BnV-2fg4; Wed, 05 Mar 2025 20:47:37 +0000 From: "Matthew Wilcox (Oracle)" To: Christian Brauner Cc: "Matthew Wilcox (Oracle)" , devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, Mike Marshall Subject: [PATCH v2 7/9] orangefs: Unify error & success paths in orangefs_writepages_work() Date: Wed, 5 Mar 2025 20:47:31 +0000 Message-ID: <20250305204734.1475264-8-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305204734.1475264-1-willy@infradead.org> References: <20250305204734.1475264-1-willy@infradead.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Both arms of this conditional now have the same loop, so sink it out of the conditional. Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Mike Marshall --- fs/orangefs/inode.c | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index 879d96c11b1c..927c2829976c 100644 --- a/fs/orangefs/inode.c +++ b/fs/orangefs/inode.c @@ -107,33 +107,23 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow, wr.gid = ow->gid; ret = wait_for_direct_io(ORANGEFS_IO_WRITE, inode, &off, &iter, ow->len, 0, &wr, NULL, NULL); - if (ret < 0) { + if (ret < 0) mapping_set_error(ow->mapping, ret); - for (i = 0; i < ow->npages; i++) { - if (PagePrivate(ow->pages[i])) { - wrp = (struct orangefs_write_range *) - page_private(ow->pages[i]); - ClearPagePrivate(ow->pages[i]); - put_page(ow->pages[i]); - kfree(wrp); - } - end_page_writeback(ow->pages[i]); - unlock_page(ow->pages[i]); - } - } else { + else ret = 0; - for (i = 0; i < ow->npages; i++) { - if (PagePrivate(ow->pages[i])) { - wrp = (struct orangefs_write_range *) - page_private(ow->pages[i]); - ClearPagePrivate(ow->pages[i]); - put_page(ow->pages[i]); - kfree(wrp); - } - end_page_writeback(ow->pages[i]); - unlock_page(ow->pages[i]); + + for (i = 0; i < ow->npages; i++) { + if (PagePrivate(ow->pages[i])) { + wrp = (struct orangefs_write_range *) + page_private(ow->pages[i]); + ClearPagePrivate(ow->pages[i]); + put_page(ow->pages[i]); + kfree(wrp); } + end_page_writeback(ow->pages[i]); + unlock_page(ow->pages[i]); } + return ret; } From patchwork Wed Mar 5 20:47:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14003351 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 90339254AEC for ; Wed, 5 Mar 2025 20:47:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; cv=none; b=FppNPieLNsqc2wz/EQ+9E8sMAGEmq5zbB+8bqhOD3+BSBEAjpN7w9sB7Mhhn/f0cAdYbvH038p/y4lofM8pKMzvuX73ZDQjb15FEg8F9550ebkJFMKP2Lb2ixe2JAVh6H4F+rQyHRF29ehqrz1Rjrdgg9noJYeiOShErHkC/zew= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; c=relaxed/simple; bh=6kPFoFyf0spY1u41KXs2T92nBthGRXeV2CjZ5yQm6oY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PwtwXcQiOFfzX3AgPek43ZyXDxNMA0j2wSbuQzHwOzVZZSQ5xBN1b8D0jOL1CMcOdbUZ04VLu9bNYmbhgVAnH4AZbAFJgne2aKuv3rdum1qT9Lp9tjkHaeIcFhdbUBG1fpWlyQRmOWahsqEhJBObRyIG/2uAna1HPx35wguwj4I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=foizu0cY; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="foizu0cY" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=G+WShbGla95vGcpMugxqFQuk//QJP5tZtY68vSWvuKE=; b=foizu0cYYkQ5B6LCj1uetqNGLQ pcYdXbdJVpyGHWz5lq7/v8XYBJaB8Nn8bB7GF5yoepnKIYUbG4roVsPsTXq6RL6V+N/94W4qRsHyd nGBI6hylAVWwhQpADR49vmG8+aJQfBftB55unsBUXhNmoPIWTpPqCf/5/D/KR0PGvwLUA+6+VS2CN KNDT94gPDOy/7S5WiVeTE9uOh4OePxjHHxs8WG9X03C0gEiFPVaHscs+56aQCIet20fnC/qf8/3m4 71CFbca5pkX9jHy67w+rSV2XdJY28475RyTXEK5+SWL9pZnOxtjwDztC6JzMxCvAenoeextZwjzU+ b+mZ4ruA==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tpveT-00000006Bnd-3C2c; Wed, 05 Mar 2025 20:47:37 +0000 From: "Matthew Wilcox (Oracle)" To: Christian Brauner Cc: "Matthew Wilcox (Oracle)" , devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, Mike Marshall Subject: [PATCH v2 8/9] orangefs: Simplify bvec setup in orangefs_writepages_work() Date: Wed, 5 Mar 2025 20:47:32 +0000 Message-ID: <20250305204734.1475264-9-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305204734.1475264-1-willy@infradead.org> References: <20250305204734.1475264-1-willy@infradead.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This produces a bvec which is slightly different as the last page is added in its entirety rather than only the portion which is being written back. However we don't use this information anywhere; the iovec has its own length parameter. Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Mike Marshall --- fs/orangefs/inode.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index 927c2829976c..7b5272931e3b 100644 --- a/fs/orangefs/inode.c +++ b/fs/orangefs/inode.c @@ -83,18 +83,18 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow, struct orangefs_write_range *wrp, wr; struct iov_iter iter; ssize_t ret; + size_t start; loff_t len, off; int i; len = i_size_read(inode); + start = offset_in_page(ow->off); for (i = 0; i < ow->npages; i++) { set_page_writeback(ow->pages[i]); - bvec_set_page(&ow->bv[i], ow->pages[i], - min(page_offset(ow->pages[i]) + PAGE_SIZE, - ow->off + ow->len) - - max(ow->off, page_offset(ow->pages[i])), - i == 0 ? ow->off - page_offset(ow->pages[i]) : 0); + bvec_set_page(&ow->bv[i], ow->pages[i], PAGE_SIZE - start, + start); + start = 0; } iov_iter_bvec(&iter, ITER_SOURCE, ow->bv, ow->npages, ow->len); From patchwork Wed Mar 5 20:47:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14003352 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 974DB254B08 for ; Wed, 5 Mar 2025 20:47:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; cv=none; b=eZhDRvbvqUdDysNtZ4znsKDx2jjKpptgtZWErdRZT7c2M+KZ6LDHcxk6s/FyRJVEo86F+pGMaLUMVJCrGVA5H9XO9vdsKFr82mymYEs0I0PFSRD2IAin+GTkkNIkTUcMHKc+CdvqmNxvhoql/vdpy65fsmjGDqPWEMrJdhnl7G0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741207661; c=relaxed/simple; bh=ll5oxveZrMva2kz+1PiK2eJnVmd2XRWg56X+X3pf8Xw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WbAyemEC6e6oMyAHw0OIN5QmSkRQiUoiYjcWLzPadYhJ3AkeamHnuUmoxbrcjuejyB/R0dO3SrzL2Aa5bYyLjeNEwhWwDStf7t6D9/u414M1l94VVdCHQuMnwHeu+pETnJDB5u+6nYeXscC500GTSAa8u4zgnrb01idKyk2OjzQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=IZVHKWev; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="IZVHKWev" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=tXo+ZuPAyts6XBMuIz5tH6es//GYM0Tf/xZ9OJ1H5bg=; b=IZVHKWevsCGdlRe4oAFMK0V4F9 u+S93gzLSYL+uXYm2OzaUiOC2dAgRmhmKpAsnf1uZiZakxUhU09/aodwaaBgAzeBx75xTwQEEVyLF Dk8hrSNoUrZVLy6g6L1dvsm4IO6yiwdZZqrQof8178w6hGx/Ta3G49e/7YgDgE18uDR/ISIyI77y2 qWsoRon3YgD0eFrrld+iCNGvhdutiFrazOJdngKuJzJAIypahV1JU+R3Un0u4ooImGlhFlwugFb+R PIQYcRWwfK1soAFppHINw0VcHvkUFebPs3pumVy4WawmoaAX7EXa3uBrhcPUPw/0JyVzsZnQDsH2W wiKgcG1g==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tpveU-00000006Bnn-0KcC; Wed, 05 Mar 2025 20:47:38 +0000 From: "Matthew Wilcox (Oracle)" To: Christian Brauner Cc: "Matthew Wilcox (Oracle)" , devel@lists.orangefs.org, linux-fsdevel@vger.kernel.org, Mike Marshall Subject: [PATCH v2 9/9] orangefs: Convert orangefs_writepages to contain an array of folios Date: Wed, 5 Mar 2025 20:47:33 +0000 Message-ID: <20250305204734.1475264-10-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305204734.1475264-1-willy@infradead.org> References: <20250305204734.1475264-1-willy@infradead.org> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The pages being passed in are always folios (since they come from the page cache). This eliminates several hidden calls to compound_head(), and uses of legacy APIs. Signed-off-by: Matthew Wilcox (Oracle) Tested-by: Mike Marshall --- fs/orangefs/inode.c | 57 +++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index 7b5272931e3b..5ac743c6bc2e 100644 --- a/fs/orangefs/inode.c +++ b/fs/orangefs/inode.c @@ -70,9 +70,9 @@ struct orangefs_writepages { kuid_t uid; kgid_t gid; int maxpages; - int npages; + int nfolios; struct address_space *mapping; - struct page **pages; + struct folio **folios; struct bio_vec *bv; }; @@ -89,14 +89,14 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow, len = i_size_read(inode); - start = offset_in_page(ow->off); - for (i = 0; i < ow->npages; i++) { - set_page_writeback(ow->pages[i]); - bvec_set_page(&ow->bv[i], ow->pages[i], PAGE_SIZE - start, - start); + start = offset_in_folio(ow->folios[0], ow->off); + for (i = 0; i < ow->nfolios; i++) { + folio_start_writeback(ow->folios[i]); + bvec_set_folio(&ow->bv[i], ow->folios[i], + folio_size(ow->folios[i]) - start, start); start = 0; } - iov_iter_bvec(&iter, ITER_SOURCE, ow->bv, ow->npages, ow->len); + iov_iter_bvec(&iter, ITER_SOURCE, ow->bv, ow->nfolios, ow->len); WARN_ON(ow->off >= len); if (ow->off + ow->len > len) @@ -112,16 +112,11 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow, else ret = 0; - for (i = 0; i < ow->npages; i++) { - if (PagePrivate(ow->pages[i])) { - wrp = (struct orangefs_write_range *) - page_private(ow->pages[i]); - ClearPagePrivate(ow->pages[i]); - put_page(ow->pages[i]); - kfree(wrp); - } - end_page_writeback(ow->pages[i]); - unlock_page(ow->pages[i]); + for (i = 0; i < ow->nfolios; i++) { + wrp = folio_detach_private(ow->folios[i]); + kfree(wrp); + folio_end_writeback(ow->folios[i]); + folio_unlock(ow->folios[i]); } return ret; @@ -142,41 +137,41 @@ static int orangefs_writepages_callback(struct folio *folio, } ret = -1; - if (ow->npages == 0) { + if (ow->nfolios == 0) { ow->off = wr->pos; ow->len = wr->len; ow->uid = wr->uid; ow->gid = wr->gid; - ow->pages[ow->npages++] = &folio->page; + ow->folios[ow->nfolios++] = folio; ret = 0; goto done; } if (!uid_eq(ow->uid, wr->uid) || !gid_eq(ow->gid, wr->gid)) { orangefs_writepages_work(ow, wbc); - ow->npages = 0; + ow->nfolios = 0; ret = -1; goto done; } if (ow->off + ow->len == wr->pos) { ow->len += wr->len; - ow->pages[ow->npages++] = &folio->page; + ow->folios[ow->nfolios++] = folio; ret = 0; goto done; } done: if (ret == -1) { - if (ow->npages) { + if (ow->nfolios) { orangefs_writepages_work(ow, wbc); - ow->npages = 0; + ow->nfolios = 0; } ret = orangefs_writepage_locked(folio, wbc); mapping_set_error(folio->mapping, ret); folio_unlock(folio); folio_end_writeback(folio); } else { - if (ow->npages == ow->maxpages) { + if (ow->nfolios == ow->maxpages) { orangefs_writepages_work(ow, wbc); - ow->npages = 0; + ow->nfolios = 0; } } return ret; @@ -194,14 +189,14 @@ static int orangefs_writepages(struct address_space *mapping, if (!ow) return -ENOMEM; ow->maxpages = orangefs_bufmap_size_query()/PAGE_SIZE; - ow->pages = kcalloc(ow->maxpages, sizeof(struct page *), GFP_KERNEL); - if (!ow->pages) { + ow->folios = kcalloc(ow->maxpages, sizeof(struct folio *), GFP_KERNEL); + if (!ow->folios) { kfree(ow); return -ENOMEM; } ow->bv = kcalloc(ow->maxpages, sizeof(struct bio_vec), GFP_KERNEL); if (!ow->bv) { - kfree(ow->pages); + kfree(ow->folios); kfree(ow); return -ENOMEM; } @@ -209,10 +204,10 @@ static int orangefs_writepages(struct address_space *mapping, blk_start_plug(&plug); while ((folio = writeback_iter(mapping, wbc, folio, &error))) error = orangefs_writepages_callback(folio, wbc, ow); - if (ow->npages) + if (ow->nfolios) error = orangefs_writepages_work(ow, wbc); blk_finish_plug(&plug); - kfree(ow->pages); + kfree(ow->folios); kfree(ow->bv); kfree(ow); return error;