2024-01-02 08:56:59

by David Howells

[permalink] [raw]
Subject: bio_vec, bv_page and folios

Hi Christoph, Willy,

Will bv_page in struct bio_vec ever become a folio pointer rather than I page
pointer? I'm guessing not as it still presumably needs to be able to point to
non-folio pages.

David



2024-01-02 09:16:22

by Matthew Wilcox

[permalink] [raw]
Subject: Re: bio_vec, bv_page and folios

On Tue, Jan 02, 2024 at 08:56:46AM +0000, David Howells wrote:
> Hi Christoph, Willy,
>
> Will bv_page in struct bio_vec ever become a folio pointer rather than I page
> pointer? I'm guessing not as it still presumably needs to be able to point to
> non-folio pages.

My plan for bio_vec is that it becomes phyr -- a physical address +
length. No more page or folio reference.

2024-01-02 10:04:17

by David Howells

[permalink] [raw]
Subject: Re: bio_vec, bv_page and folios

Matthew Wilcox <[email protected]> wrote:

> On Tue, Jan 02, 2024 at 08:56:46AM +0000, David Howells wrote:
> > Hi Christoph, Willy,
> >
> > Will bv_page in struct bio_vec ever become a folio pointer rather than I page
> > pointer? I'm guessing not as it still presumably needs to be able to point to
> > non-folio pages.
>
> My plan for bio_vec is that it becomes phyr -- a physical address +
> length. No more page or folio reference.

Interesting... What does that mean for those places that currently use
bv_page as a place to stash a pointer to the page and use it to clean up the
page later?

David


2024-01-02 10:24:42

by Matthew Wilcox

[permalink] [raw]
Subject: Re: bio_vec, bv_page and folios

On Tue, Jan 02, 2024 at 10:03:58AM +0000, David Howells wrote:
> Matthew Wilcox <[email protected]> wrote:
>
> > On Tue, Jan 02, 2024 at 08:56:46AM +0000, David Howells wrote:
> > > Hi Christoph, Willy,
> > >
> > > Will bv_page in struct bio_vec ever become a folio pointer rather than I page
> > > pointer? I'm guessing not as it still presumably needs to be able to point to
> > > non-folio pages.
> >
> > My plan for bio_vec is that it becomes phyr -- a physical address +
> > length. No more page or folio reference.
>
> Interesting... What does that mean for those places that currently use
> bv_page as a place to stash a pointer to the page and use it to clean up the
> page later?

I don't intend to get rid of bio_for_each_folio_all() or bio_add_page()
for example. It's just a phys_to_page() away. The advantage is that
we wouldn't need a struct page to do I/O to a physical address.