From mboxrd@z Thu Jan 1 00:00:00 1970 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4D6BEC77B75 for ; Tue, 18 Apr 2023 00:51:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229741AbjDRAvU (ORCPT ); Mon, 17 Apr 2023 20:51:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229635AbjDRAvS (ORCPT ); Mon, 17 Apr 2023 20:51:18 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CE480170B for ; Mon, 17 Apr 2023 17:51:16 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 6B06062B95 for ; Tue, 18 Apr 2023 00:51:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C400BC433D2; Tue, 18 Apr 2023 00:51:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1681779075; bh=JJaB6mPWxhyYr/e4y+66HQ1UwImMUD/ts9ha4lemhrw=; h=Date:To:From:Subject:From; b=ZWylxpuOx/HYitVw6y3bGdXETseBfHoRSFMvDZ8OXHLcB8KAIfjilQrvW1TRuOXNG nBXNhf51Zz0kCRWETOzH0vY7dzoK/ky+VpEcvynV9pkjP8tVx0HzZoUqx+HI6IsRn3 hwEUyTujpI1pa32mpa7C8eYiX8A7xj+JFoRaxxd8= Date: Mon, 17 Apr 2023 17:51:15 -0700 To: mm-commits@vger.kernel.org, willy@infradead.org, viro@zeniv.linux.org.uk, mcgrof@kernel.org, hare@suse.de, brauner@kernel.org, p.raghav@samsung.com, akpm@linux-foundation.org From: Andrew Morton Subject: + fs-buffer-add-folio_create_empty_buffers-helper.patch added to mm-unstable branch Message-Id: <20230418005115.C400BC433D2@smtp.kernel.org> Precedence: bulk Reply-To: linux-kernel@vger.kernel.org List-ID: X-Mailing-List: mm-commits@vger.kernel.org The patch titled Subject: fs/buffer: add folio_create_empty_buffers helper has been added to the -mm mm-unstable branch. Its filename is fs-buffer-add-folio_create_empty_buffers-helper.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/fs-buffer-add-folio_create_empty_buffers-helper.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Pankaj Raghav Subject: fs/buffer: add folio_create_empty_buffers helper Date: Mon, 17 Apr 2023 14:36:17 +0200 Folio version of create_empty_buffers(). This is required to convert create_page_buffers() to folio_create_buffers() later in the series. It removes several calls to compound_head() as it works directly on folio compared to create_empty_buffers(). Hence, create_empty_buffers() has been modified to call folio_create_empty_buffers(). Link: https://lkml.kernel.org/r/20230417123618.22094-4-p.raghav@samsung.com Signed-off-by: Pankaj Raghav Reviewed-by: Matthew Wilcox (Oracle) Reviewed-by: Hannes Reinecke Cc: Alexander Viro Cc: Christian Brauner Cc: Luis Chamberlain Signed-off-by: Andrew Morton --- fs/buffer.c | 28 +++++++++++++++++----------- include/linux/buffer_head.h | 2 ++ 2 files changed, 19 insertions(+), 11 deletions(-) --- a/fs/buffer.c~fs-buffer-add-folio_create_empty_buffers-helper +++ a/fs/buffer.c @@ -1594,18 +1594,17 @@ out: } EXPORT_SYMBOL(block_invalidate_folio); - /* * We attach and possibly dirty the buffers atomically wrt * block_dirty_folio() via private_lock. try_to_free_buffers - * is already excluded via the page lock. + * is already excluded via the folio lock. */ -void create_empty_buffers(struct page *page, - unsigned long blocksize, unsigned long b_state) +void folio_create_empty_buffers(struct folio *folio, unsigned long blocksize, + unsigned long b_state) { struct buffer_head *bh, *head, *tail; - head = alloc_page_buffers(page, blocksize, true); + head = folio_alloc_buffers(folio, blocksize, true); bh = head; do { bh->b_state |= b_state; @@ -1614,19 +1613,26 @@ void create_empty_buffers(struct page *p } while (bh); tail->b_this_page = head; - spin_lock(&page->mapping->private_lock); - if (PageUptodate(page) || PageDirty(page)) { + spin_lock(&folio->mapping->private_lock); + if (folio_test_uptodate(folio) || folio_test_dirty(folio)) { bh = head; do { - if (PageDirty(page)) + if (folio_test_dirty(folio)) set_buffer_dirty(bh); - if (PageUptodate(page)) + if (folio_test_uptodate(folio)) set_buffer_uptodate(bh); bh = bh->b_this_page; } while (bh != head); } - attach_page_private(page, head); - spin_unlock(&page->mapping->private_lock); + folio_attach_private(folio, head); + spin_unlock(&folio->mapping->private_lock); +} +EXPORT_SYMBOL(folio_create_empty_buffers); + +void create_empty_buffers(struct page *page, + unsigned long blocksize, unsigned long b_state) +{ + folio_create_empty_buffers(page_folio(page), blocksize, b_state); } EXPORT_SYMBOL(create_empty_buffers); --- a/include/linux/buffer_head.h~fs-buffer-add-folio_create_empty_buffers-helper +++ a/include/linux/buffer_head.h @@ -205,6 +205,8 @@ struct buffer_head *alloc_page_buffers(s bool retry); void create_empty_buffers(struct page *, unsigned long, unsigned long b_state); +void folio_create_empty_buffers(struct folio *folio, unsigned long blocksize, + unsigned long b_state); void end_buffer_read_sync(struct buffer_head *bh, int uptodate); void end_buffer_write_sync(struct buffer_head *bh, int uptodate); void end_buffer_async_write(struct buffer_head *bh, int uptodate); _ Patches currently in -mm which might be from p.raghav@samsung.com are orangefs-use-folios-in-orangefs_readahead.patch mpage-split-submit_bio-and-bio-end_io-handler-for-reads-and-writes.patch mpage-use-folios-in-bio-end_io-handler.patch fs-buffer-add-folio_set_bh-helper.patch buffer-add-folio_alloc_buffers-helper.patch fs-buffer-add-folio_create_empty_buffers-helper.patch fs-buffer-convert-create_page_buffers-to-folio_create_buffers.patch