rbd: add warnings to rbd_dev_probe_update_spec()
authorAlex Elder <elder@dreamhost.com>
Thu, 1 Nov 2012 15:17:15 +0000 (10:17 -0500)
committerAlex Elder <elder@inktank.com>
Thu, 17 Jan 2013 20:12:46 +0000 (14:12 -0600)
Josh suggested adding warnings to this function to help users
diagnose problems.

Other than memory allocatino errors, there are two places where
errors can be returned.  Both represent problems that should
have been caught earlier, and as such might well have been
handled with BUG_ON() calls.  But if either ever did manage to
happen, it will be reported.

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
drivers/block/rbd.c

index ce6c0cbb3d7ad613c354b534660e9806f98f9ee3..530a1217a0fa3cd30e2b29027a0bacfb37a02514 100644 (file)
@@ -2644,8 +2644,11 @@ static int rbd_dev_probe_update_spec(struct rbd_device *rbd_dev)
 
        osdc = &rbd_dev->rbd_client->client->osdc;
        name = ceph_pg_pool_name_by_id(osdc->osdmap, rbd_dev->spec->pool_id);
-       if (!name)
-               return -EIO;    /* pool id too large (>= 2^31) */
+       if (!name) {
+               rbd_warn(rbd_dev, "there is no pool with id %llu",
+                       rbd_dev->spec->pool_id);        /* Really a BUG() */
+               return -EIO;
+       }
 
        rbd_dev->spec->pool_name = kstrdup(name, GFP_KERNEL);
        if (!rbd_dev->spec->pool_name)
@@ -2663,6 +2666,8 @@ static int rbd_dev_probe_update_spec(struct rbd_device *rbd_dev)
 
        name = rbd_snap_name(rbd_dev, rbd_dev->spec->snap_id);
        if (!name) {
+               rbd_warn(rbd_dev, "no snapshot with id %llu",
+                       rbd_dev->spec->snap_id);        /* Really a BUG() */
                ret = -EIO;
                goto out_err;
        }