From faf13b10f76eba90e820906da18c9ec78190d67a Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Sat, 27 Apr 2013 09:59:31 -0500 Subject: [PATCH] --- yaml --- r: 373521 b: refs/heads/master c: b644de2ba0c5b590db9195c03358ccd0f061daa6 h: refs/heads/master i: 373519: bdf2b26edf817c661f997fdb58bb15d07cec7e12 v: v3 --- [refs] | 2 +- trunk/drivers/block/rbd.c | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index c7575c203e2d..29fe6f73236d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 96f03e08f9f27cf72d2c24b4e75ade81d2df3c75 +refs/heads/master: b644de2ba0c5b590db9195c03358ccd0f061daa6 diff --git a/trunk/drivers/block/rbd.c b/trunk/drivers/block/rbd.c index 52c722b471e4..ac94aa4b4d22 100644 --- a/trunk/drivers/block/rbd.c +++ b/trunk/drivers/block/rbd.c @@ -4721,11 +4721,6 @@ static int rbd_dev_probe_parent(struct rbd_device *rbd_dev) static int rbd_dev_probe_finish(struct rbd_device *rbd_dev) { int ret; - int tmp; - - ret = rbd_dev_header_watch_sync(rbd_dev, 1); - if (ret) - return ret; ret = rbd_dev_mapping_set(rbd_dev); if (ret) @@ -4773,9 +4768,6 @@ static int rbd_dev_probe_finish(struct rbd_device *rbd_dev) unregister_blkdev(rbd_dev->major, rbd_dev->name); err_out_id: rbd_dev_id_put(rbd_dev); - tmp = rbd_dev_header_watch_sync(rbd_dev, 0); - if (tmp) - rbd_warn(rbd_dev, "failed to cancel watch event (%d)\n", ret); rbd_dev_mapping_clear(rbd_dev); return ret; @@ -4816,6 +4808,7 @@ static int rbd_dev_header_name(struct rbd_device *rbd_dev) static int rbd_dev_image_probe(struct rbd_device *rbd_dev) { int ret; + int tmp; /* * Get the id from the image id object. If it's not a @@ -4832,16 +4825,20 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev) if (ret) goto err_out_format; + ret = rbd_dev_header_watch_sync(rbd_dev, 1); + if (ret) + goto out_header_name; + if (rbd_dev->image_format == 1) ret = rbd_dev_v1_probe(rbd_dev); else ret = rbd_dev_v2_probe(rbd_dev); if (ret) - goto out_header_name; + goto err_out_watch; ret = rbd_dev_snaps_update(rbd_dev); if (ret) - goto out_header_name; + goto err_out_watch; ret = rbd_dev_spec_update(rbd_dev); if (ret) @@ -4861,6 +4858,10 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev) rbd_header_free(&rbd_dev->header); err_out_snaps: rbd_remove_all_snaps(rbd_dev); +err_out_watch: + tmp = rbd_dev_header_watch_sync(rbd_dev, 0); + if (tmp) + rbd_warn(rbd_dev, "unable to tear down watch request\n"); out_header_name: kfree(rbd_dev->header_name); rbd_dev->header_name = NULL;