Skip to content

Commit

Permalink
rbd: Use bdrv_open options instead of filename
Browse files Browse the repository at this point in the history
This is only to convert the internal interface that is used for passing
the "filename" to be parsed, but converting to actual fine grained
options is left for another day, as it doesn't look trivial.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
  • Loading branch information
kevmw committed Apr 22, 2013
1 parent 60beb34 commit a9ccedc
Showing 1 changed file with 30 additions and 1 deletion.
31 changes: 30 additions & 1 deletion block/rbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,21 @@ static int qemu_rbd_aio_flush_cb(void *opaque)
return (s->qemu_aio_count > 0);
}

static int qemu_rbd_open(BlockDriverState *bs, const char *filename,
/* TODO Convert to fine grained options */
static QemuOptsList runtime_opts = {
.name = "rbd",
.head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head),
.desc = {
{
.name = "filename",
.type = QEMU_OPT_STRING,
.help = "Specification of the rbd image",
},
{ /* end of list */ }
},
};

static int qemu_rbd_open(BlockDriverState *bs, const char *dummy,
QDict *options, int flags)
{
BDRVRBDState *s = bs->opaque;
Expand All @@ -450,8 +464,23 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename,
char conf[RBD_MAX_CONF_SIZE];
char clientname_buf[RBD_MAX_CONF_SIZE];
char *clientname;
QemuOpts *opts;
Error *local_err = NULL;
const char *filename;
int r;

opts = qemu_opts_create_nofail(&runtime_opts);
qemu_opts_absorb_qdict(opts, options, &local_err);
if (error_is_set(&local_err)) {
qerror_report_err(local_err);
error_free(local_err);
qemu_opts_del(opts);
return -EINVAL;
}

filename = qemu_opt_get(opts, "filename");
qemu_opts_del(opts);

if (qemu_rbd_parsename(filename, pool, sizeof(pool),
snap_buf, sizeof(snap_buf),
s->name, sizeof(s->name),
Expand Down

0 comments on commit a9ccedc

Please sign in to comment.