From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50914) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TOrCN-0001oz-M9 for qemu-devel@nongnu.org; Thu, 18 Oct 2012 10:35:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TOrCH-00039X-Tp for qemu-devel@nongnu.org; Thu, 18 Oct 2012 10:35:47 -0400 Received: from e31.co.us.ibm.com ([32.97.110.149]:58252) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TOrCH-00039R-Ng for qemu-devel@nongnu.org; Thu, 18 Oct 2012 10:35:41 -0400 Received: from /spool/local by e31.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 18 Oct 2012 08:35:36 -0600 Received: from d03relay05.boulder.ibm.com (d03relay05.boulder.ibm.com [9.17.195.107]) by d03dlp01.boulder.ibm.com (Postfix) with ESMTP id ED9EF1FF0041 for ; Thu, 18 Oct 2012 08:30:33 -0600 (MDT) Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d03relay05.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q9IETtCR236980 for ; Thu, 18 Oct 2012 08:30:10 -0600 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q9IETshm029512 for ; Thu, 18 Oct 2012 08:29:54 -0600 Message-ID: <5080125C.5070107@linux.vnet.ibm.com> Date: Thu, 18 Oct 2012 10:29:48 -0400 From: Corey Bryant MIME-Version: 1.0 References: <1350411046-2453-1-git-send-email-coreyb@linux.vnet.ibm.com> <507E3103.1020202@redhat.com> <507EBA60.9000000@redhat.com> In-Reply-To: <507EBA60.9000000@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 4/4] qemu-config: Add new -add-fd command line option List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: libvir-list@redhat.com, qemu-devel@nongnu.org On 10/17/2012 10:02 AM, Kevin Wolf wrote: > Am 17.10.2012 06:16, schrieb Eric Blake: >> I'm still seeing the corner case of: >> >> qemu-kvm -add-fd fd=3,set=1 -add-fd fd=4,set=2 4<&- >> >> where the dup(3) will populate fd 4 prior to the point where we get to >> process the -add-fd fd=4 command to notice that the user started >> qemu-kvm with fd 4 closed, and thus qemu will silently proceed to use >> the wrong fd. >> >> On the other hand, I'm not sure if that corner case is worth worrying >> about, or if we just chalk it up to user stupidity (aka libvirt >> programmer stupidity) if they did something like that (most likely, >> because the management app forgot to clear FD_CLOEXEC before exec()ing >> qemu-kvm). > > If you specify an FD number that isn't actually open when qemu is > stared, you can get any FD that qemu opens internally. I think the > correct answer to this problem is "then don't do that". > I'd also say "then don't do that". Or maybe "why are you doing that?". But I'm not opposed to closing a corner case if it's not cluttering the code base. >> Hmm, this makes me wonder if I can do something crazy like: >> >> qemu-kvm -add-fd fd=4,set=1 -qmp /dev/fdset/1 >> >> to open a monitor on the fd I just passed in? > > I think so. At least on my side it was intended to allow this. > >> And what if so, what then >> happens on that monitor if I request that fdset 1 be removed? > > The same as with block devices: The fd stays open until the monitor > connection is closed. A closed monitor also triggers fd garbage > collection, so at this point the original fd would be closed (well, > assuming that you had only one monitor). > > Kevin > True, but I think in this case we care more about the dup'd fd staying open than the fd in the fdset. Remember that qemu_open() dups the fd from the fd set. So assuming the open/close of the QMP fd occurs in qemu_open()/qemu_close(), the QMP fd would be a dup of the fd that was added to the fd set. So if remove-fd removed the fd from the fdset, or it removed the entire fdset, the QMP fd would remain open until qemu_close() was called. I'll try this out today to make sure but I don't think this is an issue. -- Regards, Corey Bryant