diff options
-rw-r--r-- | drivers/md/bcache/movinggc.c | 2 | ||||
-rw-r--r-- | drivers/md/bcache/tier.c | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/bcache/movinggc.c b/drivers/md/bcache/movinggc.c index 917fd6ff9e00..3c85d491fec4 100644 --- a/drivers/md/bcache/movinggc.c +++ b/drivers/md/bcache/movinggc.c @@ -75,6 +75,8 @@ static void read_moving(struct cache *ca, size_t buckets_to_move, bch_btree_iter_init(&iter, c, BTREE_ID_EXTENTS, POS_MIN); while (1) { + if (kthread_should_stop()) + goto out; if (bch_move_ctxt_wait(&ctxt)) goto out; k = bch_btree_iter_peek(&iter); diff --git a/drivers/md/bcache/tier.c b/drivers/md/bcache/tier.c index bbace2f1a6b1..b8516e8c6871 100644 --- a/drivers/md/bcache/tier.c +++ b/drivers/md/bcache/tier.c @@ -126,7 +126,8 @@ static s64 read_tiering(struct cache_set *c, struct cache_group *tier) nr_devices * SECTORS_IN_FLIGHT_PER_DEVICE); bch_btree_iter_init(&iter, c, BTREE_ID_EXTENTS, POS_MIN); - while (!bch_move_ctxt_wait(&ctxt) && + while (!kthread_should_stop() && + !bch_move_ctxt_wait(&ctxt) && (k = bch_btree_iter_peek(&iter)).k && !btree_iter_err(k)) { if (!tiering_pred(c, &s, k)) |