qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/2] vl: Fix -drive / -blockdev persistent reservation management
@ 2019-06-04 15:12 Markus Armbruster
  2019-06-04 15:12 ` [Qemu-devel] [PATCH 1/2] " Markus Armbruster
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Markus Armbruster @ 2019-06-04 15:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, mprivozn

This is a minimal regression fix.  There's more work to do nearby.
Left for another day.

Markus Armbruster (2):
  vl: Fix -drive / -blockdev persistent reservation management
  vl: Document why objects are delayed

 vl.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

-- 
2.21.0



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

* [Qemu-devel] [PATCH 1/2] vl: Fix -drive / -blockdev persistent reservation management
  2019-06-04 15:12 [Qemu-devel] [PATCH 0/2] vl: Fix -drive / -blockdev persistent reservation management Markus Armbruster
@ 2019-06-04 15:12 ` Markus Armbruster
  2019-06-04 15:12 ` [Qemu-devel] [PATCH 2/2] vl: Document why objects are delayed Markus Armbruster
  2019-06-04 15:22 ` [Qemu-devel] [PATCH 0/2] vl: Fix -drive / -blockdev persistent reservation management Michal Privoznik
  2 siblings, 0 replies; 4+ messages in thread
From: Markus Armbruster @ 2019-06-04 15:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, mprivozn

qemu-system-FOO's main() acts on command line arguments in its own
idiosyncratic order.  There's not much method to its madness.
Whenever we find a case where one kind of command line argument needs
to refer to something created for another kind later, we rejigger the
order.

Recent commit cda4aa9a5a "vl: Create block backends before setting
machine properties" was such a rejigger.  Block backends are now
created before "delayed" objects.  This broke persistent reservation
management.  Reproducer:

    $ qemu-system-x86_64 -object pr-manager-helper,id=pr-helper0,path=/tmp/pr-helper0.sock-drive -drive file=/dev/mapper/crypt,file.pr-manager=pr-helper0,format=raw,if=none,id=drive-scsi0-0-0-2
    qemu-system-x86_64: -drive file=/dev/mapper/crypt,file.pr-manager=pr-helper0,format=raw,if=none,id=drive-scsi0-0-0-2: No persistent reservation manager with id 'pr-helper0'

The delayed pr-manager-helper object is created too late for use by
-drive or -blockdev.  Normal objects are still created in time.

pr-manager-helper has always been a delayed object (commit 7c9e527659
"scsi, file-posix: add support for persistent reservation
management").  Turns out there's no real reason for that.  Make it a
normal object.

Fixes: cda4aa9a5a08777cf13e164c0543bd4888b8adce
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 vl.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/vl.c b/vl.c
index f023a8ca73..cc6246d2af 100644
--- a/vl.c
+++ b/vl.c
@@ -2751,8 +2751,7 @@ static bool object_create_initial(const char *type, QemuOpts *opts)
         exit(0);
     }
 
-    if (g_str_equal(type, "rng-egd") ||
-        g_str_has_prefix(type, "pr-manager-")) {
+    if (g_str_equal(type, "rng-egd")) {
         return false;
     }
 
-- 
2.21.0



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

* [Qemu-devel] [PATCH 2/2] vl: Document why objects are delayed
  2019-06-04 15:12 [Qemu-devel] [PATCH 0/2] vl: Fix -drive / -blockdev persistent reservation management Markus Armbruster
  2019-06-04 15:12 ` [Qemu-devel] [PATCH 1/2] " Markus Armbruster
@ 2019-06-04 15:12 ` Markus Armbruster
  2019-06-04 15:22 ` [Qemu-devel] [PATCH 0/2] vl: Fix -drive / -blockdev persistent reservation management Michal Privoznik
  2 siblings, 0 replies; 4+ messages in thread
From: Markus Armbruster @ 2019-06-04 15:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, mprivozn

Objects should not be "delayed" without a reason, as the previous
commit demonstrates.  The remaining ones have reasons.  State them.
and demand future ones come with such a statement.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 vl.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/vl.c b/vl.c
index cc6246d2af..cd1fbc4cdc 100644
--- a/vl.c
+++ b/vl.c
@@ -2751,19 +2751,25 @@ static bool object_create_initial(const char *type, QemuOpts *opts)
         exit(0);
     }
 
+    /*
+     * Objects should not be made "delayed" without a reason.  If you
+     * add one, state the reason in a comment!
+     */
+
+    /* Reason: rng-egd property "chardev" */
     if (g_str_equal(type, "rng-egd")) {
         return false;
     }
 
 #if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX)
+    /* Reason: cryptodev-vhost-user property "chardev" */
     if (g_str_equal(type, "cryptodev-vhost-user")) {
         return false;
     }
 #endif
 
     /*
-     * return false for concrete netfilters since
-     * they depend on netdevs already existing
+     * Reason: filter-* property "netdev" etc.
      */
     if (g_str_equal(type, "filter-buffer") ||
         g_str_equal(type, "filter-dump") ||
-- 
2.21.0



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

* Re: [Qemu-devel] [PATCH 0/2] vl: Fix -drive / -blockdev persistent reservation management
  2019-06-04 15:12 [Qemu-devel] [PATCH 0/2] vl: Fix -drive / -blockdev persistent reservation management Markus Armbruster
  2019-06-04 15:12 ` [Qemu-devel] [PATCH 1/2] " Markus Armbruster
  2019-06-04 15:12 ` [Qemu-devel] [PATCH 2/2] vl: Document why objects are delayed Markus Armbruster
@ 2019-06-04 15:22 ` Michal Privoznik
  2 siblings, 0 replies; 4+ messages in thread
From: Michal Privoznik @ 2019-06-04 15:22 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: pbonzini

On 6/4/19 5:12 PM, Markus Armbruster wrote:
> This is a minimal regression fix.  There's more work to do nearby.
> Left for another day.
> 
> Markus Armbruster (2):
>    vl: Fix -drive / -blockdev persistent reservation management
>    vl: Document why objects are delayed
> 
>   vl.c | 13 +++++++++----
>   1 file changed, 9 insertions(+), 4 deletions(-)
> 

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

Thanks for fixing this.

Michal


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

end of thread, other threads:[~2019-06-04 15:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-04 15:12 [Qemu-devel] [PATCH 0/2] vl: Fix -drive / -blockdev persistent reservation management Markus Armbruster
2019-06-04 15:12 ` [Qemu-devel] [PATCH 1/2] " Markus Armbruster
2019-06-04 15:12 ` [Qemu-devel] [PATCH 2/2] vl: Document why objects are delayed Markus Armbruster
2019-06-04 15:22 ` [Qemu-devel] [PATCH 0/2] vl: Fix -drive / -blockdev persistent reservation management Michal Privoznik

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).