diff options
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/rbd.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index b40af3203089..812523330a78 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c | |||
@@ -3762,8 +3762,8 @@ static int rbd_init_disk(struct rbd_device *rbd_dev) | |||
3762 | goto out_tag_set; | 3762 | goto out_tag_set; |
3763 | } | 3763 | } |
3764 | 3764 | ||
3765 | /* We use the default size, but let's be explicit about it. */ | 3765 | queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q); |
3766 | blk_queue_physical_block_size(q, SECTOR_SIZE); | 3766 | /* QUEUE_FLAG_ADD_RANDOM is off by default for blk-mq */ |
3767 | 3767 | ||
3768 | /* set io sizes to object size */ | 3768 | /* set io sizes to object size */ |
3769 | segment_size = rbd_obj_bytes(&rbd_dev->header); | 3769 | segment_size = rbd_obj_bytes(&rbd_dev->header); |
@@ -5301,8 +5301,13 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool mapping) | |||
5301 | 5301 | ||
5302 | if (mapping) { | 5302 | if (mapping) { |
5303 | ret = rbd_dev_header_watch_sync(rbd_dev); | 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 | goto out_header_name; | 5309 | goto out_header_name; |
5310 | } | ||
5306 | } | 5311 | } |
5307 | 5312 | ||
5308 | ret = rbd_dev_header_info(rbd_dev); | 5313 | ret = rbd_dev_header_info(rbd_dev); |
@@ -5319,8 +5324,14 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool mapping) | |||
5319 | ret = rbd_spec_fill_snap_id(rbd_dev); | 5324 | ret = rbd_spec_fill_snap_id(rbd_dev); |
5320 | else | 5325 | else |
5321 | ret = rbd_spec_fill_names(rbd_dev); | 5326 | ret = rbd_spec_fill_names(rbd_dev); |
5322 | if (ret) | 5327 | if (ret) { |
5328 | if (ret == -ENOENT) | ||
5329 | pr_info("snap %s/%s@%s does not exist\n", | ||
5330 | rbd_dev->spec->pool_name, | ||
5331 | rbd_dev->spec->image_name, | ||
5332 | rbd_dev->spec->snap_name); | ||
5323 | goto err_out_probe; | 5333 | goto err_out_probe; |
5334 | } | ||
5324 | 5335 | ||
5325 | if (rbd_dev->header.features & RBD_FEATURE_LAYERING) { | 5336 | if (rbd_dev->header.features & RBD_FEATURE_LAYERING) { |
5326 | ret = rbd_dev_v2_parent_info(rbd_dev); | 5337 | ret = rbd_dev_v2_parent_info(rbd_dev); |
@@ -5390,8 +5401,11 @@ static ssize_t do_rbd_add(struct bus_type *bus, | |||
5390 | 5401 | ||
5391 | /* pick the pool */ | 5402 | /* pick the pool */ |
5392 | rc = rbd_add_get_pool_id(rbdc, spec->pool_name); | 5403 | rc = rbd_add_get_pool_id(rbdc, spec->pool_name); |
5393 | if (rc < 0) | 5404 | if (rc < 0) { |
5405 | if (rc == -ENOENT) | ||
5406 | pr_info("pool %s does not exist\n", spec->pool_name); | ||
5394 | goto err_out_client; | 5407 | goto err_out_client; |
5408 | } | ||
5395 | spec->pool_id = (u64)rc; | 5409 | spec->pool_id = (u64)rc; |
5396 | 5410 | ||
5397 | /* The ceph file layout needs to fit pool id in 32 bits */ | 5411 | /* The ceph file layout needs to fit pool id in 32 bits */ |
@@ -5673,7 +5687,7 @@ static int __init rbd_init(void) | |||
5673 | 5687 | ||
5674 | /* | 5688 | /* |
5675 | * The number of active work items is limited by the number of | 5689 | * The number of active work items is limited by the number of |
5676 | * rbd devices, so leave @max_active at default. | 5690 | * rbd devices * queue depth, so leave @max_active at default. |
5677 | */ | 5691 | */ |
5678 | rbd_wq = alloc_workqueue(RBD_DRV_NAME, WQ_MEM_RECLAIM, 0); | 5692 | rbd_wq = alloc_workqueue(RBD_DRV_NAME, WQ_MEM_RECLAIM, 0); |
5679 | if (!rbd_wq) { | 5693 | if (!rbd_wq) { |