All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Wilcox <willy@infradead.org>
To: "Pankaj Raghav (Samsung)" <kernel@pankajraghav.com>
Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org, david@fromorbit.com,
	chandan.babu@oracle.com, akpm@linux-foundation.org,
	mcgrof@kernel.org, ziy@nvidia.com, hare@suse.de,
	djwong@kernel.org, gost.dev@samsung.com, linux-mm@kvack.org,
	Pankaj Raghav <p.raghav@samsung.com>
Subject: Re: [PATCH 04/13] filemap: use mapping_min_order while allocating folios
Date: Mon, 26 Feb 2024 14:47:33 +0000	[thread overview]
Message-ID: <ZdykhSuPbe6knu89@casper.infradead.org> (raw)
In-Reply-To: <20240226094936.2677493-5-kernel@pankajraghav.com>

On Mon, Feb 26, 2024 at 10:49:27AM +0100, Pankaj Raghav (Samsung) wrote:
> Add some additional VM_BUG_ON() in page_cache_delete[batch] and
> __filemap_add_folio to catch errors where we delete or add folios that
> has order less than min_order.

I don't understand why we need these checks in the deletion path.  The
add path, yes, absolutely.  But the delete path?

> @@ -896,6 +900,8 @@ noinline int __filemap_add_folio(struct address_space *mapping,
>  			}
>  		}
>  
> +		VM_BUG_ON_FOLIO(folio_order(folio) < mapping_min_folio_order(mapping),
> +				folio);

But I don't understand why you put it here, while we're holding the
xa_lock.  That seems designed to cause maximum disruption.  Why not put
it at the beginning of the function with all the other VM_BUG_ON_FOLIO?

> @@ -1847,6 +1853,9 @@ struct folio *__filemap_get_folio(struct address_space *mapping, pgoff_t index,
>  		fgf_t fgp_flags, gfp_t gfp)
>  {
>  	struct folio *folio;
> +	unsigned int min_order = mapping_min_folio_order(mapping);
> +
> +	index = mapping_align_start_index(mapping, index);

I would not do this here.

>  repeat:
>  	folio = filemap_get_entry(mapping, index);
> @@ -1886,7 +1895,7 @@ struct folio *__filemap_get_folio(struct address_space *mapping, pgoff_t index,
>  		folio_wait_stable(folio);
>  no_page:
>  	if (!folio && (fgp_flags & FGP_CREAT)) {
> -		unsigned order = FGF_GET_ORDER(fgp_flags);
> +		unsigned int order = max(min_order, FGF_GET_ORDER(fgp_flags));
>  		int err;

Put it here instead.

>  		if ((fgp_flags & FGP_WRITE) && mapping_can_writeback(mapping))
> @@ -1912,8 +1921,13 @@ struct folio *__filemap_get_folio(struct address_space *mapping, pgoff_t index,
>  			gfp_t alloc_gfp = gfp;
>  
>  			err = -ENOMEM;
> +			if (order < min_order)
> +				order = min_order;
>  			if (order > 0)
>  				alloc_gfp |= __GFP_NORETRY | __GFP_NOWARN;
> +
> +			VM_BUG_ON(index & ((1UL << order) - 1));

Then you don't need this BUG_ON because it's obvious you just did it.
And the one in filemap_add_folio() would catch it anyway.


  reply	other threads:[~2024-02-26 14:47 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-26  9:49 [PATCH 00/13] enable bs > ps in XFS Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 01/13] mm: Support order-1 folios in the page cache Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 02/13] fs: Allow fine-grained control of folio sizes Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 03/13] filemap: align the index to mapping_min_order in the page cache Pankaj Raghav (Samsung)
2024-02-26 14:40   ` Matthew Wilcox
2024-02-27 10:06     ` Pankaj Raghav (Samsung)
2024-02-27 16:22       ` Kent Overstreet
2024-02-27 16:36         ` Pankaj Raghav (Samsung)
2024-02-27 16:40           ` Kent Overstreet
2024-02-27 16:55             ` Pankaj Raghav (Samsung)
2024-02-27 17:02               ` Kent Overstreet
2024-02-27 17:09                 ` Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 04/13] filemap: use mapping_min_order while allocating folios Pankaj Raghav (Samsung)
2024-02-26 14:47   ` Matthew Wilcox [this message]
2024-02-27 12:09     ` Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 05/13] readahead: set file_ra_state->ra_pages to be at least mapping_min_order Pankaj Raghav (Samsung)
2024-02-26 14:49   ` Matthew Wilcox
2024-02-27 12:42     ` Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 06/13] readahead: align index to mapping_min_order in ondemand_ra and force_ra Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 07/13] readahead: rework loop in page_cache_ra_unbounded() Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 08/13] readahead: allocate folios with mapping_min_order in ra_(unbounded|order) Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 09/13] mm: do not split a folio if it has minimum folio order requirement Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 10/13] iomap: fix iomap_dio_zero() for fs bs > system page size Pankaj Raghav (Samsung)
2024-02-26 17:58   ` Matthew Wilcox
2024-02-27  9:33     ` Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 11/13] xfs: expose block size in stat Pankaj Raghav (Samsung)
2024-02-26 12:44   ` Dave Chinner
2024-02-27  8:53     ` Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 12/13] xfs: make the calculation generic in xfs_sb_validate_fsb_count() Pankaj Raghav (Samsung)
2024-02-26 12:47   ` Dave Chinner
2024-02-26 13:21   ` Matthew Wilcox
2024-02-27  8:44     ` Pankaj Raghav (Samsung)
2024-02-26  9:49 ` [PATCH 13/13] xfs: enable block size larger than page size support Pankaj Raghav (Samsung)
2024-02-26 13:26   ` Matthew Wilcox
2024-02-26 21:18     ` Dave Chinner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZdykhSuPbe6knu89@casper.infradead.org \
    --to=willy@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=chandan.babu@oracle.com \
    --cc=david@fromorbit.com \
    --cc=djwong@kernel.org \
    --cc=gost.dev@samsung.com \
    --cc=hare@suse.de \
    --cc=kernel@pankajraghav.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=p.raghav@samsung.com \
    --cc=ziy@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.