summaryrefslogtreecommitdiffstats
path: root/drivers/md/bcache
diff options
context:
space:
mode:
authorKent Overstreet2014-03-05 02:56:24 +0100
committerKent Overstreet2014-03-18 20:22:32 +0100
commit0bd143fd800055b1db756693289bbebdb93f2a73 (patch)
tree72c057a83e125fba50aec10c353cad6654958f63 /drivers/md/bcache
parentbcache: Fix a journalling reclaim after recovery bug (diff)
downloadkernel-qcow2-linux-0bd143fd800055b1db756693289bbebdb93f2a73.tar.gz
kernel-qcow2-linux-0bd143fd800055b1db756693289bbebdb93f2a73.tar.xz
kernel-qcow2-linux-0bd143fd800055b1db756693289bbebdb93f2a73.zip
bcache: Fix a bug recovering from unclean shutdown
The code to fixup incorrect bucket prios incorrectly did not skip btree node freeing keys Signed-off-by: Kent Overstreet <kmo@daterainc.com>
Diffstat (limited to 'drivers/md/bcache')
-rw-r--r--drivers/md/bcache/btree.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
index 5f9c2a665ca5..2d4a864865eb 100644
--- a/drivers/md/bcache/btree.c
+++ b/drivers/md/bcache/btree.c
@@ -1726,9 +1726,9 @@ static int bch_btree_check_recurse(struct btree *b, struct btree_op *op,
!ptr_stale(b->c, k, i)) {
g->gen = PTR_GEN(k, i);
- if (b->level)
+ if (b->level && bkey_cmp(k, &ZERO_KEY))
g->prio = BTREE_PRIO;
- else if (g->prio == BTREE_PRIO)
+ else if (!b->level && g->prio == BTREE_PRIO)
g->prio = INITIAL_PRIO;
}
}