rbd: fix cleanup when trying to mount inexistent image

Previously we didn't clean up the sysfs entry that was just
created.

Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: Sage Weil <sage@newdream.net>

authored by Yehuda Sadeh and committed by Sage Weil 766fc439 f363e45f

+15 -4
+15 -4
drivers/block/rbd.c
··· 1790 1790 1791 1791 rc = rbd_bus_add_dev(rbd_dev); 1792 1792 if (rc) 1793 - goto err_out_disk; 1793 + goto err_out_blkdev; 1794 + 1794 1795 /* set up and announce blkdev mapping */ 1795 1796 rc = rbd_init_disk(rbd_dev); 1796 1797 if (rc) 1797 - goto err_out_blkdev; 1798 + goto err_out_bus; 1798 1799 1799 1800 return count; 1800 1801 1802 + err_out_bus: 1803 + mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); 1804 + list_del_init(&rbd_dev->node); 1805 + mutex_unlock(&ctl_mutex); 1806 + 1807 + /* this will also clean up rest of rbd_dev stuff */ 1808 + 1809 + rbd_bus_del_dev(rbd_dev); 1810 + kfree(options); 1811 + kfree(mon_dev_name); 1812 + return rc; 1813 + 1801 1814 err_out_blkdev: 1802 1815 unregister_blkdev(rbd_dev->major, rbd_dev->name); 1803 - err_out_disk: 1804 - rbd_free_disk(rbd_dev); 1805 1816 err_out_client: 1806 1817 rbd_put_client(rbd_dev); 1807 1818 mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);