From fefee85da055e100ea86d15274106f78502c2819 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Thu, 24 Sep 2020 17:26:55 +0200 Subject: [PATCH] nbd: Add writethrough to block-export-add qemu-nbd allows use of writethrough cache modes, which mean that write requests made through NBD will cause a flush before they complete. Expose the same functionality in block-export-add. Signed-off-by: Kevin Wolf Reviewed-by: Max Reitz Message-Id: <20200924152717.287415-10-kwolf@redhat.com> Acked-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- blockdev-nbd.c | 6 +++++- qapi/block-export.json | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/blockdev-nbd.c b/blockdev-nbd.c index 41d5542987..09247a8ded 100644 --- a/blockdev-nbd.c +++ b/blockdev-nbd.c @@ -216,9 +216,13 @@ BlockExport *nbd_export_create(BlockExportOptions *exp_args, Error **errp) goto out; } + if (!exp_args->has_writethrough) { + exp_args->writethrough = false; + } + exp = nbd_export_new(bs, arg->name, arg->description, arg->bitmap, !arg->writable, !arg->writable, - NULL, false, errp); + NULL, exp_args->writethrough, errp); if (!exp) { goto out; } diff --git a/qapi/block-export.json b/qapi/block-export.json index 8aa8a01fa6..ce66f278b2 100644 --- a/qapi/block-export.json +++ b/qapi/block-export.json @@ -170,10 +170,15 @@ # Describes a block export, i.e. how single node should be exported on an # external interface. # +# @writethrough: If true, caches are flushed after every write request to the +# export before completion is signalled. (since: 5.2; +# default: false) +# # Since: 4.2 ## { 'union': 'BlockExportOptions', - 'base': { 'type': 'BlockExportType' }, + 'base': { 'type': 'BlockExportType', + '*writethrough': 'bool' }, 'discriminator': 'type', 'data': { 'nbd': 'BlockExportOptionsNbd'