Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

rbd: be more informative on -ENOENT failures

pr_info what exactly was the culprit: missing pool, image or snap.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>

+17 -3
+17 -3
drivers/block/rbd.c
··· 5301 5301 5302 5302 if (mapping) { 5303 5303 ret = rbd_dev_header_watch_sync(rbd_dev); 5304 - if (ret) 5304 + if (ret) { 5305 + if (ret == -ENOENT) 5306 + pr_info("image %s/%s does not exist\n", 5307 + rbd_dev->spec->pool_name, 5308 + rbd_dev->spec->image_name); 5305 5309 goto out_header_name; 5310 + } 5306 5311 } 5307 5312 5308 5313 ret = rbd_dev_header_info(rbd_dev); ··· 5324 5319 ret = rbd_spec_fill_snap_id(rbd_dev); 5325 5320 else 5326 5321 ret = rbd_spec_fill_names(rbd_dev); 5327 - if (ret) 5322 + if (ret) { 5323 + if (ret == -ENOENT) 5324 + pr_info("snap %s/%s@%s does not exist\n", 5325 + rbd_dev->spec->pool_name, 5326 + rbd_dev->spec->image_name, 5327 + rbd_dev->spec->snap_name); 5328 5328 goto err_out_probe; 5329 + } 5329 5330 5330 5331 if (rbd_dev->header.features & RBD_FEATURE_LAYERING) { 5331 5332 ret = rbd_dev_v2_parent_info(rbd_dev); ··· 5401 5390 5402 5391 /* pick the pool */ 5403 5392 rc = rbd_add_get_pool_id(rbdc, spec->pool_name); 5404 - if (rc < 0) 5393 + if (rc < 0) { 5394 + if (rc == -ENOENT) 5395 + pr_info("pool %s does not exist\n", spec->pool_name); 5405 5396 goto err_out_client; 5397 + } 5406 5398 spec->pool_id = (u64)rc; 5407 5399 5408 5400 /* The ceph file layout needs to fit pool id in 32 bits */