I added this patch to 6.9.0-rc5 and ran it through xfstests with no problems... -Mike On Fri, Apr 19, 2024 at 10:50 PM Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> wrote: > > Nobody checks the error flag on orangefs folios, so stop setting and > clearing it. We can also use folio_end_read() to simplify > orangefs_read_folio(). > > Cc: Mike Marshall <hubcap@xxxxxxxxxxxx> > Cc: Martin Brandenburg <martin@xxxxxxxxxxxx> > Cc: devel@xxxxxxxxxxxxxxxxxx > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > --- > fs/orangefs/inode.c | 13 +++---------- > fs/orangefs/orangefs-bufmap.c | 4 +--- > 2 files changed, 4 insertions(+), 13 deletions(-) > > diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c > index 085912268442..fdb9b65db1de 100644 > --- a/fs/orangefs/inode.c > +++ b/fs/orangefs/inode.c > @@ -56,7 +56,6 @@ static int orangefs_writepage_locked(struct page *page, > ret = wait_for_direct_io(ORANGEFS_IO_WRITE, inode, &off, &iter, wlen, > len, wr, NULL, NULL); > if (ret < 0) { > - SetPageError(page); > mapping_set_error(page->mapping, ret); > } else { > ret = 0; > @@ -119,7 +118,6 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow, > 0, &wr, NULL, NULL); > if (ret < 0) { > for (i = 0; i < ow->npages; i++) { > - SetPageError(ow->pages[i]); > mapping_set_error(ow->pages[i]->mapping, ret); > if (PagePrivate(ow->pages[i])) { > wrp = (struct orangefs_write_range *) > @@ -303,15 +301,10 @@ static int orangefs_read_folio(struct file *file, struct folio *folio) > iov_iter_zero(~0U, &iter); > /* takes care of potential aliasing */ > flush_dcache_folio(folio); > - if (ret < 0) { > - folio_set_error(folio); > - } else { > - folio_mark_uptodate(folio); > + if (ret > 0) > ret = 0; > - } > - /* unlock the folio after the ->read_folio() routine completes */ > - folio_unlock(folio); > - return ret; > + folio_end_read(folio, ret == 0); > + return ret; > } > > static int orangefs_write_begin(struct file *file, > diff --git a/fs/orangefs/orangefs-bufmap.c b/fs/orangefs/orangefs-bufmap.c > index b501dc07f922..edcca4beb765 100644 > --- a/fs/orangefs/orangefs-bufmap.c > +++ b/fs/orangefs/orangefs-bufmap.c > @@ -274,10 +274,8 @@ orangefs_bufmap_map(struct orangefs_bufmap *bufmap, > gossip_err("orangefs error: asked for %d pages, only got %d.\n", > bufmap->page_count, ret); > > - for (i = 0; i < ret; i++) { > - SetPageError(bufmap->page_array[i]); > + for (i = 0; i < ret; i++) > unpin_user_page(bufmap->page_array[i]); > - } > return -ENOMEM; > } > > -- > 2.43.0 >