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: Kent Overstreet <kmo@daterainc.com>
This commit is contained in:
parent
913dc33fb2
commit
6b708de64a
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue