Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b708de6 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcache: Fix an infinite loop in journal replay



When running with multiple cache devices, if one of the devices has a completely
empty journal but we'd already found some journal entries on a previosu device
we'd go into an infinite loop.

Change-Id: I1dcdc0d738192746de28f40e8b08825b0dea5e2b
Signed-off-by: default avatarKent Overstreet <kmo@daterainc.com>
parent 913dc33f
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -190,9 +190,12 @@ int bch_journal_read(struct cache_set *c, struct list_head *list)
			if (read_bucket(l))
				goto bsearch;

		if (list_empty(list))
		/* no journal entries on this device? */
		if (l == ca->sb.njournal_buckets)
			continue;
bsearch:
		BUG_ON(list_empty(list));

		/* Binary search */
		m = l;
		r = find_next_bit(bitmap, ca->sb.njournal_buckets, l + 1);