Re: [RFC v2 2/8] shmem: convert to use is_folio_hwpoison()

From: Matthew Wilcox
Date: Fri May 26 2023 - 14:42:41 EST


On Fri, May 26, 2023 at 10:41:00AM -0700, Luis Chamberlain wrote:
> On Fri, May 26, 2023 at 03:32:54PM +0100, Matthew Wilcox wrote:
> > On Fri, May 26, 2023 at 12:55:46AM -0700, Luis Chamberlain wrote:
> > > The PageHWPoison() call can be converted over to the respective folio
> > > call is_folio_hwpoison(). This introduces no functional changes.
> >
> > Yes, it very much does!
> >
> > > @@ -4548,7 +4548,7 @@ struct page *shmem_read_mapping_page_gfp(struct address_space *mapping,
> > > return &folio->page;
> > >
> > > page = folio_file_page(folio, index);
> > > - if (PageHWPoison(page)) {
> > > + if (is_folio_hwpoison(folio)) {
> > > folio_put(folio);
> >
> > Imagine you have an order-9 folio and one of the pages in it gets
> > HWPoison. Before, you can read the other 511 pages in the folio.
>
> But before we didn't use high order folios for reads on tmpfs?

Sure we did! If SHMEM_HUGE_ALWAYS is set, we can see reads of THPs
(order-9 folios) in this path.