* [Qemu-devel] [PATCH for-2.7 1/1] block/gluster: add support for selecting debug logging level
@ 2016-04-07 21:24 Jeff Cody
2016-04-08 10:49 ` Niels de Vos
0 siblings, 1 reply; 2+ messages in thread
From: Jeff Cody @ 2016-04-07 21:24 UTC (permalink / raw)
To: qemu-block; +Cc: qemu-devel, kwolf, ndevos
This adds commandline support for the logging level of the
gluster protocol driver, output to stdout. The option is 'debug',
e.g.:
-drive filename=gluster://192.168.15.180/gv2/test.qcow2,debug=9
Debug levels are 0-9, with 9 being the most verbose, and 0 representing
no debugging output. The default is the same as it was before, which
is a level of 4. The current logging levels defined in the gluster
source are:
0 - None
1 - Emergency
2 - Alert
3 - Critical
4 - Error
5 - Warning
6 - Notice
7 - Info
8 - Debug
9 - Trace
(From: glusterfs/logging.h)
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
block/gluster.c | 48 +++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 41 insertions(+), 7 deletions(-)
diff --git a/block/gluster.c b/block/gluster.c
index 51e154c..c6d4892 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -24,6 +24,7 @@ typedef struct GlusterAIOCB {
typedef struct BDRVGlusterState {
struct glfs *glfs;
struct glfs_fd *fd;
+ int debug_level;
} BDRVGlusterState;
typedef struct GlusterConf {
@@ -32,6 +33,7 @@ typedef struct GlusterConf {
char *volname;
char *image;
char *transport;
+ int debug_level;
} GlusterConf;
static void qemu_gluster_gconf_free(GlusterConf *gconf)
@@ -194,11 +196,7 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename,
goto out;
}
- /*
- * TODO: Use GF_LOG_ERROR instead of hard code value of 4 here when
- * GlusterFS makes GF_LOG_* macros available to libgfapi users.
- */
- ret = glfs_set_logging(glfs, "-", 4);
+ ret = glfs_set_logging(glfs, "-", gconf->debug_level);
if (ret < 0) {
goto out;
}
@@ -256,16 +254,26 @@ static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
qemu_bh_schedule(acb->bh);
}
+#define GLUSTER_OPT_FILENAME "filename"
+#define GLUSTER_OPT_DEBUG "debug"
+#define GLUSTER_DEBUG_DEFAULT 4
+#define GLUSTER_DEBUG_MAX 9
+
/* TODO Convert to fine grained options */
static QemuOptsList runtime_opts = {
.name = "gluster",
.head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head),
.desc = {
{
- .name = "filename",
+ .name = GLUSTER_OPT_FILENAME,
.type = QEMU_OPT_STRING,
.help = "URL to the gluster image",
},
+ {
+ .name = GLUSTER_OPT_DEBUG,
+ .type = QEMU_OPT_NUMBER,
+ .help = "Gluster log level, valid range is 0-9",
+ },
{ /* end of list */ }
},
};
@@ -306,8 +314,17 @@ static int qemu_gluster_open(BlockDriverState *bs, QDict *options,
goto out;
}
- filename = qemu_opt_get(opts, "filename");
+ filename = qemu_opt_get(opts, GLUSTER_OPT_FILENAME);
+ s->debug_level = qemu_opt_get_number(opts, GLUSTER_OPT_DEBUG,
+ GLUSTER_DEBUG_DEFAULT);
+ if (s->debug_level < 0) {
+ s->debug_level = 0;
+ } else if (s->debug_level > GLUSTER_DEBUG_MAX) {
+ s->debug_level = GLUSTER_DEBUG_MAX;
+ }
+
+ gconf->debug_level = s->debug_level;
s->glfs = qemu_gluster_init(gconf, filename, errp);
if (!s->glfs) {
ret = -errno;
@@ -346,6 +363,7 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
BlockReopenQueue *queue, Error **errp)
{
int ret = 0;
+ BDRVGlusterState *s;
BDRVGlusterReopenState *reop_s;
GlusterConf *gconf = NULL;
int open_flags = 0;
@@ -353,6 +371,8 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
assert(state != NULL);
assert(state->bs != NULL);
+ s = state->bs->opaque;
+
state->opaque = g_new0(BDRVGlusterReopenState, 1);
reop_s = state->opaque;
@@ -360,6 +380,7 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
gconf = g_new0(GlusterConf, 1);
+ gconf->debug_level = s->debug_level;
reop_s->glfs = qemu_gluster_init(gconf, state->bs->filename, errp);
if (reop_s->glfs == NULL) {
ret = -errno;
@@ -485,6 +506,14 @@ static int qemu_gluster_create(const char *filename,
char *tmp = NULL;
GlusterConf *gconf = g_new0(GlusterConf, 1);
+ gconf->debug_level = qemu_opt_get_number_del(opts, GLUSTER_OPT_DEBUG,
+ GLUSTER_DEBUG_DEFAULT);
+ if (gconf->debug_level < 0) {
+ gconf->debug_level = 0;
+ } else if (gconf->debug_level > GLUSTER_DEBUG_MAX) {
+ gconf->debug_level = GLUSTER_DEBUG_MAX;
+ }
+
glfs = qemu_gluster_init(gconf, filename, errp);
if (!glfs) {
ret = -errno;
@@ -692,6 +721,11 @@ static QemuOptsList qemu_gluster_create_opts = {
.type = QEMU_OPT_STRING,
.help = "Preallocation mode (allowed values: off, full)"
},
+ {
+ .name = GLUSTER_OPT_DEBUG,
+ .type = QEMU_OPT_NUMBER,
+ .help = "Gluster log level, valid range is 0-9",
+ },
{ /* end of list */ }
}
};
--
1.9.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.7 1/1] block/gluster: add support for selecting debug logging level
2016-04-07 21:24 [Qemu-devel] [PATCH for-2.7 1/1] block/gluster: add support for selecting debug logging level Jeff Cody
@ 2016-04-08 10:49 ` Niels de Vos
0 siblings, 0 replies; 2+ messages in thread
From: Niels de Vos @ 2016-04-08 10:49 UTC (permalink / raw)
To: Jeff Cody; +Cc: qemu-block, qemu-devel, kwolf
On Thu, Apr 07, 2016 at 05:24:19PM -0400, Jeff Cody wrote:
> This adds commandline support for the logging level of the
> gluster protocol driver, output to stdout. The option is 'debug',
> e.g.:
>
> -drive filename=gluster://192.168.15.180/gv2/test.qcow2,debug=9
>
> Debug levels are 0-9, with 9 being the most verbose, and 0 representing
> no debugging output. The default is the same as it was before, which
> is a level of 4. The current logging levels defined in the gluster
> source are:
>
> 0 - None
> 1 - Emergency
> 2 - Alert
> 3 - Critical
> 4 - Error
> 5 - Warning
> 6 - Notice
> 7 - Info
> 8 - Debug
> 9 - Trace
>
> (From: glusterfs/logging.h)
>
> Signed-off-by: Jeff Cody <jcody@redhat.com>
Thanks, this is something I wanted to get done for a long time already.
Reviewed-by: Niels de Vos <ndevos@redhat.com>
> ---
> block/gluster.c | 48 +++++++++++++++++++++++++++++++++++++++++-------
> 1 file changed, 41 insertions(+), 7 deletions(-)
>
> diff --git a/block/gluster.c b/block/gluster.c
> index 51e154c..c6d4892 100644
> --- a/block/gluster.c
> +++ b/block/gluster.c
> @@ -24,6 +24,7 @@ typedef struct GlusterAIOCB {
> typedef struct BDRVGlusterState {
> struct glfs *glfs;
> struct glfs_fd *fd;
> + int debug_level;
> } BDRVGlusterState;
>
> typedef struct GlusterConf {
> @@ -32,6 +33,7 @@ typedef struct GlusterConf {
> char *volname;
> char *image;
> char *transport;
> + int debug_level;
> } GlusterConf;
>
> static void qemu_gluster_gconf_free(GlusterConf *gconf)
> @@ -194,11 +196,7 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename,
> goto out;
> }
>
> - /*
> - * TODO: Use GF_LOG_ERROR instead of hard code value of 4 here when
> - * GlusterFS makes GF_LOG_* macros available to libgfapi users.
> - */
> - ret = glfs_set_logging(glfs, "-", 4);
> + ret = glfs_set_logging(glfs, "-", gconf->debug_level);
> if (ret < 0) {
> goto out;
> }
> @@ -256,16 +254,26 @@ static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
> qemu_bh_schedule(acb->bh);
> }
>
> +#define GLUSTER_OPT_FILENAME "filename"
> +#define GLUSTER_OPT_DEBUG "debug"
> +#define GLUSTER_DEBUG_DEFAULT 4
> +#define GLUSTER_DEBUG_MAX 9
> +
> /* TODO Convert to fine grained options */
> static QemuOptsList runtime_opts = {
> .name = "gluster",
> .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head),
> .desc = {
> {
> - .name = "filename",
> + .name = GLUSTER_OPT_FILENAME,
> .type = QEMU_OPT_STRING,
> .help = "URL to the gluster image",
> },
> + {
> + .name = GLUSTER_OPT_DEBUG,
> + .type = QEMU_OPT_NUMBER,
> + .help = "Gluster log level, valid range is 0-9",
> + },
> { /* end of list */ }
> },
> };
> @@ -306,8 +314,17 @@ static int qemu_gluster_open(BlockDriverState *bs, QDict *options,
> goto out;
> }
>
> - filename = qemu_opt_get(opts, "filename");
> + filename = qemu_opt_get(opts, GLUSTER_OPT_FILENAME);
>
> + s->debug_level = qemu_opt_get_number(opts, GLUSTER_OPT_DEBUG,
> + GLUSTER_DEBUG_DEFAULT);
> + if (s->debug_level < 0) {
> + s->debug_level = 0;
> + } else if (s->debug_level > GLUSTER_DEBUG_MAX) {
> + s->debug_level = GLUSTER_DEBUG_MAX;
> + }
> +
> + gconf->debug_level = s->debug_level;
> s->glfs = qemu_gluster_init(gconf, filename, errp);
> if (!s->glfs) {
> ret = -errno;
> @@ -346,6 +363,7 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
> BlockReopenQueue *queue, Error **errp)
> {
> int ret = 0;
> + BDRVGlusterState *s;
> BDRVGlusterReopenState *reop_s;
> GlusterConf *gconf = NULL;
> int open_flags = 0;
> @@ -353,6 +371,8 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
> assert(state != NULL);
> assert(state->bs != NULL);
>
> + s = state->bs->opaque;
> +
> state->opaque = g_new0(BDRVGlusterReopenState, 1);
> reop_s = state->opaque;
>
> @@ -360,6 +380,7 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
>
> gconf = g_new0(GlusterConf, 1);
>
> + gconf->debug_level = s->debug_level;
> reop_s->glfs = qemu_gluster_init(gconf, state->bs->filename, errp);
> if (reop_s->glfs == NULL) {
> ret = -errno;
> @@ -485,6 +506,14 @@ static int qemu_gluster_create(const char *filename,
> char *tmp = NULL;
> GlusterConf *gconf = g_new0(GlusterConf, 1);
>
> + gconf->debug_level = qemu_opt_get_number_del(opts, GLUSTER_OPT_DEBUG,
> + GLUSTER_DEBUG_DEFAULT);
> + if (gconf->debug_level < 0) {
> + gconf->debug_level = 0;
> + } else if (gconf->debug_level > GLUSTER_DEBUG_MAX) {
> + gconf->debug_level = GLUSTER_DEBUG_MAX;
> + }
> +
> glfs = qemu_gluster_init(gconf, filename, errp);
> if (!glfs) {
> ret = -errno;
> @@ -692,6 +721,11 @@ static QemuOptsList qemu_gluster_create_opts = {
> .type = QEMU_OPT_STRING,
> .help = "Preallocation mode (allowed values: off, full)"
> },
> + {
> + .name = GLUSTER_OPT_DEBUG,
> + .type = QEMU_OPT_NUMBER,
> + .help = "Gluster log level, valid range is 0-9",
> + },
> { /* end of list */ }
> }
> };
> --
> 1.9.3
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-04-08 10:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-07 21:24 [Qemu-devel] [PATCH for-2.7 1/1] block/gluster: add support for selecting debug logging level Jeff Cody
2016-04-08 10:49 ` Niels de Vos
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.