Skip to content

Commit

Permalink
block/nfs: Add create_opts
Browse files Browse the repository at this point in the history
The nfs protocol driver is capable of creating images, but did not
specify any creation options. Fix it.

A way to test this issue is the following:

$ qemu-img create -f nfs nfs://127.0.0.1/foo.qcow2 64M

Without this patch, it segfaults. With this patch, it does not. However,
this is not something that should really work; qemu-img should check
whether the parameter for the -f option (and -O for convert) is indeed a
format, and error out if it is not. Therefore, I am not making it an
iotest.

Cc: qemu-stable@nongnu.org
Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
XanClic authored and kevmw committed Dec 10, 2014
1 parent 1bcb15c commit fd75280
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions block/nfs.c
Expand Up @@ -409,6 +409,19 @@ static int nfs_file_open(BlockDriverState *bs, QDict *options, int flags,
return ret;
}

static QemuOptsList nfs_create_opts = {
.name = "nfs-create-opts",
.head = QTAILQ_HEAD_INITIALIZER(nfs_create_opts.head),
.desc = {
{
.name = BLOCK_OPT_SIZE,
.type = QEMU_OPT_SIZE,
.help = "Virtual disk size"
},
{ /* end of list */ }
}
};

static int nfs_file_create(const char *url, QemuOpts *opts, Error **errp)
{
int ret = 0;
Expand Down Expand Up @@ -470,6 +483,8 @@ static BlockDriver bdrv_nfs = {

.instance_size = sizeof(NFSClient),
.bdrv_needs_filename = true,
.create_opts = &nfs_create_opts,

.bdrv_has_zero_init = nfs_has_zero_init,
.bdrv_get_allocated_file_size = nfs_get_allocated_file_size,
.bdrv_truncate = nfs_file_truncate,
Expand Down

0 comments on commit fd75280

Please sign in to comment.