Skip to content

Commit cad1e9d

Browse files
Mikulas Patockagregkh
authored andcommitted
dm writecache: verify watermark during resume
commit 41c526c upstream. Verify the watermark upon resume - so that if the target is reloaded with lower watermark, it will start the cleanup process immediately. Fixes: 48debaf ("dm: add writecache target") Cc: stable@vger.kernel.org # 4.18+ Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 1edab2a commit cad1e9d

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

drivers/md/dm-writecache.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,12 @@ static void writecache_add_to_freelist(struct dm_writecache *wc, struct wc_entry
625625
wc->freelist_size++;
626626
}
627627

628+
static inline void writecache_verify_watermark(struct dm_writecache *wc)
629+
{
630+
if (unlikely(wc->freelist_size + wc->writeback_size <= wc->freelist_high_watermark))
631+
queue_work(wc->writeback_wq, &wc->writeback_work);
632+
}
633+
628634
static struct wc_entry *writecache_pop_from_freelist(struct dm_writecache *wc)
629635
{
630636
struct wc_entry *e;
@@ -646,8 +652,8 @@ static struct wc_entry *writecache_pop_from_freelist(struct dm_writecache *wc)
646652
list_del(&e->lru);
647653
}
648654
wc->freelist_size--;
649-
if (unlikely(wc->freelist_size + wc->writeback_size <= wc->freelist_high_watermark))
650-
queue_work(wc->writeback_wq, &wc->writeback_work);
655+
656+
writecache_verify_watermark(wc);
651657

652658
return e;
653659
}
@@ -961,6 +967,8 @@ static void writecache_resume(struct dm_target *ti)
961967
writecache_commit_flushed(wc, false);
962968
}
963969

970+
writecache_verify_watermark(wc);
971+
964972
wc_unlock(wc);
965973
}
966974

0 commit comments

Comments
 (0)