On 8/15/23 12:40, Denis V. Lunev wrote:
On 8/14/23 16:14, Kevin Wolf wrote:
Am 17.07.2023 um 16:55 hat Denis V. Lunev geschrieben:
Commit e6df58a5578fee7a50bbf36f4a50a2781cff855d
Author: Hanna Reitz <[email protected]>
Date: Wed May 8 23:18:18 2019 +0200
qemu-nbd: Do not close stderr
has introduced an interesting regression. Original behavior of
ssh somehost qemu-nbd /home/den/tmp/file -f raw --fork
was the following:
* qemu-nbd was started as a daemon
* the command execution is done and ssh exited with success
The patch has changed this behavior and 'ssh' command now hangs
forever.
According to the normal specification of the daemon() call, we should
endup with STDERR pointing to /dev/null. That should be done at the
very end of the successful startup sequence when the pipe to the
bootstrap process (used for diagnostics) is no longer needed.
This could be achived in the same way as done for 'qemu-nbd -c' case.
That was commit 0eaf453e, also fixing up e6df58a5. STDOUT copying to
STDERR does the trick.
This also leads to proper 'ssh' connection closing which fixes my
original problem.
Signed-off-by: Denis V. Lunev <[email protected]>
CC: Eric Blake <[email protected]>
CC: Vladimir Sementsov-Ogievskiy <[email protected]>
CC: Hanna Reitz <[email protected]>
CC: <[email protected]>
This broke qemu-iotests 233 (Eric, please make sure to run the full
qemu-iotests suite before sending block related pull requests):
--- /home/kwolf/source/qemu/tests/qemu-iotests/233.out
+++ /home/kwolf/source/qemu/build-clang/scratch/raw-file-233/233.out.bad
@@ -99,14 +99,4 @@
qemu-nbd: TLS handshake failed: The TLS connection was non-properly
terminated.
== final server log ==
-qemu-nbd: option negotiation failed: Failed to read opts magic:
Cannot read from TLS channel: Software caused connection abort
-qemu-nbd: option negotiation failed: Failed to read opts magic:
Cannot read from TLS channel: Software caused connection abort
-qemu-nbd: option negotiation failed: Verify failed: No certificate
was found.
-qemu-nbd: option negotiation failed: Verify failed: No certificate
was found.
-qemu-nbd: option negotiation failed: TLS x509 authz check for
DISTINGUISHED-NAME is denied
-qemu-nbd: option negotiation failed: TLS x509 authz check for
DISTINGUISHED-NAME is denied
-qemu-nbd: option negotiation failed: Failed to read opts magic:
Cannot read from TLS channel: Software caused connection abort
-qemu-nbd: option negotiation failed: Failed to read opts magic:
Cannot read from TLS channel: Software caused connection abort
-qemu-nbd: option negotiation failed: TLS handshake failed: An
illegal parameter has been received.
-qemu-nbd: option negotiation failed: TLS handshake failed: An
illegal parameter has been received.
*** done
Do we really want to lose these error messages? This looks wrong to me.
Kevin
In that case likely we need to extend -v option behavior
and translate these messages in that case.
I'll take a look.
Thank you for the patience,
Den
Hi!
Small side note.
I am 100% sure that I have run this set of tests and
there was no fault. I have re-run them and once
again has not get the fault :-)
The reason for that is quite interesting:
* the test does not start due to the absence of the
'certool' utility from gnutls
This brings the very important question.
Should we *FAIL* when important utility is missed
or skip? I believe that our goal is to fail to avoid such
cases.
What do you think?
Den