@@ -1835,11 +1835,12 @@ static int cache_alloc(struct cache_sb *sb, struct cache *ca)
1835
1835
return 0 ;
1836
1836
}
1837
1837
1838
- static void register_cache (struct cache_sb * sb , struct page * sb_page ,
1838
+ static int register_cache (struct cache_sb * sb , struct page * sb_page ,
1839
1839
struct block_device * bdev , struct cache * ca )
1840
1840
{
1841
1841
char name [BDEVNAME_SIZE ];
1842
- const char * err = "cannot allocate memory" ;
1842
+ const char * err = NULL ;
1843
+ int ret = 0 ;
1843
1844
1844
1845
memcpy (& ca -> sb , sb , sizeof (struct cache_sb ));
1845
1846
ca -> bdev = bdev ;
@@ -1854,27 +1855,35 @@ static void register_cache(struct cache_sb *sb, struct page *sb_page,
1854
1855
if (blk_queue_discard (bdev_get_queue (ca -> bdev )))
1855
1856
ca -> discard = CACHE_DISCARD (& ca -> sb );
1856
1857
1857
- if (cache_alloc (sb , ca ) != 0 )
1858
+ ret = cache_alloc (sb , ca );
1859
+ if (ret != 0 )
1858
1860
goto err ;
1859
1861
1860
- err = "error creating kobject" ;
1861
- if (kobject_add (& ca -> kobj , & part_to_dev (bdev -> bd_part )-> kobj , "bcache" ))
1862
- goto err ;
1862
+ if (kobject_add (& ca -> kobj , & part_to_dev (bdev -> bd_part )-> kobj , "bcache" )) {
1863
+ err = "error calling kobject_add" ;
1864
+ ret = - ENOMEM ;
1865
+ goto out ;
1866
+ }
1863
1867
1864
1868
mutex_lock (& bch_register_lock );
1865
1869
err = register_cache_set (ca );
1866
1870
mutex_unlock (& bch_register_lock );
1867
1871
1868
- if (err )
1869
- goto err ;
1872
+ if (err ) {
1873
+ ret = - ENODEV ;
1874
+ goto out ;
1875
+ }
1870
1876
1871
1877
pr_info ("registered cache device %s" , bdevname (bdev , name ));
1878
+
1872
1879
out :
1873
1880
kobject_put (& ca -> kobj );
1874
- return ;
1881
+
1875
1882
err :
1876
- pr_notice ("error opening %s: %s" , bdevname (bdev , name ), err );
1877
- goto out ;
1883
+ if (err )
1884
+ pr_notice ("error opening %s: %s" , bdevname (bdev , name ), err );
1885
+
1886
+ return ret ;
1878
1887
}
1879
1888
1880
1889
/* Global interfaces/init */
@@ -1972,7 +1981,8 @@ static ssize_t register_bcache(struct kobject *k, struct kobj_attribute *attr,
1972
1981
if (!ca )
1973
1982
goto err_close ;
1974
1983
1975
- register_cache (sb , sb_page , bdev , ca );
1984
+ if (register_cache (sb , sb_page , bdev , ca ) != 0 )
1985
+ goto err_close ;
1976
1986
}
1977
1987
out :
1978
1988
if (sb_page )
0 commit comments