mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-30 23:59:33 -04:00
orangefs: use folio_pos() and folio_size() in orangefs_page_mkwrite()
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 <tz2294@columbia.edu> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
This commit is contained in:
committed by
Mike Marshall
parent
f574296be7
commit
5f13fae558
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user