From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54149) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ercS2-0003kO-V4 for qemu-devel@nongnu.org; Thu, 01 Mar 2018 23:37:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ercRy-0000m6-2U for qemu-devel@nongnu.org; Thu, 01 Mar 2018 23:37:46 -0500 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:49668 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ercRx-0000lG-TQ for qemu-devel@nongnu.org; Thu, 01 Mar 2018 23:37:41 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 75DDA87ABA for ; Fri, 2 Mar 2018 04:37:31 +0000 (UTC) Date: Fri, 2 Mar 2018 12:37:21 +0800 From: Peter Xu Message-ID: <20180302043721.GB27381@xz-mi> References: <20180301084438.13594-1-peterx@redhat.com> <20180301084438.13594-9-peterx@redhat.com> <20180301154638.GO14643@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v2 08/15] chardev: allow telnet gsource to switch gcontext List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= , qemu-devel@nongnu.org, Juan Quintela , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau , Markus Armbruster , Stefan Hajnoczi , "Dr . David Alan Gilbert" On Thu, Mar 01, 2018 at 06:16:53PM +0100, Paolo Bonzini wrote: > On 01/03/2018 16:46, Daniel P. Berrang=C3=A9 wrote: > > On Thu, Mar 01, 2018 at 04:44:31PM +0800, Peter Xu wrote: > >> It was originally created by qio_channel_add_watch() so it's always > >> assigning the task to main context. Now we use the new API called > >> qio_channel_add_watch_source() so that we get the GSource handle rat= her > >> than the tag ID. > >> > >> Meanwhile, caching the gsource in SocketChardev.telnet_source so tha= t we > >> can also do dynamic context switch when update read handlers. > > I don't see why we would ever want to dynamically switch the > > GMainContext in use while in middle of reading the telnet greeting. >=20 > Maybe because the remote client hangs in the middle of the telnet > greeting? The user of the Chardev can't know that the initial handshak= e > hasn't been done yet. Ah, this reminded me that I should better cache the TCPChardevTelnetInit struct, otherwise when context changes we'll possibly restart a telnet handshake. Actually if only considering the monitor-OOB series (which is the only one now who may change the context) it's not really necessary, since the context will only be changed once when init monitors. But it's easy to even achieve a higher goal to support real dynamic switch for telnet connections. So I think I'll try that in my next post. Thanks, --=20 Peter Xu