summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kmo@daterainc.com>2014-06-12 06:44:49 +0400
committerBen Hutchings <ben@decadent.org.uk>2016-05-01 01:05:55 +0300
commiteebbc086adaef10e7cd91e1b13b4063a4d4756a2 (patch)
treef859ad48abab53ba37f14a5892d987823be3a053
parentfb805d5e0f2c0f683bc9d5c1ca1c4f1cf2fafb0e (diff)
downloadlinux-eebbc086adaef10e7cd91e1b13b4063a4d4756a2.tar.xz
bcache: Fix more early shutdown bugs
commit d83353b319d47ef8cce82467da6a25c2d558253f upstream. Signed-off-by: Kent Overstreet <kmo@daterainc.com> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--drivers/md/bcache/super.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
index 70db24e41947..00755784b3a1 100644
--- a/drivers/md/bcache/super.c
+++ b/drivers/md/bcache/super.c
@@ -735,8 +735,6 @@ static void bcache_device_detach(struct bcache_device *d)
static void bcache_device_attach(struct bcache_device *d, struct cache_set *c,
unsigned id)
{
- BUG_ON(test_bit(CACHE_SET_STOPPING, &c->flags));
-
d->id = id;
d->c = c;
c->devices[id] = d;
@@ -1765,6 +1763,7 @@ found:
pr_debug("set version = %llu", c->sb.version);
}
+ kobject_get(&ca->kobj);
ca->set = c;
ca->set->cache[ca->sb.nr_this_dev] = ca;
c->cache_by_alloc[c->caches_loaded++] = ca;
@@ -1882,10 +1881,12 @@ static void register_cache(struct cache_sb *sb, struct page *sb_page,
goto err;
pr_info("registered cache device %s", bdevname(bdev, name));
+out:
+ kobject_put(&ca->kobj);
return;
err:
pr_notice("error opening %s: %s", bdevname(bdev, name), err);
- kobject_put(&ca->kobj);
+ goto out;
}
/* Global interfaces/init */