From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KxHBd-0002CT-JO for qemu-devel@nongnu.org; Tue, 04 Nov 2008 03:22:53 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KxHBb-0002Ba-RT for qemu-devel@nongnu.org; Tue, 04 Nov 2008 03:22:52 -0500 Received: from [199.232.76.173] (port=36929 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KxHBb-0002BH-LF for qemu-devel@nongnu.org; Tue, 04 Nov 2008 03:22:51 -0500 Received: from mx20.gnu.org ([199.232.41.8]:52913) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KxHBb-0005JE-EL for qemu-devel@nongnu.org; Tue, 04 Nov 2008 03:22:51 -0500 Received: from fmmailgate01.web.de ([217.72.192.221]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KxHBZ-0004CD-Fh for qemu-devel@nongnu.org; Tue, 04 Nov 2008 03:22:50 -0500 Message-ID: <49100654.6020108@web.de> Date: Tue, 04 Nov 2008 09:22:44 +0100 From: Jan Kiszka MIME-Version: 1.0 Subject: Re: [Qemu-devel] Re: [5578] Increase default IO timeout from 10ms to 5s References: <490B53F0.9040200@codemonkey.ws> <490DFAA2.7040900@web.de> <490F5942.6020100@codemonkey.ws> <490F60E4.1040304@web.de> <490F723E.7070308@web.de> <490F7489.6040403@codemonkey.ws> In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig3EABC80632BB8EE5AC1E9DDE" Sender: jan.kiszka@web.de Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: andrzej zaborowski Cc: qemu-devel@nongnu.org This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig3EABC80632BB8EE5AC1E9DDE Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable andrzej zaborowski wrote: > 2008/11/3 Anthony Liguori : >> Jan Kiszka wrote: >>> Jan Kiszka wrote: >>> >>> There is a race between the alarm_timer firing SIGALRM and >>> main_loop_wait reaching the safe harbor of select (with that infamous= 5 >>> second timeout). If the signal comes when already blocked in select, = it >>> will properly resume the latter immediately. But if the timer fired >>> BEFORE that point, host_alarm_handler will only set a flag that the h= ost >>> timer has fired, the actual rearming will be done AFTER return from >>> select. Ooops.... >>> >> Ah, so before this was causing the timer to potentially come 10ms late= r than >> it should have. I was hoping that this change would shake out this st= uff >> :-) >> >>> So, select should actually include the host timer as event. timerfd? >>> Unfortunately a recent Linux-only feature :-/. I don't think we can >>> rearm the timer from within the signal handler, at least not without >>> running all the pending qemu timers. And that is surely not a signal >>> handler job (qemu timer handler aren't thread-safe in general). >>> >>> Anyone any ideas? /me is thinking a bit more about it as well. >=20 > The select() man page on Linux mentions this race explicitely and > explains that pselect() is a solution. >=20 >> host_alarm_handler should write to a file descriptor instead of settin= g a >> flag. That file descriptor should then be select()'d on (just like we= do >> for SIGUSR2 in block-raw-posix.c). >=20 > Or you can do this. I think this is safer. Or what's the state of pselect on all supported platforms (including WIN32)? My man page even warns that the Linux kernel is not implementing it yet, though I don't think this still applies to recent 2.6.2x kernels. Jan --------------enig3EABC80632BB8EE5AC1E9DDE Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org iEYEARECAAYFAkkQBlcACgkQniDOoMHTA+nNNQCeLMiZsPnaW4WRSkVlOnUciftM r3MAn3CC+FvSq9OqTn2fsEEfalZH92+u =9xgK -----END PGP SIGNATURE----- --------------enig3EABC80632BB8EE5AC1E9DDE--