summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2016-12-14 17:52:36 -0900
committerKent Overstreet <kent.overstreet@gmail.com>2017-01-18 21:41:28 -0900
commit9c82c100adc96eb194ba73bbcf72f976331e7e24 (patch)
tree6fbbfc7e83185d5dac5446e4119d0255a53f9dbc
parentfa206fe7416e0adce09c2f678fd5cc8853779181 (diff)
bcache: check kthread_should_stop() in read_tiering() more often
-rw-r--r--drivers/md/bcache/movinggc.c2
-rw-r--r--drivers/md/bcache/tier.c3
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))