Re: [PATCH] orangefs: use folio_pos() and folio_size() in orangefs_page_mkwrite()

Mike Marshall <[email protected]>
Newsgroups org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel
Message-ID <CAOg9mST1YRwbuRv-JKdOsOCdG963eSv77ACQheVeWNQ0PM_qKQ@mail.gmail.com>
This patch is in my linux-next, thanks!

-Mike

On Mon, Aug 10, 2026 at 11:21 AM Mike Marshall <[email protected]> wrote:
>
> Thanks! I'm trying to finish up some stuff to get on
> linux-next in time, I'll let you know when I've run your
> patch through xfstests...
>
> -Mike
>
> On Sun, Aug 9, 2026 at 4:07 PM Tal Zussman <[email protected]> wrote:
> >
> > orangefs_page_mkwrite() records the faulted range with
> > page_offset(vmf->page) and PAGE_SIZE, although the write range it sets
> > is attached to the folio and the rest of the function already operates
> > on folios. Use folio_pos() and folio_size() instead. This gets rid of
> > two calls to page_offset(), removing two calls to compound_head().
> >
> > No functional change. orangefs folios are always order-0, so the values
> > are identical. However, if orangefs ever enables large folios, this
> > change is necessary for correctness with the current write range
> > tracking scheme. Tracking only a single page of a larger folio would
> > leave the rest of the folio's dirty data outside the range that gets
> > written back, leading to data loss.
> >
> > Signed-off-by: Tal Zussman <[email protected]>
> > ---
> >  fs/orangefs/inode.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c
> > index 7143b64b5b25..cd3273c88e03 100644
> > --- a/fs/orangefs/inode.c
> > +++ b/fs/orangefs/inode.c
> > @@ -652,8 +652,8 @@ vm_fault_t orangefs_page_mkwrite(struct vm_fault *vmf)
> >                 wr = folio_get_private(folio);
> >                 if (uid_eq(wr->uid, current_fsuid()) &&
> >                     gid_eq(wr->gid, current_fsgid())) {
> > -                       wr->pos = page_offset(vmf->page);
> > -                       wr->len = PAGE_SIZE;
> > +                       wr->pos = folio_pos(folio);
> > +                       wr->len = folio_size(folio);
> >                         goto okay;
> >                 } else {
> >                         if (orangefs_launder_folio(folio)) {
> > @@ -667,8 +667,8 @@ vm_fault_t orangefs_page_mkwrite(struct vm_fault *vmf)
> >                 ret = VM_FAULT_LOCKED|VM_FAULT_RETRY;
> >                 goto out;
> >         }
> > -       wr->pos = page_offset(vmf->page);
> > -       wr->len = PAGE_SIZE;
> > +       wr->pos = folio_pos(folio);
> > +       wr->len = folio_size(folio);
> >         wr->uid = current_fsuid();
> >         wr->gid = current_fsgid();
> >         folio_attach_private(folio, wr);
> >
> > ---
> > base-commit: 075b74841bd0065a3bda3440873c747938e69b68
> > change-id: 20260809-orangefs-mkwrite-folio-ec562f7625b4
> >
> > Best regards,
> > --
> > Tal Zussman <[email protected]>
> >
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.