|
@@ -1844,7 +1844,7 @@ static int register_cache(struct cache_sb *sb, struct page *sb_page,
|
|
|
struct block_device *bdev, struct cache *ca)
|
|
|
{
|
|
|
char name[BDEVNAME_SIZE];
|
|
|
- const char *err = NULL;
|
|
|
+ const char *err = NULL; /* must be set for any error case */
|
|
|
int ret = 0;
|
|
|
|
|
|
memcpy(&ca->sb, sb, sizeof(struct cache_sb));
|
|
@@ -1861,8 +1861,13 @@ static int register_cache(struct cache_sb *sb, struct page *sb_page,
|
|
|
ca->discard = CACHE_DISCARD(&ca->sb);
|
|
|
|
|
|
ret = cache_alloc(ca);
|
|
|
- if (ret != 0)
|
|
|
+ if (ret != 0) {
|
|
|
+ if (ret == -ENOMEM)
|
|
|
+ err = "cache_alloc(): -ENOMEM";
|
|
|
+ else
|
|
|
+ err = "cache_alloc(): unknown error";
|
|
|
goto err;
|
|
|
+ }
|
|
|
|
|
|
if (kobject_add(&ca->kobj, &part_to_dev(bdev->bd_part)->kobj, "bcache")) {
|
|
|
err = "error calling kobject_add";
|