qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Roman Kagan <rkagan@virtuozzo.com>
To: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Cc: "kwolf@redhat.com" <kwolf@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	"berrange@redhat.com" <berrange@redhat.com>,
	Denis Lunev <den@virtuozzo.com>,
	"qemu-block@nongnu.org" <qemu-block@nongnu.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"mreitz@redhat.com" <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 6/7] iotests: amend QEMU NBD process synchronization
Date: Mon, 17 Jun 2019 12:38:34 +0000	[thread overview]
Message-ID: <20190617123831.GC32624@rkaganb.sw.ru> (raw)
In-Reply-To: <1560276131-683243-7-git-send-email-andrey.shinkevich@virtuozzo.com>

On Tue, Jun 11, 2019 at 09:02:10PM +0300, Andrey Shinkevich wrote:
> Processes are dying harder under the Valgring. It results in counting
> the dying process as a newborn one. Make it sure that old NBD job get
> finished before starting a new one.

I think this log message is confusing.

The problem this patch addresses is that nbd_server_stop only sends a
signal to the nbd process and immediately returns, without waiting for
it to actually terminate.  The next operation is often starting a new
instance of nbd; this races with the termination of the old one, and may
result in various failures (like nbd_server_start_* taking the
terminating nbd as the one just started, or the starting nbd
encountering a busy listening socket).

Without valgrind the race window is very small and the problem didn't
surface for long.  However, under valgrind process termination takes
much longer so the race bites every test run.

Since nbd is run in a background job of the test, record the nbd pid at
the daemon start in a shell variable and perform a wait for it when
terminating it.

Roman.

> Suggested-by: Roman Kagan <rkagan@virtuozzo.com>
> Signed-off-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
> ---
>  tests/qemu-iotests/common.nbd | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/tests/qemu-iotests/common.nbd b/tests/qemu-iotests/common.nbd
> index 25fc9ff..e3dcc60 100644
> --- a/tests/qemu-iotests/common.nbd
> +++ b/tests/qemu-iotests/common.nbd
> @@ -22,6 +22,7 @@
>  nbd_unix_socket="${TEST_DIR}/qemu-nbd.sock"
>  nbd_tcp_addr="127.0.0.1"
>  nbd_pid_file="${TEST_DIR}/qemu-nbd.pid"
> +nbd_job_pid=""
>  
>  nbd_server_stop()
>  {
> @@ -33,6 +34,9 @@ nbd_server_stop()
>              kill "$NBD_PID"
>          fi
>      fi
> +    if [ -n "$nbd_job_pid" ] && kill -s 0 "$nbd_job_pid" 2>/dev/null; then
> +        wait "$nbd_job_pid"
> +    fi
>      rm -f "$nbd_unix_socket"
>  }
>  
> @@ -61,6 +65,7 @@ nbd_server_start_unix_socket()
>  {
>      nbd_server_stop
>      $QEMU_NBD -v -t -k "$nbd_unix_socket" "$@" &
> +    nbd_job_pid=$!
>      nbd_server_wait_for_unix_socket $!
>  }
>  
> @@ -105,5 +110,6 @@ nbd_server_start_tcp_socket()
>  {
>      nbd_server_stop
>      $QEMU_NBD -v -t -b $nbd_tcp_addr -p $nbd_tcp_port "$@" &
> +    nbd_job_pid=$!
>      nbd_server_wait_for_tcp_socket $!
>  }
> -- 
> 1.8.3.1
> 


  parent reply	other threads:[~2019-06-17 12:47 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-11 18:02 [Qemu-devel] [PATCH v2 0/7] Allow Valgrind checking all QEMU processes Andrey Shinkevich
2019-06-11 18:02 ` [Qemu-devel] [PATCH v2 1/7] iotests: allow " Andrey Shinkevich
2019-06-13  9:44   ` Vladimir Sementsov-Ogievskiy
2019-06-27 15:08     ` Andrey Shinkevich
2019-06-13  9:45   ` Vladimir Sementsov-Ogievskiy
2019-06-11 18:02 ` [Qemu-devel] [PATCH v2 2/7] iotests: exclude killed processes from running under Valgrind Andrey Shinkevich
2019-06-13  9:47   ` Vladimir Sementsov-Ogievskiy
2019-06-17 11:57     ` Roman Kagan
2019-06-17 11:15   ` Kevin Wolf
2019-06-17 12:18     ` Roman Kagan
2019-06-17 12:53       ` Kevin Wolf
2019-06-17 13:20         ` Roman Kagan
2019-06-17 14:51           ` Kevin Wolf
2019-06-24 16:55             ` Andrey Shinkevich
2019-06-11 18:02 ` [Qemu-devel] [PATCH v2 3/7] iotests: Valgrind fails to work with nonexistent directory Andrey Shinkevich
2019-06-13  9:52   ` Vladimir Sementsov-Ogievskiy
2019-06-17 11:22     ` Kevin Wolf
2019-06-11 18:02 ` [Qemu-devel] [PATCH v2 4/7] iotests: extended timeout under Valgrind Andrey Shinkevich
2019-06-13  9:54   ` Vladimir Sementsov-Ogievskiy
2019-06-11 18:02 ` [Qemu-devel] [PATCH v2 5/7] iotests: extend sleeping time " Andrey Shinkevich
2019-06-13  9:55   ` Vladimir Sementsov-Ogievskiy
2019-06-11 18:02 ` [Qemu-devel] [PATCH v2 6/7] iotests: amend QEMU NBD process synchronization Andrey Shinkevich
2019-06-13  9:59   ` Vladimir Sementsov-Ogievskiy
2019-06-17 12:45     ` Roman Kagan
2019-06-17 12:38   ` Roman Kagan [this message]
2019-06-11 18:02 ` [Qemu-devel] [PATCH v2 7/7] iotests: new file to suppress Valgrind errors Andrey Shinkevich
2019-06-13 10:06   ` Vladimir Sementsov-Ogievskiy
2019-06-24 16:55     ` Andrey Shinkevich
2019-06-24 17:09       ` Eric Blake
2019-06-24 17:23         ` Andrey Shinkevich
2019-06-17 11:45   ` Kevin Wolf
2019-06-24 16:55     ` Andrey Shinkevich
2019-06-25  8:13       ` Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190617123831.GC32624@rkaganb.sw.ru \
    --to=rkagan@virtuozzo.com \
    --cc=andrey.shinkevich@virtuozzo.com \
    --cc=berrange@redhat.com \
    --cc=den@virtuozzo.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).