qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: [PATCH] Split machine creation from the main loop


From: Avi Kivity
Subject: Re: [Qemu-devel] Re: [PATCH] Split machine creation from the main loop
Date: Mon, 28 Feb 2011 10:20:18 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209 Fedora/3.1.7-0.35.b3pre.fc14 Lightning/1.0b3pre Thunderbird/3.1.7

On 02/28/2011 06:01 AM, Anthony Liguori wrote:


It would be a pity to divorce the monitor from chardevs, they're really flexible.

Couple considerations:

1) chardevs don't support multiple simultaneous connections. I view this as a blocker for QMP.

What do you mean by that? Something like ,server which keeps on listening after it a connection is established?

,server won't allow multiple simultaneous connections. CharDriverStates simply don't have a connection semantic. There can only be one thing connected to it at a time. This is why we don't use CharDriverState for VNC.

I meant an extension to ,server that keeps on listening.


We should have another abstraction for connection based backend. I'll take a go at this when I'm ready to try to get those patches in.

Shouldn't each new connection return a chardev?


Just to be clear though, there is a CharDriverState version of the new QMP server. This would be a second option for creating a QMP server and it takes a different command line sytnax.

2) Because chardevs don't support multiple connections, we can't reasonably hook on things like connect/disconnect which means that fd's sent via SCM_RIGHTs have to be handled in a very special way. By going outside of the chardev layer, we can let fd's via SCM_RIGHTS queue up naturally and have getfd/setfd refer to the fd at the top of the queue. It makes it quite a bit easier to work with (I believe Daniel had actually requested this a while ago).

I really don't follow... what's the connection between SCM_RIGHTS and multiple connections?

Monitors have a single fd. That fd is associated with the monitor and lives beyond the length of the connection to the monitor (recall that chardevs don't have a notion of connection life cycle). This means if a management tool forgets to do a closefd on an unused fd, there's no easy way for QEMU to automatically clean that up. IOW, a crashed management tool == fd leak in QEMU.

I guess we could add a close() event to chardev?

--
error compiling committee.c: too many arguments to function




reply via email to

[Prev in Thread] Current Thread [Next in Thread]