[prev in list] [next in list] [prev in thread] [next in thread]
List: drbd-dev
Subject: Re: [Drbd-dev] [dm-devel] [PATCH 01/19] fs: remove mpage_alloc
From: Guenter Roeck <linux () roeck-us ! net>
Date: 2022-03-23 15:43:19
Message-ID: 20220323154319.GA2268247 () roeck-us ! net
[Download RAW message or body]
On Wed, Mar 23, 2022 at 07:42:48AM +0100, Christoph Hellwig wrote:
> On Wed, Mar 23, 2022 at 06:38:22AM +0900, Ryusuke Konishi wrote:
> > This looks because the mask of GFP_KERNEL is removed along with
> > the removal of mpage_alloc().
> >
>
> > The default value of the gfp flag is set to GFP_HIGHUSER_MOVABLE by
> > inode_init_always().
> > So, __GFP_HIGHMEM hits the gfp warning at bio_alloc() that
> > do_mpage_readpage() calls.
>
> Yeah. Let's try this to match the iomap code:
>
> diff --git a/fs/mpage.c b/fs/mpage.c
> index 9ed1e58e8d70b..d465883edf719 100644
> --- a/fs/mpage.c
> +++ b/fs/mpage.c
> @@ -148,13 +148,11 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args)
> int op = REQ_OP_READ;
> unsigned nblocks;
> unsigned relative_block;
> - gfp_t gfp;
> + gfp_t gfp = mapping_gfp_constraint(page->mapping, GFP_KERNEL);
>
> if (args->is_readahead) {
> op |= REQ_RAHEAD;
> - gfp = readahead_gfp_mask(page->mapping);
> - } else {
> - gfp = mapping_gfp_constraint(page->mapping, GFP_KERNEL);
> + gfp |= __GFP_NORETRY | __GFP_NOWARN;
> }
>
> if (page_has_buffers(page))
That fixes the problem for me.
Tested-by: Guenter Roeck <linux@roeck-us.net>
Guenter
_______________________________________________
drbd-dev mailing list
drbd-dev@lists.linbit.com
https://lists.linbit.com/mailman/listinfo/drbd-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic