aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2017-08-04 12:44:22 +0200
committerKevin Wolf <kwolf@redhat.com>2017-08-08 15:19:16 +0200
commit809eb70ed6cfbfb6c198a25aed036849cc11944d (patch)
tree0bbb77953f6c7665588c637e55f51e2b3f2d5bcf
parent82346685b8cc0537819a3cf7fe2303b55b5f825f (diff)
block/null: Remove 'filename' option
This option was only added to allow 'null-co://' and 'null-aio://' as filenames, its value never served any actual purpose and was ignored. Nevertheless it was accepted as '-drive driver=null,filename=foo'. The correct way to enable the protocol prefixes (and that without adding a useless -drive option) is implementing .bdrv_parse_filename. This is what this patch does. Technically, this is an incompatible change, but the null block driver is only used for benchmarking, testing and debugging, and an option without effect isn't likely to be used by anyone anyway, so no bad effects are to be expected. Reported-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Jeff Cody <jcody@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
-rw-r--r--block/null.c31
-rw-r--r--tests/qemu-iotests/1362
2 files changed, 27 insertions, 6 deletions
diff --git a/block/null.c b/block/null.c
index 876f90965b..dd9c13f9ba 100644
--- a/block/null.c
+++ b/block/null.c
@@ -30,11 +30,6 @@ static QemuOptsList runtime_opts = {
.head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head),
.desc = {
{
- .name = "filename",
- .type = QEMU_OPT_STRING,
- .help = "",
- },
- {
.name = BLOCK_OPT_SIZE,
.type = QEMU_OPT_SIZE,
.help = "size of the null block",
@@ -54,6 +49,30 @@ static QemuOptsList runtime_opts = {
},
};
+static void null_co_parse_filename(const char *filename, QDict *options,
+ Error **errp)
+{
+ /* This functions only exists so that a null-co:// filename is accepted
+ * with the null-co driver. */
+ if (strcmp(filename, "null-co://")) {
+ error_setg(errp, "The only allowed filename for this driver is "
+ "'null-co://'");
+ return;
+ }
+}
+
+static void null_aio_parse_filename(const char *filename, QDict *options,
+ Error **errp)
+{
+ /* This functions only exists so that a null-aio:// filename is accepted
+ * with the null-aio driver. */
+ if (strcmp(filename, "null-aio://")) {
+ error_setg(errp, "The only allowed filename for this driver is "
+ "'null-aio://'");
+ return;
+ }
+}
+
static int null_file_open(BlockDriverState *bs, QDict *options, int flags,
Error **errp)
{
@@ -242,6 +261,7 @@ static BlockDriver bdrv_null_co = {
.instance_size = sizeof(BDRVNullState),
.bdrv_file_open = null_file_open,
+ .bdrv_parse_filename = null_co_parse_filename,
.bdrv_close = null_close,
.bdrv_getlength = null_getlength,
@@ -261,6 +281,7 @@ static BlockDriver bdrv_null_aio = {
.instance_size = sizeof(BDRVNullState),
.bdrv_file_open = null_file_open,
+ .bdrv_parse_filename = null_aio_parse_filename,
.bdrv_close = null_close,
.bdrv_getlength = null_getlength,
diff --git a/tests/qemu-iotests/136 b/tests/qemu-iotests/136
index 635b977552..4b994897af 100644
--- a/tests/qemu-iotests/136
+++ b/tests/qemu-iotests/136
@@ -75,7 +75,7 @@ sector = "%d"
drive_args.append("stats-account-failed=%s" %
(self.account_failed and "on" or "off"))
self.create_blkdebug_file()
- self.vm = iotests.VM().add_drive('blkdebug:%s:%s ' %
+ self.vm = iotests.VM().add_drive('blkdebug:%s:%s' %
(blkdebug_file, self.test_img),
','.join(drive_args))
self.vm.launch()