X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libbcachefs%2Ffs-io.c;h=7133482eeab6b1f75db098c5701e8cd8564aa4b6;hb=93bdfcb2105afe7a45d512984b855ce97937cfc1;hp=b2ea783fe38afc29855b47eca4803b84cf25e9f3;hpb=b485aae1bac95e3b5be235116e2bc43da85906c5;p=bcachefs-tools-debian diff --git a/libbcachefs/fs-io.c b/libbcachefs/fs-io.c index b2ea783..7133482 100644 --- a/libbcachefs/fs-io.c +++ b/libbcachefs/fs-io.c @@ -1189,9 +1189,10 @@ static void bch2_writepage_io_done(struct closure *cl) unsigned i; if (io->op.op.error) { - bio_for_each_segment_all(bvec, bio, i) + bio_for_each_segment_all(bvec, bio, i) { SetPageError(bvec->bv_page); - set_bit(AS_EIO, &io->op.inode->v.i_mapping->flags); + mapping_set_error(bvec->bv_page->mapping, -EIO); + } } /* @@ -2079,10 +2080,9 @@ int bch2_fsync(struct file *file, loff_t start, loff_t end, int datasync) if (ret) return ret; out: - if (c->opts.journal_flush_disabled) - return 0; - - ret = bch2_journal_flush_seq(&c->journal, inode->ei_journal_seq); + if (!c->opts.journal_flush_disabled) + ret = bch2_journal_flush_seq(&c->journal, + inode->ei_journal_seq); ret2 = file_check_and_advance_wb_err(file); return ret ?: ret2;