6 void bch2_inconsistent_error(struct bch_fs *c)
8 set_bit(BCH_FS_ERROR, &c->flags);
10 switch (c->opts.errors) {
11 case BCH_ON_ERROR_CONTINUE:
14 if (bch2_fs_emergency_read_only(c))
15 bch_err(c, "emergency read only");
17 case BCH_ON_ERROR_PANIC:
18 panic(bch2_fmt(c, "panic after error"));
23 void bch2_fatal_error(struct bch_fs *c)
25 if (bch2_fs_emergency_read_only(c))
26 bch_err(c, "emergency read only");
29 void bch2_nonfatal_io_error_work(struct work_struct *work)
31 struct bch_dev *ca = container_of(work, struct bch_dev, io_error_work);
32 struct bch_fs *c = ca->fs;
35 mutex_lock(&c->state_lock);
36 dev = bch2_dev_state_allowed(c, ca, BCH_MEMBER_STATE_RO,
37 BCH_FORCE_IF_DEGRADED);
39 ? __bch2_dev_set_state(c, ca, BCH_MEMBER_STATE_RO,
40 BCH_FORCE_IF_DEGRADED)
41 : bch2_fs_emergency_read_only(c))
43 "too many IO errors, setting %s RO",
44 dev ? "device" : "filesystem");
45 mutex_unlock(&c->state_lock);
48 void bch2_nonfatal_io_error(struct bch_dev *ca)
50 queue_work(system_long_wq, &ca->io_error_work);