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]> > >