mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-28 16:53:49 +00:00
gfs2: Remove use of error flag in journal reads
Conventionally, we use the uptodate bit to signal whether a read encountered an error or not. Use folio_end_read() to set the uptodate bit on success. Also use filemap_set_wb_err() to communicate the errno instead of the more heavy-weight mapping_set_error(). Signed-off-by: "Matthew Wilcox (Oracle)" <willy@infradead.org> Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
parent
e0f1f02178
commit
ff7a85af5a
@ -391,22 +391,15 @@ static void gfs2_log_write_page(struct gfs2_sbd *sdp, struct page *page)
|
||||
* Simply unlock the pages in the bio. The main thread will wait on them and
|
||||
* process them in order as necessary.
|
||||
*/
|
||||
|
||||
static void gfs2_end_log_read(struct bio *bio)
|
||||
{
|
||||
struct page *page;
|
||||
struct bio_vec *bvec;
|
||||
struct bvec_iter_all iter_all;
|
||||
int error = blk_status_to_errno(bio->bi_status);
|
||||
struct folio_iter fi;
|
||||
|
||||
bio_for_each_segment_all(bvec, bio, iter_all) {
|
||||
page = bvec->bv_page;
|
||||
if (bio->bi_status) {
|
||||
int err = blk_status_to_errno(bio->bi_status);
|
||||
|
||||
SetPageError(page);
|
||||
mapping_set_error(page->mapping, err);
|
||||
}
|
||||
unlock_page(page);
|
||||
bio_for_each_folio_all(fi, bio) {
|
||||
/* We're abusing wb_err to get the error to gfs2_find_jhead */
|
||||
filemap_set_wb_err(fi.folio->mapping, error);
|
||||
folio_end_read(fi.folio, !error);
|
||||
}
|
||||
|
||||
bio_put(bio);
|
||||
@ -475,7 +468,7 @@ static void gfs2_jhead_process_page(struct gfs2_jdesc *jd, unsigned long index,
|
||||
folio = filemap_get_folio(jd->jd_inode->i_mapping, index);
|
||||
|
||||
folio_wait_locked(folio);
|
||||
if (folio_test_error(folio))
|
||||
if (!folio_test_uptodate(folio))
|
||||
*done = true;
|
||||
|
||||
if (!*done)
|
||||
|
Loading…
Reference in New Issue
Block a user