diff options
Diffstat (limited to 'xlators/cluster/ec')
-rw-r--r-- | xlators/cluster/ec/src/ec-heal.c | 4 | ||||
-rw-r--r-- | xlators/cluster/ec/src/ec-heald.c | 6 | ||||
-rw-r--r-- | xlators/cluster/ec/src/ec.c | 3 |
3 files changed, 13 insertions, 0 deletions
diff --git a/xlators/cluster/ec/src/ec-heal.c b/xlators/cluster/ec/src/ec-heal.c index 2fa1f11c5fa..8844c292f83 100644 --- a/xlators/cluster/ec/src/ec-heal.c +++ b/xlators/cluster/ec/src/ec-heal.c @@ -2855,6 +2855,10 @@ ec_replace_brick_heal_wrap(void *opaque) itable = ec->xl->itable; else goto out; + + if (xlator_is_cleanup_starting(ec->xl)) + goto out; + ret = ec_replace_heal(ec, itable->root); out: return ret; diff --git a/xlators/cluster/ec/src/ec-heald.c b/xlators/cluster/ec/src/ec-heald.c index 985d4854363..5948a588be1 100644 --- a/xlators/cluster/ec/src/ec-heald.c +++ b/xlators/cluster/ec/src/ec-heald.c @@ -444,6 +444,9 @@ unlock: int ec_shd_full_healer_spawn(xlator_t *this, int subvol) { + if (xlator_is_cleanup_starting(this)) + return -1; + return ec_shd_healer_spawn(this, NTH_FULL_HEALER(this, subvol), ec_shd_full_healer); } @@ -451,6 +454,9 @@ ec_shd_full_healer_spawn(xlator_t *this, int subvol) int ec_shd_index_healer_spawn(xlator_t *this, int subvol) { + if (xlator_is_cleanup_starting(this)) + return -1; + return ec_shd_healer_spawn(this, NTH_INDEX_HEALER(this, subvol), ec_shd_index_healer); } diff --git a/xlators/cluster/ec/src/ec.c b/xlators/cluster/ec/src/ec.c index 4e9fac5ea39..95100951220 100644 --- a/xlators/cluster/ec/src/ec.c +++ b/xlators/cluster/ec/src/ec.c @@ -486,6 +486,9 @@ ec_set_up_state(ec_t *ec, uintptr_t index_mask, uintptr_t new_state) { uintptr_t current_state = 0; + if (xlator_is_cleanup_starting(ec->xl)) + return _gf_false; + if ((ec->xl_notify & index_mask) == 0) { ec->xl_notify |= index_mask; ec->xl_notify_count++; |