On 11/12/2016 04:22 AM, Chen Hanxiao wrote:
From: Chen Hanxiao <chenhanxiao(a)gmail.com>
We forget to check the return value of some rados_conf_set.
Signed-off-by: Chen Hanxiao <chenhanxiao(a)gmail.com>
---
v2: add another missing return value check
v3: fix a copy-paste error
src/storage/storage_backend_rbd.c | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
Take one more step... Rather than replicating the same message in so
many different places, why not create a helper
static int
virStorageBackendRBDRADOSConfSet(rados_t cluster,
const char *option,
const char *value)
{
VIR_DEBUG("Setting RADOS option '%s' to '%s'",
option, value);
if (rados_conf_set(cluster, option, value) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("failed to set RADOS option: %s"),
option);
return -1;
}
return 0;
}
And all those other places just have:
if (virStorageBackendRBDRADOSConfSet(ptr->cluster, arg2, arg3) < 0)
goto cleanup;
And be sure also remove the VIR_DEBUG("Found cephx key: %s", rados_key);
Also, try to not have lines longer than 80 cols... makes it tough to
read the code.
John
diff --git a/src/storage/storage_backend_rbd.c
b/src/storage/storage_backend_rbd.c
index 718c4d6..a286af0 100644
--- a/src/storage/storage_backend_rbd.c
+++ b/src/storage/storage_backend_rbd.c
@@ -159,13 +159,28 @@ virStorageBackendRBDOpenRADOSConn(virStorageBackendRBDStatePtr
ptr,
* Operations in librados will return -ETIMEDOUT when the timeout is reached.
*/
VIR_DEBUG("Setting RADOS option client_mount_timeout to %s",
client_mount_timeout);
- rados_conf_set(ptr->cluster, "client_mount_timeout",
client_mount_timeout);
+ if (rados_conf_set(ptr->cluster, "client_mount_timeout",
client_mount_timeout) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("failed to set RADOS option: %s"),
+ "client_mount_timeout");
+ goto cleanup;
+ }
VIR_DEBUG("Setting RADOS option rados_mon_op_timeout to %s",
mon_op_timeout);
- rados_conf_set(ptr->cluster, "rados_mon_op_timeout", mon_op_timeout);
+ if (rados_conf_set(ptr->cluster, "rados_mon_op_timeout",
mon_op_timeout) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("failed to set RADOS option: %s"),
+ "rados_mon_op_timeout");
+ goto cleanup;
+ }
VIR_DEBUG("Setting RADOS option rados_osd_op_timeout to %s",
osd_op_timeout);
- rados_conf_set(ptr->cluster, "rados_osd_op_timeout", osd_op_timeout);
+ if (rados_conf_set(ptr->cluster, "rados_osd_op_timeout",
osd_op_timeout) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("failed to set RADOS option: %s"),
+ "rados_osd_op_timeout");
+ goto cleanup;
+ }
/*
* Librbd supports creating RBD format 2 images. We no longer have to invoke
@@ -173,7 +188,12 @@ virStorageBackendRBDOpenRADOSConn(virStorageBackendRBDStatePtr ptr,
* This leaves us to simply use rbd_create() and use the default behavior of librbd
*/
VIR_DEBUG("Setting RADOS option rbd_default_format to %s",
rbd_default_format);
- rados_conf_set(ptr->cluster, "rbd_default_format",
rbd_default_format);
+ if (rados_conf_set(ptr->cluster, "rbd_default_format",
rbd_default_format) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("failed to set RADOS option: %s"),
+ "rbd_default_format");
+ goto cleanup;
+ }
ptr->starttime = time(0);
if ((r = rados_connect(ptr->cluster)) < 0) {