mirror of https://github.com/xemu-project/xemu.git
block/gluster: add support for selecting debug logging level
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) Reviewed-by: Niels de Vos <ndevos@redhat.com> Signed-off-by: Jeff Cody <jcody@redhat.com>
This commit is contained in:
parent
ff04198bf5
commit
7eac868a50
|
@ -25,6 +25,7 @@ typedef struct BDRVGlusterState {
|
|||
struct glfs *glfs;
|
||||
struct glfs_fd *fd;
|
||||
bool supports_seek_data;
|
||||
int debug_level;
|
||||
} BDRVGlusterState;
|
||||
|
||||
typedef struct GlusterConf {
|
||||
|
@ -33,6 +34,7 @@ typedef struct GlusterConf {
|
|||
char *volname;
|
||||
char *image;
|
||||
char *transport;
|
||||
int debug_level;
|
||||
} GlusterConf;
|
||||
|
||||
static void qemu_gluster_gconf_free(GlusterConf *gconf)
|
||||
|
@ -195,11 +197,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;
|
||||
}
|
||||
|
@ -257,16 +255,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 */ }
|
||||
},
|
||||
};
|
||||
|
@ -329,8 +337,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;
|
||||
|
@ -388,6 +405,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;
|
||||
|
@ -395,6 +413,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;
|
||||
|
||||
|
@ -402,6 +422,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;
|
||||
|
@ -535,6 +556,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;
|
||||
|
@ -919,6 +948,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 */ }
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue