qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/1] RFC: implement reopen for nbd driver
@ 2019-09-30 21:38 Maxim Levitsky
  2019-09-30 21:38 ` [PATCH 1/1] nbd: add empty .bdrv_reopen_prepare Maxim Levitsky
  2019-09-30 22:38 ` [PATCH 0/1] RFC: implement reopen for nbd driver no-reply
  0 siblings, 2 replies; 4+ messages in thread
From: Maxim Levitsky @ 2019-09-30 21:38 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Maxim Levitsky, qemu-block, Max Reitz

Hi,
It looks like nbd driver doesn't have support
for reopen, which doesn't allow to commit qcow2 snapshots
which have nbd export as a base file.
This is because the base is opened read-only, and only
when commit job starts it reopens the base read-write.

Now after talking with Eric Blake, I understood that
nbd doesn't have the ability to tell the server to open read/only
and then change this on the fly, thus even when opening
an export as read-only the server will still allow writes.

This means that an empty .bdrv_reopen_prepare
(well except checking that export is not read-only) is supposed
to be enough.

Sending this as RFC, since I am not sure that this is the correct
solution.

Best regards,
	Maxim Levitsky

Maxim Levitsky (1):
  nbd: add empty .bdrv_reopen_prepare

 block/nbd.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

-- 
2.17.2



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/1] nbd: add empty .bdrv_reopen_prepare
  2019-09-30 21:38 [PATCH 0/1] RFC: implement reopen for nbd driver Maxim Levitsky
@ 2019-09-30 21:38 ` Maxim Levitsky
  2019-10-07 10:49   ` Max Reitz
  2019-09-30 22:38 ` [PATCH 0/1] RFC: implement reopen for nbd driver no-reply
  1 sibling, 1 reply; 4+ messages in thread
From: Maxim Levitsky @ 2019-09-30 21:38 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Maxim Levitsky, qemu-block, Max Reitz

Fixes commit job / qemu-img commit, when
commiting qcow2 file which is based on nbd export.


Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1718727

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
---
 block/nbd.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/block/nbd.c b/block/nbd.c
index 813c40d8f0..fd78e5f330 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -1158,6 +1158,18 @@ static int coroutine_fn nbd_client_co_block_status(
         BDRV_BLOCK_OFFSET_VALID;
 }
 
+static int nbd_client_reopen_prepare(BDRVReopenState *state,
+                                     BlockReopenQueue *queue, Error **errp)
+{
+    BDRVNBDState *s = (BDRVNBDState *)state->bs->opaque;
+
+    if ((state->flags & BDRV_O_RDWR) && (s->info.flags & NBD_FLAG_READ_ONLY)) {
+        error_setg(errp, "Can't reopen read-only NBD mount as read/write");
+        return -EACCES;
+    }
+    return 0;
+}
+
 static void nbd_client_close(BlockDriverState *bs)
 {
     BDRVNBDState *s = (BDRVNBDState *)bs->opaque;
@@ -1798,6 +1810,7 @@ static BlockDriver bdrv_nbd = {
     .instance_size              = sizeof(BDRVNBDState),
     .bdrv_parse_filename        = nbd_parse_filename,
     .bdrv_file_open             = nbd_open,
+    .bdrv_reopen_prepare        = nbd_client_reopen_prepare,
     .bdrv_co_preadv             = nbd_client_co_preadv,
     .bdrv_co_pwritev            = nbd_client_co_pwritev,
     .bdrv_co_pwrite_zeroes      = nbd_client_co_pwrite_zeroes,
@@ -1820,6 +1833,7 @@ static BlockDriver bdrv_nbd_tcp = {
     .instance_size              = sizeof(BDRVNBDState),
     .bdrv_parse_filename        = nbd_parse_filename,
     .bdrv_file_open             = nbd_open,
+    .bdrv_reopen_prepare        = nbd_client_reopen_prepare,
     .bdrv_co_preadv             = nbd_client_co_preadv,
     .bdrv_co_pwritev            = nbd_client_co_pwritev,
     .bdrv_co_pwrite_zeroes      = nbd_client_co_pwrite_zeroes,
@@ -1842,6 +1856,7 @@ static BlockDriver bdrv_nbd_unix = {
     .instance_size              = sizeof(BDRVNBDState),
     .bdrv_parse_filename        = nbd_parse_filename,
     .bdrv_file_open             = nbd_open,
+    .bdrv_reopen_prepare        = nbd_client_reopen_prepare,
     .bdrv_co_preadv             = nbd_client_co_preadv,
     .bdrv_co_pwritev            = nbd_client_co_pwritev,
     .bdrv_co_pwrite_zeroes      = nbd_client_co_pwrite_zeroes,
-- 
2.17.2



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/1] RFC: implement reopen for nbd driver
  2019-09-30 21:38 [PATCH 0/1] RFC: implement reopen for nbd driver Maxim Levitsky
  2019-09-30 21:38 ` [PATCH 1/1] nbd: add empty .bdrv_reopen_prepare Maxim Levitsky
@ 2019-09-30 22:38 ` no-reply
  1 sibling, 0 replies; 4+ messages in thread
From: no-reply @ 2019-09-30 22:38 UTC (permalink / raw)
  To: mlevitsk; +Cc: kwolf, mreitz, qemu-devel, qemu-block, mlevitsk

Patchew URL: https://patchew.org/QEMU/20190930213820.29777-1-mlevitsk@redhat.com/



Hi,

This series failed the asan build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
export ARCH=x86_64
make docker-image-fedora V=1 NETWORK=1
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
=== TEST SCRIPT END ===




The full log is available at
http://patchew.org/logs/20190930213820.29777-1-mlevitsk@redhat.com/testing.asan/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/1] nbd: add empty .bdrv_reopen_prepare
  2019-09-30 21:38 ` [PATCH 1/1] nbd: add empty .bdrv_reopen_prepare Maxim Levitsky
@ 2019-10-07 10:49   ` Max Reitz
  0 siblings, 0 replies; 4+ messages in thread
From: Max Reitz @ 2019-10-07 10:49 UTC (permalink / raw)
  To: Maxim Levitsky, qemu-devel; +Cc: Kevin Wolf, qemu-block


[-- Attachment #1.1: Type: text/plain, Size: 462 bytes --]

On 30.09.19 23:38, Maxim Levitsky wrote:
> Fixes commit job / qemu-img commit, when
> commiting qcow2 file which is based on nbd export.
> 
> 
> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1718727
> 
> Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
> ---
>  block/nbd.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)

Thanks, applied to my block branch:

https://git.xanclic.moe/XanClic/qemu/commits/branch/block

Max


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-10-07 10:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-30 21:38 [PATCH 0/1] RFC: implement reopen for nbd driver Maxim Levitsky
2019-09-30 21:38 ` [PATCH 1/1] nbd: add empty .bdrv_reopen_prepare Maxim Levitsky
2019-10-07 10:49   ` Max Reitz
2019-09-30 22:38 ` [PATCH 0/1] RFC: implement reopen for nbd driver no-reply

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).