summaryrefslogtreecommitdiff
path: root/libbcache/error.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2017-03-09 08:27:30 -0900
committerKent Overstreet <kent.overstreet@gmail.com>2017-03-09 09:14:11 -0900
commitac1b32acb4ca8c59c0e4911a8d3b27fd72dc54af (patch)
treee73a6ea5ddb6f3ece6a3e6c069ffa9ecc5e1ee44 /libbcache/error.c
parenta17f7bcec7ed810a247c24e56229af8f43a9a6ae (diff)
cmd_device_fail
Add a comamnd for setting a device as failed, update bcache sources
Diffstat (limited to 'libbcache/error.c')
-rw-r--r--libbcache/error.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libbcache/error.c b/libbcache/error.c
index f4109da6..814c0eb7 100644
--- a/libbcache/error.c
+++ b/libbcache/error.c
@@ -121,9 +121,11 @@ void bch_nonfatal_io_error_work(struct work_struct *work)
bch_notify_dev_error(ca, true);
mutex_lock(&c->state_lock);
- dev = bch_dev_may_remove(ca);
+ dev = bch_dev_state_allowed(c, ca, BCH_MEMBER_STATE_RO,
+ BCH_FORCE_IF_DEGRADED);
if (dev
- ? bch_dev_read_only(ca)
+ ? __bch_dev_set_state(c, ca, BCH_MEMBER_STATE_RO,
+ BCH_FORCE_IF_DEGRADED)
: bch_fs_emergency_read_only(c))
bch_err(c,
"too many IO errors on %s, setting %s RO",