Message ID | 20240420025029.2166544-19-willy@infradead.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Remove PG_error flag | expand |
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@infradead.org> 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@omnibond.com> > Cc: Martin Brandenburg <martin@omnibond.com> > Cc: devel@lists.orangefs.org > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > --- > 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 >
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; }
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@omnibond.com> Cc: Martin Brandenburg <martin@omnibond.com> Cc: devel@lists.orangefs.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- fs/orangefs/inode.c | 13 +++---------- fs/orangefs/orangefs-bufmap.c | 4 +--- 2 files changed, 4 insertions(+), 13 deletions(-)