Re: [PATCH v2] block : add larger order folio size instead of pages

Matthew Wilcox
2024-05-03T15:27:01Z

On Thu, May 02, 2024 at 02:53:40PM +0200, Christoph Hellwig wrote:
> On Thu, May 02, 2024 at 08:45:33AM +0200, Hannes Reinecke wrote:
> >> - nr_pages = (fi.offset + fi.length - 1) / PAGE_SIZE -
> >> - fi.offset / PAGE_SIZE + 1;
> >> - do {
> >> - bio_release_page(bio, page++);
> >> - } while (--nr_pages != 0);
> >> + bio_release_page(bio, page);
> >
> > Errm. I guess you need to call 'folio_put()' here, otherwise the page
> > reference counting will be messed up.
>
> It shouldn't. See the rfc patch and explanation that Keith sent in reply
> to the previous version. But as I wrote earlier it should be a separate
> prep patch including a commit log clearly explaining the reason for it
> and how it works.

I think this is wandering into a minefield. I'm pretty sure
it's considered valid to split the bio, and complete the two halves
independently. Each one will put the refcounts for the pages it touches,
and if we do this early putting of references, that's going to fail.