2023-02-14 18:23:50

by Deepak R Varma

[permalink] [raw]
Subject: Query on mm/folio-compat: pagecache_get_page

Hello,
Could someone comment if it is safe to access the page member variable as
written on line #100 when folio is NULL as returned from the
__filemap_get_folio() function call? Is this kind of intentional page-fault
trigger for the system to handle a new/fresh page allocation?

2 folio = __filemap_get_folio(mapping, index, fgp_flags, gfp);
1 if (!folio || xa_is_value(folio))
100 return &folio->page;
1 return folio_file_page(folio, index);

The code is part of commit ID c5255b421fd04

Thank you,
./drv




2023-02-14 18:36:02

by Sidhartha Kumar

[permalink] [raw]
Subject: Re: Query on mm/folio-compat: pagecache_get_page

On 2/14/23 10:23 AM, Deepak R Varma wrote:
> Hello,
> Could someone comment if it is safe to access the page member variable as
> written on line #100 when folio is NULL as returned from the

It is safe to access the page member variable when folio is NULL because
the offset of page within struct folio is 0.[1]


[1] https://lore.kernel.org/lkml/[email protected]/T/

Thanks,
Sidhartha Kumar

> __filemap_get_folio() function call? Is this kind of intentional page-fault
> trigger for the system to handle a new/fresh page allocation?
>
> 2 folio = __filemap_get_folio(mapping, index, fgp_flags, gfp);
> 1 if (!folio || xa_is_value(folio))
> 100 return &folio->page;
> 1 return folio_file_page(folio, index);
>
> The code is part of commit ID c5255b421fd04
>
> Thank you,
> ./drv
>
>
>


2023-02-14 19:17:21

by Deepak R Varma

[permalink] [raw]
Subject: Re: Query on mm/folio-compat: pagecache_get_page

On Tue, Feb 14, 2023 at 10:35:33AM -0800, Sidhartha Kumar wrote:
> On 2/14/23 10:23 AM, Deepak R Varma wrote:
> > Hello,
> > Could someone comment if it is safe to access the page member variable as
> > written on line #100 when folio is NULL as returned from the
>
> It is safe to access the page member variable when folio is NULL because the
> offset of page within struct folio is 0.[1]

Wow. This is so well thought. Thank you Sidhartha.

./drv

>
>
> [1] https://lore.kernel.org/lkml/[email protected]/T/
>
> Thanks,
> Sidhartha Kumar
>
> > __filemap_get_folio() function call? Is this kind of intentional page-fault
> > trigger for the system to handle a new/fresh page allocation?
> >
> > 2 folio = __filemap_get_folio(mapping, index, fgp_flags, gfp);
> > 1 if (!folio || xa_is_value(folio))
> > 100 return &folio->page;
> > 1 return folio_file_page(folio, index);
> >
> > The code is part of commit ID c5255b421fd04
> >
> > Thank you,
> > ./drv
> >
> >
> >
>