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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37ACBC61DB3 for ; Thu, 12 Jan 2023 17:16:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8B85D8E0002; Thu, 12 Jan 2023 12:16:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8685E8E0001; Thu, 12 Jan 2023 12:16:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 730058E0002; Thu, 12 Jan 2023 12:16:16 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 6480C8E0001 for ; Thu, 12 Jan 2023 12:16:16 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 2F7D61C5E6F for ; Thu, 12 Jan 2023 17:16:16 +0000 (UTC) X-FDA: 80346800352.26.B274EE2 Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by imf30.hostedemail.com (Postfix) with ESMTP id 216BC80022 for ; Thu, 12 Jan 2023 17:16:12 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=NC4oLmKy; spf=pass (imf30.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1673543773; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ueu49HbYyw3uKaxLdkdNJFDLhnVwdUbocDy8yp3uK6U=; b=Z+HoAvLSAR+aYaxLOYfnYPUmcZeRcflVFudn11485hjJYiWBvAjPR3wQP11IgyU7hvyj8o DUJ3bI0r2pmgfdoDz3exvf6iJ38OAg1+ulqKiCMb0WLL3qNYR0Leg5UqzyYkdYX42F+fW1 NVPcpqKOJY2NWvBd0y0VH7e4Vn5WQug= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=NC4oLmKy; spf=pass (imf30.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673543773; a=rsa-sha256; cv=none; b=pz37a+FOv/RhYvcS8CZrQM97nUJon7j6D6xAbqhGujK6d2kYsSlK7uQt1u6uCavvZko+YX wWXzrUyX3BgG4JPI4EbBmnyE1DU60vqJNzduWIJeOxXylozGYqcDZVDEsKysHIVgfFoczS 5gFSeZ3mHz7BAb8tuQuYpWUxdqu/XCc= Received: by mail-yb1-f178.google.com with SMTP id 20so414725ybl.0 for ; Thu, 12 Jan 2023 09:16:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ueu49HbYyw3uKaxLdkdNJFDLhnVwdUbocDy8yp3uK6U=; b=NC4oLmKyiU3uGHOrCu0neAT7WGQm+evGATS22zDmNdb+/2NhuIG0f1cXd+Oo71x2x/ d9fjT4jYSUOUBJWL+/XfoQRQcJircib0hCIQNig7qcjc8w6s9NDKCE8BxNIxJ/QIPawr cGDcDEgYwNMISqTlSdoe2gi9E7vXeiwnnDNv9jj5eXpGknHXsQrJmwtldQVLWCvhl3ZG lIyceotTUmoEX6Dvf7U4pSHAwxk6VUESS1YrPAshFBx/sv/5P+3kMTg7lyJXQYkVLv/j nhYbgnk5O/zNb7Ew31BfnKA81FkIZ4oEZPonWMG3EVzYgOtn38OFepH0Ci/+hw4YNxsB DwLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ueu49HbYyw3uKaxLdkdNJFDLhnVwdUbocDy8yp3uK6U=; b=YG77qORhIAclx4hDf7Q7DA6x4Q+U3Pi28rIvZCp+ex5iwywLtyUyu6FvMdyfgtWeLp bfDGOVlZea5h6hKwftYqAVppKr6SfL2pArrHU0Rf4ietAQI/9f6fyLwSmQm359VuLk/L Qvrg3MPE/hNc4Df8bwq7M9k4xKXmXEb6DJbcc0qhmlXGulwnn/Ah9u2x2q6aNK0yAsYQ bLfPkkwXlhLXgZMg1d5OTmWPdL5fh+n0s2limA9VvnvkRpicLaK5LV+BJ4YxsEXEvS4D QwouYqW2Hc4zRE4+8yBGooG2rUISQdb6887u51UM7vtGKyqVt8HX5EOwjUj6KPXEPniI cwyg== X-Gm-Message-State: AFqh2kr/iYec+/wGs4IvLePASFpR4nkdIkusgk9+TJ+UWa2gjhoxh/pV hDWCVuiKOPdvRQK6vMg+ALyEtYfm4YEnNAXYGS0= X-Google-Smtp-Source: AMrXdXt4S29867pWpNEcWUZVtr/uqb3UM4fpVgRhzCkqlx5R6lghcyEfD/1N+9wnCtzwrdSh12ePIMINBFYAmF+ldAs= X-Received: by 2002:a25:abea:0:b0:762:b86:e82e with SMTP id v97-20020a25abea000000b007620b86e82emr8539372ybi.407.1673543771906; Thu, 12 Jan 2023 09:16:11 -0800 (PST) MIME-Version: 1.0 References: <20230104211448.4804-1-vishal.moola@gmail.com> <20230104211448.4804-11-vishal.moola@gmail.com> In-Reply-To: <20230104211448.4804-11-vishal.moola@gmail.com> From: Vishal Moola Date: Thu, 12 Jan 2023 09:16:00 -0800 Message-ID: Subject: Re: [PATCH v5 10/23] ext4: Convert mpage_prepare_extent_to_map() to use filemap_get_folios_tag() To: linux-fsdevel@vger.kernel.org, tytso@mit.edu Cc: linux-afs@lists.infradead.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, ceph-devel@vger.kernel.org, linux-cifs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, linux-nilfs@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 216BC80022 X-Stat-Signature: rgyjxcg8f36z91rco1jgbj96dn49ksqg X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1673543772-303237 X-HE-Meta: U2FsdGVkX19apnpZ+QSw4cMGVA5o1Dy+OPHy2cwd+KuMRUIq2GtZ+TU1YEz7SQdeOR6Z/M0Bwigr0Y5ZEuk/Yg1IhtPz4m0Lgqs+74kY8bHC7s1rD/w8CLwiSiIxBeKeDXE57yx1nKoikmOsEJdHaegEDMg2IHsNlAwiCYb2y8hQ01LZmo7zjpxqXPXkC7OGWdgcZLYC5KftAgJhSTYwHe5ZsOQXrEsb3CFa4O0//udcgEmoHOSM8naTyyGCvc7mV2k26RU0DJqcY5tKR0e4DJUCMJ/aTXrIry+VEMsja1AZFYCCM2AaeYBz8w2lwZMlZm+3YDk/yjfVxAj8qXUlbmXIUxPSOlAkv0yOpdsptIXG22qiIXm7o6dBwkKxrVSL1hC6ryYl0N1rAxISdQp8ISynG2MskJomfwEEQZILlHSRkMWIbt+6GYaZEMJN4TPVzLqyWFn7H1xfCX9XZulbojYtbgQu1YTmd/Ar2LPpcuPrRWtu89Y917mFb/v4oqQyRQv7+8z3NwvLBpVHJufHMt/O+kR63/54xqoWTR2C2VSrJFdMGKpmj0TxNU9ORwtsZnG3Mt6Sq+sa8p8YyOYQauJpTBUcdP065f0dsRObpEswqO9wmM8+WdBIXf4Z0xsVHtSPRLholZKUoRASoDgHG8SPn8b+ugqT9kG4SDil48Q9OAfMd6UNXm8Jo2WiZIENYoPfzWCJMtNClJYfikVs8jtQDWjab218Q0NkcaXIPTp7zbr2cJggp5JdZCzD5UgvVTsbzwOcUxYkspQJIsGJdyeE8hj2YxWsalHbw60pUTuF+wv+eVsyIljDmU6NeqOQ2sGqbu3oqSyvVYPC/VihqkAC/Xog46DeM0FaXGfNdMg60++Q8SBNQq+DanpGc7Ul5s6emNUp0d8eLmzmNRFtu+gGwsoFfGztTMqPx6x8F4OH3sCOa+mpFPKMObXj21cKpRLAgTb/GCsPBgpzNUJ zjPNjVNT joqrDOUehWgzAoUm8lzPrqIGZQw8xKbyO6w7kb3BrvV9uW99MGSD5rQ8lSPnewi6V1+nQhF4K9nj84wJs++piM8b1fA34XZRbOSR680WSG7RB5xKzlLjP/JFLn36RtfqTIhNS 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: On Wed, Jan 4, 2023 at 1:15 PM Vishal Moola (Oracle) wrote: > > Converted the function to use folios throughout. This is in preparation > for the removal of find_get_pages_range_tag(). Now supports large > folios. This change removes 11 calls to compound_head(). > > Signed-off-by: Vishal Moola (Oracle) > --- > fs/ext4/inode.c | 65 ++++++++++++++++++++++++------------------------- > 1 file changed, 32 insertions(+), 33 deletions(-) > > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > index 9d9f414f99fe..fb6cd994e59a 100644 > --- a/fs/ext4/inode.c > +++ b/fs/ext4/inode.c > @@ -2595,8 +2595,8 @@ static bool ext4_page_nomap_can_writeout(struct page *page) > static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd) > { > struct address_space *mapping = mpd->inode->i_mapping; > - struct pagevec pvec; > - unsigned int nr_pages; > + struct folio_batch fbatch; > + unsigned int nr_folios; > long left = mpd->wbc->nr_to_write; > pgoff_t index = mpd->first_page; > pgoff_t end = mpd->last_page; > @@ -2610,18 +2610,17 @@ static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd) > tag = PAGECACHE_TAG_TOWRITE; > else > tag = PAGECACHE_TAG_DIRTY; > - > - pagevec_init(&pvec); > + folio_batch_init(&fbatch); > mpd->map.m_len = 0; > mpd->next_page = index; > while (index <= end) { > - nr_pages = pagevec_lookup_range_tag(&pvec, mapping, &index, end, > - tag); > - if (nr_pages == 0) > + nr_folios = filemap_get_folios_tag(mapping, &index, end, > + tag, &fbatch); > + if (nr_folios == 0) > break; > > - for (i = 0; i < nr_pages; i++) { > - struct page *page = pvec.pages[i]; > + for (i = 0; i < nr_folios; i++) { > + struct folio *folio = fbatch.folios[i]; > > /* > * Accumulated enough dirty pages? This doesn't apply > @@ -2635,10 +2634,10 @@ static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd) > goto out; > > /* If we can't merge this page, we are done. */ > - if (mpd->map.m_len > 0 && mpd->next_page != page->index) > + if (mpd->map.m_len > 0 && mpd->next_page != folio->index) > goto out; > > - lock_page(page); > + folio_lock(folio); > /* > * If the page is no longer dirty, or its mapping no > * longer corresponds to inode we are writing (which > @@ -2646,16 +2645,16 @@ static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd) > * page is already under writeback and we are not doing > * a data integrity writeback, skip the page > */ > - if (!PageDirty(page) || > - (PageWriteback(page) && > + if (!folio_test_dirty(folio) || > + (folio_test_writeback(folio) && > (mpd->wbc->sync_mode == WB_SYNC_NONE)) || > - unlikely(page->mapping != mapping)) { > - unlock_page(page); > + unlikely(folio->mapping != mapping)) { > + folio_unlock(folio); > continue; > } > > - wait_on_page_writeback(page); > - BUG_ON(PageWriteback(page)); > + folio_wait_writeback(folio); > + BUG_ON(folio_test_writeback(folio)); > > /* > * Should never happen but for buggy code in > @@ -2666,49 +2665,49 @@ static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd) > * > * [1] https://lore.kernel.org/linux-mm/20180103100430.GE4911@quack2.suse.cz > */ > - if (!page_has_buffers(page)) { > - ext4_warning_inode(mpd->inode, "page %lu does not have buffers attached", page->index); > - ClearPageDirty(page); > - unlock_page(page); > + if (!folio_buffers(folio)) { > + ext4_warning_inode(mpd->inode, "page %lu does not have buffers attached", folio->index); > + folio_clear_dirty(folio); > + folio_unlock(folio); > continue; > } > > if (mpd->map.m_len == 0) > - mpd->first_page = page->index; > - mpd->next_page = page->index + 1; > + mpd->first_page = folio->index; > + mpd->next_page = folio->index + folio_nr_pages(folio); > /* > * Writeout for transaction commit where we cannot > * modify metadata is simple. Just submit the page. > */ > if (!mpd->can_map) { > - if (ext4_page_nomap_can_writeout(page)) { > - err = mpage_submit_page(mpd, page); > + if (ext4_page_nomap_can_writeout(&folio->page)) { > + err = mpage_submit_page(mpd, &folio->page); > if (err < 0) > goto out; > } else { > - unlock_page(page); > - mpd->first_page++; > + folio_unlock(folio); > + mpd->first_page += folio_nr_pages(folio); > } > } else { > /* Add all dirty buffers to mpd */ > - lblk = ((ext4_lblk_t)page->index) << > + lblk = ((ext4_lblk_t)folio->index) << > (PAGE_SHIFT - blkbits); > - head = page_buffers(page); > + head = folio_buffers(folio); > err = mpage_process_page_bufs(mpd, head, head, > - lblk); > + lblk); > if (err <= 0) > goto out; > err = 0; > } > - left--; > + left -= folio_nr_pages(folio); > } > - pagevec_release(&pvec); > + folio_batch_release(&fbatch); > cond_resched(); > } > mpd->scanned_until_end = 1; > return 0; > out: > - pagevec_release(&pvec); > + folio_batch_release(&fbatch); > return err; > } > > -- > 2.38.1 > Could someone review this ext4 patch, please? This is one of the 2 remaining patches that need to be looked at in the series.