aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 00cc42550f34..29dd1e8ae19f 100644
--- a/drivers/md/bcache/super.c
+++ b/drivers/md/bcache/super.c
@@ -733,8 +733,6 @@ static void bcache_device_detach(struct bcache_device *d)
733static void bcache_device_attach(struct bcache_device *d, struct cache_set *c, 733static void bcache_device_attach(struct bcache_device *d, struct cache_set *c,
734 unsigned id) 734 unsigned id)
735{ 735{
736 BUG_ON(test_bit(CACHE_SET_STOPPING, &c->flags));
737
738 d->id = id; 736 d->id = id;
739 d->c = c; 737 d->c = c;
740 c->devices[id] = d; 738 c->devices[id] = d;
@@ -1771,6 +1769,7 @@ found:
1771 pr_debug("set version = %llu", c->sb.version); 1769 pr_debug("set version = %llu", c->sb.version);
1772 } 1770 }
1773 1771
1772 kobject_get(&ca->kobj);
1774 ca->set = c; 1773 ca->set = c;
1775 ca->set->cache[ca->sb.nr_this_dev] = ca; 1774 ca->set->cache[ca->sb.nr_this_dev] = ca;
1776 c->cache_by_alloc[c->caches_loaded++] = ca; 1775 c->cache_by_alloc[c->caches_loaded++] = ca;
@@ -1888,10 +1887,12 @@ static void register_cache(struct cache_sb *sb, struct page *sb_page,
1888 goto err; 1887 goto err;
1889 1888
1890 pr_info("registered cache device %s", bdevname(bdev, name)); 1889 pr_info("registered cache device %s", bdevname(bdev, name));
1890out:
1891 kobject_put(&ca->kobj);
1891 return; 1892 return;
1892err: 1893err:
1893 pr_notice("error opening %s: %s", bdevname(bdev, name), err); 1894 pr_notice("error opening %s: %s", bdevname(bdev, name), err);
1894 kobject_put(&ca->kobj); 1895 goto out;
1895} 1896}
1896 1897
1897/* Global interfaces/init */ 1898/* Global interfaces/init */