diff options
author | Alex Elder <elder@inktank.com> | 2013-05-06 10:51:30 -0400 |
---|---|---|
committer | Alex Elder <elder@inktank.com> | 2013-05-08 18:00:41 -0400 |
commit | 30d60ba2f258da24b91edb880338c7178f901de9 (patch) | |
tree | b0b39018e786a342da043517005e0201711053f3 /drivers/block | |
parent | 662518b128c27def65e9af4bea2b56a1e04b3251 (diff) |
rbd: simplify rbd_dev_v1_probe()
An rbd_dev structure's fields are all zero-filled for an initial
probe, so there's no need to explicitly zero the parent_spec
and parent_overlap fields in rbd_dev_v1_probe(). Removing these
assignments makes rbd_dev_v1_probe() *almost* trivial.
Move the dout() message that announces discovery of an image into
rbd_dev_image_probe(), generalize to support images in either format
and only show it if an image is fully discovered.
This highlights that are some unnecessary cleanups in the error
path for rbd_dev_v1_probe(), so they can be removed.
Now rbd_dev_v1_probe() *is* a trivial wrapper function.
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/rbd.c | 37 |
1 files changed, 7 insertions, 30 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index e4586f2e04c2..ae223819bbf0 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c | |||
@@ -4469,31 +4469,7 @@ static void rbd_dev_unprobe(struct rbd_device *rbd_dev) | |||
4469 | 4469 | ||
4470 | static int rbd_dev_v1_probe(struct rbd_device *rbd_dev) | 4470 | static int rbd_dev_v1_probe(struct rbd_device *rbd_dev) |
4471 | { | 4471 | { |
4472 | int ret; | 4472 | return rbd_dev_v1_header_read(rbd_dev); |
4473 | |||
4474 | /* Populate rbd image metadata */ | ||
4475 | |||
4476 | ret = rbd_dev_v1_header_read(rbd_dev); | ||
4477 | if (ret < 0) | ||
4478 | goto out_err; | ||
4479 | |||
4480 | /* Version 1 images have no parent (no layering) */ | ||
4481 | |||
4482 | rbd_dev->parent_spec = NULL; | ||
4483 | rbd_dev->parent_overlap = 0; | ||
4484 | |||
4485 | dout("discovered version 1 image, header name is %s\n", | ||
4486 | rbd_dev->header_name); | ||
4487 | |||
4488 | return 0; | ||
4489 | |||
4490 | out_err: | ||
4491 | kfree(rbd_dev->header_name); | ||
4492 | rbd_dev->header_name = NULL; | ||
4493 | kfree(rbd_dev->spec->image_id); | ||
4494 | rbd_dev->spec->image_id = NULL; | ||
4495 | |||
4496 | return ret; | ||
4497 | } | 4473 | } |
4498 | 4474 | ||
4499 | static int rbd_dev_v2_probe(struct rbd_device *rbd_dev) | 4475 | static int rbd_dev_v2_probe(struct rbd_device *rbd_dev) |
@@ -4553,9 +4529,6 @@ static int rbd_dev_v2_probe(struct rbd_device *rbd_dev) | |||
4553 | if (ret) | 4529 | if (ret) |
4554 | goto out_err; | 4530 | goto out_err; |
4555 | 4531 | ||
4556 | dout("discovered version 2 image, header name is %s\n", | ||
4557 | rbd_dev->header_name); | ||
4558 | |||
4559 | return 0; | 4532 | return 0; |
4560 | out_err: | 4533 | out_err: |
4561 | rbd_dev->parent_overlap = 0; | 4534 | rbd_dev->parent_overlap = 0; |
@@ -4758,9 +4731,13 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool read_only) | |||
4758 | rbd_dev->mapping.read_only = read_only; | 4731 | rbd_dev->mapping.read_only = read_only; |
4759 | 4732 | ||
4760 | ret = rbd_dev_probe_parent(rbd_dev); | 4733 | ret = rbd_dev_probe_parent(rbd_dev); |
4761 | if (!ret) | 4734 | if (ret) |
4762 | return 0; | 4735 | goto err_out_probe; |
4736 | |||
4737 | dout("discovered format %u image, header name is %s\n", | ||
4738 | rbd_dev->image_format, rbd_dev->header_name); | ||
4763 | 4739 | ||
4740 | return 0; | ||
4764 | err_out_probe: | 4741 | err_out_probe: |
4765 | rbd_dev_unprobe(rbd_dev); | 4742 | rbd_dev_unprobe(rbd_dev); |
4766 | err_out_watch: | 4743 | err_out_watch: |