* [Qemu-devel] Planning for 0.13 @ 2010-01-05 12:43 Anthony Liguori 2010-01-05 12:44 ` [Qemu-devel] " Anthony Liguori ` (7 more replies) 0 siblings, 8 replies; 31+ messages in thread From: Anthony Liguori @ 2010-01-05 12:43 UTC (permalink / raw) To: qemu-devel Hi, I hope everyone had a happy new year! Now that we've finished the 0.12 release and most of us have had a nice break, I think it's time to start planning for the next release. 0.12 felt a bit rushed to me. I'd like to take a bit more time with 0.13 and try to complete features a bit more than we did in 0.12. So I propose that we target 0.13 as a 6-month cycle and target a June 1st release. Based on the -rc process for 0.12, I would like to have a two week -rc cycle for 0.13 but this time, absolutely no non-bug fixes past freeze. We got sloppy in 0.12 with this and we had some ugly regressions in the final release. Here are the features that I'm aware of for 0.13. Please add anything you're working on and I'll try to centralize this somewhere. - gPXE support for virtio-blk - Helper based network setup - Balloon driver statistics - Fully supported QMP - Live migration protocol support for subvendor versions (aka features) Regards, Anthony Liguori ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] Re: Planning for 0.13 2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori @ 2010-01-05 12:44 ` Anthony Liguori 2010-01-05 20:50 ` [Qemu-devel] " Stefan Weil ` (6 subsequent siblings) 7 siblings, 0 replies; 31+ messages in thread From: Anthony Liguori @ 2010-01-05 12:44 UTC (permalink / raw) To: qemu-devel On 01/05/2010 06:43 AM, Anthony Liguori wrote: > Hi, > > I hope everyone had a happy new year! Now that we've finished the > 0.12 release and most of us have had a nice break, I think it's time > to start planning for the next release. > > 0.12 felt a bit rushed to me. I'd like to take a bit more time with > 0.13 and try to complete features a bit more than we did in 0.12. So > I propose that we target 0.13 as a 6-month cycle and target a June 1st > release. Based on the -rc process for 0.12, I would like to have a > two week -rc cycle for 0.13 but this time, absolutely no non-bug fixes > past freeze. We got sloppy in 0.12 with this and we had some ugly > regressions in the final release. > > Here are the features that I'm aware of for 0.13. Please add anything > you're working on and I'll try to centralize this somewhere. > > - gPXE support for virtio-blk > - Helper based network setup > - Balloon driver statistics > - Fully supported QMP > - Live migration protocol support for subvendor versions (aka features) - virtio-console - vhost-net > Regards, > > Anthony Liguori ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Planning for 0.13 2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori 2010-01-05 12:44 ` [Qemu-devel] " Anthony Liguori @ 2010-01-05 20:50 ` Stefan Weil 2010-01-05 21:33 ` [Qemu-devel] " Michael S. Tsirkin ` (5 subsequent siblings) 7 siblings, 0 replies; 31+ messages in thread From: Stefan Weil @ 2010-01-05 20:50 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel Anthony Liguori schrieb: > Hi, > > I hope everyone had a happy new year! Now that we've finished the > 0.12 release and most of us have had a nice break, I think it's time > to start planning for the next release. > > 0.12 felt a bit rushed to me. I'd like to take a bit more time with > 0.13 and try to complete features a bit more than we did in 0.12. So > I propose that we target 0.13 as a 6-month cycle and target a June 1st > release. Based on the -rc process for 0.12, I would like to have a > two week -rc cycle for 0.13 but this time, absolutely no non-bug fixes > past freeze. We got sloppy in 0.12 with this and we had some ugly > regressions in the final release. > > Here are the features that I'm aware of for 0.13. Please add anything > you're working on and I'll try to centralize this somewhere. > > - gPXE support for virtio-blk > - Helper based network setup > - Balloon driver statistics > - Fully supported QMP > - Live migration protocol support for subvendor versions (aka features) > > Regards, > > Anthony Liguori I hope you enjoyed your break and had a happy new year, too. Here are some features I had been working on which could be integrated in 0.13: - eepro100 fixes (high priority because needed by many users) - tcg interpreter (medium priority because it extends the range of supported hosts) - installer for windows (I'm afraid that windows priority is low because nobody loves it very much) The code for these features is available here: http://repo.or.cz/w/qemu/ar7.git. Regards, Stefan Weil ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] Re: Planning for 0.13 2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori 2010-01-05 12:44 ` [Qemu-devel] " Anthony Liguori 2010-01-05 20:50 ` [Qemu-devel] " Stefan Weil @ 2010-01-05 21:33 ` Michael S. Tsirkin 2010-01-06 0:32 ` Anthony Liguori 2010-01-05 22:31 ` [Qemu-devel] " Aurelien Jarno ` (4 subsequent siblings) 7 siblings, 1 reply; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-05 21:33 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel On Tue, Jan 05, 2010 at 06:43:11AM -0600, Anthony Liguori wrote: > Hi, > > I hope everyone had a happy new year! Now that we've finished the 0.12 > release and most of us have had a nice break, I think it's time to start > planning for the next release. > > 0.12 felt a bit rushed to me. I'd like to take a bit more time with > 0.13 and try to complete features a bit more than we did in 0.12. So I > propose that we target 0.13 as a 6-month cycle and target a June 1st > release. Based on the -rc process for 0.12, I would like to have a two > week -rc cycle for 0.13 but this time, absolutely no non-bug fixes past > freeze. We got sloppy in 0.12 with this and we had some ugly > regressions in the final release. > > Here are the features that I'm aware of for 0.13. Please add anything > you're working on and I'll try to centralize this somewhere. > > - gPXE support for virtio-blk > - Helper based network setup > - Balloon driver statistics > - Fully supported QMP > - Live migration protocol support for subvendor versions (aka features) pci compliance (virtio passing whql) vepa networking kvm irqchip > Regards, > > Anthony Liguori > ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-05 21:33 ` [Qemu-devel] " Michael S. Tsirkin @ 2010-01-06 0:32 ` Anthony Liguori 2010-01-06 10:49 ` Michael S. Tsirkin 0 siblings, 1 reply; 31+ messages in thread From: Anthony Liguori @ 2010-01-06 0:32 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Anthony Liguori, qemu-devel On 01/05/2010 03:33 PM, Michael S. Tsirkin wrote: > On Tue, Jan 05, 2010 at 06:43:11AM -0600, Anthony Liguori wrote: > >> Hi, >> >> I hope everyone had a happy new year! Now that we've finished the 0.12 >> release and most of us have had a nice break, I think it's time to start >> planning for the next release. >> >> 0.12 felt a bit rushed to me. I'd like to take a bit more time with >> 0.13 and try to complete features a bit more than we did in 0.12. So I >> propose that we target 0.13 as a 6-month cycle and target a June 1st >> release. Based on the -rc process for 0.12, I would like to have a two >> week -rc cycle for 0.13 but this time, absolutely no non-bug fixes past >> freeze. We got sloppy in 0.12 with this and we had some ugly >> regressions in the final release. >> >> Here are the features that I'm aware of for 0.13. Please add anything >> you're working on and I'll try to centralize this somewhere. >> >> - gPXE support for virtio-blk >> - Helper based network setup >> - Balloon driver statistics >> - Fully supported QMP >> - Live migration protocol support for subvendor versions (aka features) >> > pci compliance (virtio passing whql) > What's the remaining problem? > vepa networking > To me, this is covered with helpers. I really want to get qemu out of the network setup business specifically because of things like vepa, vmtag, and all of the other weird things that can be done. > kvm irqchip > Yup, that and guest SMP support. Regards, Anthony Liguori ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 0:32 ` Anthony Liguori @ 2010-01-06 10:49 ` Michael S. Tsirkin 2010-01-06 12:36 ` Anthony Liguori 0 siblings, 1 reply; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-06 10:49 UTC (permalink / raw) To: Anthony Liguori; +Cc: Anthony Liguori, qemu-devel On Tue, Jan 05, 2010 at 06:32:23PM -0600, Anthony Liguori wrote: > On 01/05/2010 03:33 PM, Michael S. Tsirkin wrote: >> On Tue, Jan 05, 2010 at 06:43:11AM -0600, Anthony Liguori wrote: >> >>> Hi, >>> >>> I hope everyone had a happy new year! Now that we've finished the 0.12 >>> release and most of us have had a nice break, I think it's time to start >>> planning for the next release. >>> >>> 0.12 felt a bit rushed to me. I'd like to take a bit more time with >>> 0.13 and try to complete features a bit more than we did in 0.12. So I >>> propose that we target 0.13 as a 6-month cycle and target a June 1st >>> release. Based on the -rc process for 0.12, I would like to have a two >>> week -rc cycle for 0.13 but this time, absolutely no non-bug fixes past >>> freeze. We got sloppy in 0.12 with this and we had some ugly >>> regressions in the final release. >>> >>> Here are the features that I'm aware of for 0.13. Please add anything >>> you're working on and I'll try to centralize this somewhere. >>> >>> - gPXE support for virtio-blk >>> - Helper based network setup >>> - Balloon driver statistics >>> - Fully supported QMP >>> - Live migration protocol support for subvendor versions (aka features) >>> >> pci compliance (virtio passing whql) >> > > What's the remaining problem? IIRC, proper memory/IO access filtering (get rid of map functions) and PCI Express. >> vepa networking >> > > To me, this is covered with helpers. I really want to get qemu out of > the network setup business specifically because of things like vepa, > vmtag, and all of the other weird things that can be done. I don't think you can now make vepa work this way. For existing kernels, they only way I see is using packet sockets, and that code already mostly works. One day, when macvtap is ready - who knows. But waiting for that would mean we won't have it in 0.13. >> kvm irqchip >> > > Yup, that and guest SMP support. > > Regards, > > Anthony Liguori ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 10:49 ` Michael S. Tsirkin @ 2010-01-06 12:36 ` Anthony Liguori 2010-01-06 13:20 ` Michael S. Tsirkin 0 siblings, 1 reply; 31+ messages in thread From: Anthony Liguori @ 2010-01-06 12:36 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: qemu-devel On 01/06/2010 04:49 AM, Michael S. Tsirkin wrote: >> What's the remaining problem? >> > IIRC, proper memory/IO access filtering (get rid of map functions) and > PCI Express. > > >>> vepa networking >>> >>> >> To me, this is covered with helpers. I really want to get qemu out of >> the network setup business specifically because of things like vepa, >> vmtag, and all of the other weird things that can be done. >> > I don't think you can now make vepa work this way. For existing > kernels, they only way I see is using packet sockets, and that code > already mostly works. One day, when macvtap is ready - who knows. But > waiting for that would mean we won't have it in 0.13. > We can use helpers for more than just tun/tap. My current thinking for helpers is that they would give qemu an fd and then tell qemu how to work with it. Basically, use read/write vs. send/recv, whether to use a virtio-net header or not, etc. That would allow a helper to open a raw socket, configure macvlan, and then hand the fd over to qemu and tell qemu how to use it. Regards, Anthony Liguori ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 12:36 ` Anthony Liguori @ 2010-01-06 13:20 ` Michael S. Tsirkin 2010-01-06 13:34 ` Anthony Liguori 0 siblings, 1 reply; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-06 13:20 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel On Wed, Jan 06, 2010 at 06:36:26AM -0600, Anthony Liguori wrote: > On 01/06/2010 04:49 AM, Michael S. Tsirkin wrote: >>> What's the remaining problem? >>> >> IIRC, proper memory/IO access filtering (get rid of map functions) and >> PCI Express. >> >> >>>> vepa networking >>>> >>>> >>> To me, this is covered with helpers. I really want to get qemu out of >>> the network setup business specifically because of things like vepa, >>> vmtag, and all of the other weird things that can be done. >>> >> I don't think you can now make vepa work this way. For existing >> kernels, they only way I see is using packet sockets, and that code >> already mostly works. One day, when macvtap is ready - who knows. But >> waiting for that would mean we won't have it in 0.13. >> > > We can use helpers for more than just tun/tap. My current thinking for > helpers is that they would give qemu an fd and then tell qemu how to > work with it. Basically, use read/write vs. send/recv, whether to use a > virtio-net header or not, etc. Frankly I think this is too ambitious for 0.13, and I would like to avoid typing features that users need today to this effort. Note that management still needs ability to hand fd to qemu, so we can not require use of helpers for everyone. If the helpers are part of qemu itself, we do not gain anything from them besides (limited) security. But if not, we also get a protocol qemu<->helpers to maintain. Ugh. What I think is reasonable for 0.13, is what you posted: just allow helper script as an alternative way to get device fd, and have qemu do all the querying and feature negotiation exactly the way it already does. No protocol to maintain, command line users get some extra security, management is not affected at all. The only risk is that a new suid binary is installed. > That would allow a helper to open a raw socket, configure macvlan, and > then hand the fd over to qemu and tell qemu how to use it. Note binding to macvlan in a script buys you zero extra security as compared to opening socket and binding in qemu. > Regards, > > Anthony Liguori -- MST ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 13:20 ` Michael S. Tsirkin @ 2010-01-06 13:34 ` Anthony Liguori 2010-01-06 13:55 ` Michael S. Tsirkin 0 siblings, 1 reply; 31+ messages in thread From: Anthony Liguori @ 2010-01-06 13:34 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: qemu-devel On 01/06/2010 07:20 AM, Michael S. Tsirkin wrote: >> We can use helpers for more than just tun/tap. My current thinking for >> helpers is that they would give qemu an fd and then tell qemu how to >> work with it. Basically, use read/write vs. send/recv, whether to use a >> virtio-net header or not, etc. >> > Frankly I think this is too ambitious for 0.13, and I would like to > avoid typing features that users need today to this effort. > > Note that management still needs ability to hand fd to qemu, so we can > not require use of helpers for everyone. It's the same mechanism, no? I want to move to a single net backend that would be something like -net fd. Here are some possible invocations: -net fd,fd=3,type=tun,vnet=off -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0" -net fd,fd=3,type=socket,vnet=off -net fd,fd=3,type=vhost It's really a simple thing to do and it means that we can always implement any backend outside of qemu. As part of this, I would like: -net vepa,if=eth0 To automatically translate to: -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0" I'm also open to the idea of using shared libraries if people really think it's a good idea. > If the helpers are part of > qemu itself, we do not gain anything from them besides (limited) > security. But if not, we also get a protocol qemu<->helpers to > maintain. Ugh. > There really isn't much a protocol here. Helpers get handed a domain socket, then connect and send an fd via SCM_RIGHTS. They pass a string as part of that message that just happens to be equivalent to the arg string that would normally be passed to -net fd. > What I think is reasonable for 0.13, is what you posted: just allow > helper script as an alternative way to get device fd, and have qemu do > all the querying and feature negotiation exactly the way it already > does. No protocol to maintain, command line users get some extra > security, management is not affected at all. The only risk is that a new > suid binary is installed. > The whole suid binary thing is someone orthogonal to my goal here. The observation is that 99% of what people want in terms of network backends really just boils down to, here's a file descriptor, interact with it in one of a very small number of ways. >> That would allow a helper to open a raw socket, configure macvlan, and >> then hand the fd over to qemu and tell qemu how to use it. >> > Note binding to macvlan in a script buys you zero extra security > as compared to opening socket and binding in qemu. > It's not about security, it's about not making qemu the gateway to implementing arbitrarily complex network mechanisms. There's no reason qemu should have to know anything about vepa, for instance. Regards, Anthony Liguori ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 13:34 ` Anthony Liguori @ 2010-01-06 13:55 ` Michael S. Tsirkin 2010-01-06 15:10 ` Anthony Liguori 0 siblings, 1 reply; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-06 13:55 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel On Wed, Jan 06, 2010 at 07:34:26AM -0600, Anthony Liguori wrote: > On 01/06/2010 07:20 AM, Michael S. Tsirkin wrote: >>> We can use helpers for more than just tun/tap. My current thinking for >>> helpers is that they would give qemu an fd and then tell qemu how to >>> work with it. Basically, use read/write vs. send/recv, whether to use a >>> virtio-net header or not, etc. >>> >> Frankly I think this is too ambitious for 0.13, and I would like to >> avoid typing features that users need today to this effort. >> >> Note that management still needs ability to hand fd to qemu, so we can >> not require use of helpers for everyone. > > It's the same mechanism, no? > > I want to move to a single net backend that would be something like -net > fd. Here are some possible invocations: > > -net fd,fd=3,type=tun,vnet=off > -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0" > -net fd,fd=3,type=socket,vnet=off We currently don't let users control whether vnet header is activated in tap and IMO we are better off this way, let qemu find out support itself. > -net fd,fd=3,type=vhost > > It's really a simple thing to do and it means that we can always > implement any backend outside of qemu. Look at existing backends, each of them has some quirks in qemu. It's not realistic to expect that future backends won't need any more. > As part of this, I would like: > > -net vepa,if=eth0 > > To automatically translate to: > > -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0" > > I'm also open to the idea of using shared libraries if people really > think it's a good idea. What does all of this buy us? The helpers will still need to be shipped with qemu. >> If the helpers are part of >> qemu itself, we do not gain anything from them besides (limited) >> security. But if not, we also get a protocol qemu<->helpers to >> maintain. Ugh. >> > > There really isn't much a protocol here. Helpers get handed a domain > socket, then connect and send an fd via SCM_RIGHTS. They pass a string > as part of that message that just happens to be equivalent to the arg > string that would normally be passed to -net fd. How do helpers know which arguments are legal? Also, e.g. with vhost-net you can open it in a helper script but you must do the rest of the set up in qemu. >> What I think is reasonable for 0.13, is what you posted: just allow >> helper script as an alternative way to get device fd, and have qemu do >> all the querying and feature negotiation exactly the way it already >> does. No protocol to maintain, command line users get some extra >> security, management is not affected at all. The only risk is that a new >> suid binary is installed. >> > > The whole suid binary thing is someone orthogonal to my goal here. The > observation is that 99% of what people want in terms of network backends > really just boils down to, here's a file descriptor, interact with it in > one of a very small number of ways. Each new backend seems to have its own quirks. Nothing seems gained by moving handling them around. >>> That would allow a helper to open a raw socket, configure macvlan, and >>> then hand the fd over to qemu and tell qemu how to use it. >>> >> Note binding to macvlan in a script buys you zero extra security >> as compared to opening socket and binding in qemu. >> > > It's not about security, it's about not making qemu the gateway to > implementing arbitrarily complex network mechanisms. There's no reason > qemu should have to know anything about vepa, for instance. > > Regards, > > Anthony Liguori We'll still need to write all the scripts and bundle them with qemu. So ... I fail to see -- MST ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 13:55 ` Michael S. Tsirkin @ 2010-01-06 15:10 ` Anthony Liguori 2010-01-06 15:16 ` Michael S. Tsirkin 2010-01-06 19:48 ` Paolo Bonzini 0 siblings, 2 replies; 31+ messages in thread From: Anthony Liguori @ 2010-01-06 15:10 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: qemu-devel On 01/06/2010 07:55 AM, Michael S. Tsirkin wrote: > On Wed, Jan 06, 2010 at 07:34:26AM -0600, Anthony Liguori wrote: > >> On 01/06/2010 07:20 AM, Michael S. Tsirkin wrote: >> >>>> We can use helpers for more than just tun/tap. My current thinking for >>>> helpers is that they would give qemu an fd and then tell qemu how to >>>> work with it. Basically, use read/write vs. send/recv, whether to use a >>>> virtio-net header or not, etc. >>>> >>>> >>> Frankly I think this is too ambitious for 0.13, and I would like to >>> avoid typing features that users need today to this effort. >>> >>> Note that management still needs ability to hand fd to qemu, so we can >>> not require use of helpers for everyone. >>> >> It's the same mechanism, no? >> >> I want to move to a single net backend that would be something like -net >> fd. Here are some possible invocations: >> >> -net fd,fd=3,type=tun,vnet=off >> -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0" >> -net fd,fd=3,type=socket,vnet=off >> > We currently don't let users control whether vnet header > is activated in tap and IMO we are better off this way, > let qemu find out support itself. > -net tap,vnet_hdr=off >> -net fd,fd=3,type=vhost >> >> It's really a simple thing to do and it means that we can always >> implement any backend outside of qemu. >> > Look at existing backends, each of them has some quirks in qemu. It's > not realistic to expect that future backends won't need any more. > Quirks in the send/receive paths? Can you be specific because I don't really think there are. >> As part of this, I would like: >> >> -net vepa,if=eth0 >> >> To automatically translate to: >> >> -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0" >> >> I'm also open to the idea of using shared libraries if people really >> think it's a good idea. >> > What does all of this buy us? The helpers will still need to be shipped > with qemu. > Why? They can be separate packages that are maintained on their own and at their own pace. >> There really isn't much a protocol here. Helpers get handed a domain >> socket, then connect and send an fd via SCM_RIGHTS. They pass a string >> as part of that message that just happens to be equivalent to the arg >> string that would normally be passed to -net fd. >> > How do helpers know which arguments are legal? There is a set number of arguments that we support in qemu.. I think this is the sort of thing that is easier to discuss with code in hand. > Also, e.g. with > vhost-net you can open it in a helper script but you must do the rest of > the set up in qemu. > AFAICT, we have a hand full of types of fds. We have ones that require read/write, ones that require send/recv, and ones that require vhost interaction. Really, the first two are the same but the distinction is necessary for Windows. >>>> That would allow a helper to open a raw socket, configure macvlan, and >>>> then hand the fd over to qemu and tell qemu how to use it. >>>> >>>> >>> Note binding to macvlan in a script buys you zero extra security >>> as compared to opening socket and binding in qemu. >>> >>> >> It's not about security, it's about not making qemu the gateway to >> implementing arbitrarily complex network mechanisms. There's no reason >> qemu should have to know anything about vepa, for instance. >> >> Regards, >> >> Anthony Liguori >> > We'll still need to write all the scripts and bundle them > with qemu. So ... I fail to see > Again, I don't see why it needs to be bundled with qemu. Regards, Anthony Liguori ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 15:10 ` Anthony Liguori @ 2010-01-06 15:16 ` Michael S. Tsirkin 2010-01-06 15:24 ` Anthony Liguori 2010-01-06 19:48 ` Paolo Bonzini 1 sibling, 1 reply; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-06 15:16 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel On Wed, Jan 06, 2010 at 09:10:30AM -0600, Anthony Liguori wrote: > On 01/06/2010 07:55 AM, Michael S. Tsirkin wrote: >> On Wed, Jan 06, 2010 at 07:34:26AM -0600, Anthony Liguori wrote: >> >>> On 01/06/2010 07:20 AM, Michael S. Tsirkin wrote: >>> >>>>> We can use helpers for more than just tun/tap. My current thinking for >>>>> helpers is that they would give qemu an fd and then tell qemu how to >>>>> work with it. Basically, use read/write vs. send/recv, whether to use a >>>>> virtio-net header or not, etc. >>>>> >>>>> >>>> Frankly I think this is too ambitious for 0.13, and I would like to >>>> avoid typing features that users need today to this effort. >>>> >>>> Note that management still needs ability to hand fd to qemu, so we can >>>> not require use of helpers for everyone. >>>> >>> It's the same mechanism, no? >>> >>> I want to move to a single net backend that would be something like -net >>> fd. Here are some possible invocations: >>> >>> -net fd,fd=3,type=tun,vnet=off >>> -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0" >>> -net fd,fd=3,type=socket,vnet=off >>> >> We currently don't let users control whether vnet header >> is activated in tap and IMO we are better off this way, >> let qemu find out support itself. >> > > -net tap,vnet_hdr=off > >>> -net fd,fd=3,type=vhost >>> >>> It's really a simple thing to do and it means that we can always >>> implement any backend outside of qemu. >>> >> Look at existing backends, each of them has some quirks in qemu. It's >> not realistic to expect that future backends won't need any more. >> > > Quirks in the send/receive paths? Can you be specific because I don't > really think there are. You listed them yourself. read/write versus send/recv, vnet header. >>> As part of this, I would like: >>> >>> -net vepa,if=eth0 >>> >>> To automatically translate to: >>> >>> -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0" >>> >>> I'm also open to the idea of using shared libraries if people really >>> think it's a good idea. >>> >> What does all of this buy us? The helpers will still need to be shipped >> with qemu. >> > > Why? They can be separate packages that are maintained on their own and > at their own pace. Then they need to support more than one qemu version, it gets messy real fast. >>> There really isn't much a protocol here. Helpers get handed a domain >>> socket, then connect and send an fd via SCM_RIGHTS. They pass a string >>> as part of that message that just happens to be equivalent to the arg >>> string that would normally be passed to -net fd. >>> >> How do helpers know which arguments are legal? > > There is a set number of arguments that we support in qemu.. I think > this is the sort of thing that is easier to discuss with code in hand. > >> Also, e.g. with >> vhost-net you can open it in a helper script but you must do the rest of >> the set up in qemu. >> > > AFAICT, we have a hand full of types of fds. We have ones that require > read/write, ones that require send/recv, and ones that require vhost > interaction. Really, the first two are the same but the distinction is > necessary for Windows. Not only for windows. With packet sockets you must use send/recv to supply socket protocol. You must query tap to find out about UFO support. There will be more. >>>>> That would allow a helper to open a raw socket, configure macvlan, and >>>>> then hand the fd over to qemu and tell qemu how to use it. >>>>> >>>>> >>>> Note binding to macvlan in a script buys you zero extra security >>>> as compared to opening socket and binding in qemu. >>>> >>>> >>> It's not about security, it's about not making qemu the gateway to >>> implementing arbitrarily complex network mechanisms. There's no reason >>> qemu should have to know anything about vepa, for instance. >>> >>> Regards, >>> >>> Anthony Liguori >>> >> We'll still need to write all the scripts and bundle them >> with qemu. So ... I fail to see >> > > Again, I don't see why it needs to be bundled with qemu. > > Regards, > > Anthony Liguori How otherwise would scripts know how to talk to qemu? Just just happens to match command line format you say? And the way to discover what that format is ... how exactly? Look, yes we could split this stuff out but this is just maintainance headache, each change in backend will now need to be done in multiple places, we'll have to care about old scripts, new scripts, it's just a mess and at the end we will get existing functionality back and codebase which is harder to debug and develop. -- MST ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 15:16 ` Michael S. Tsirkin @ 2010-01-06 15:24 ` Anthony Liguori 2010-01-06 15:41 ` Michael S. Tsirkin 0 siblings, 1 reply; 31+ messages in thread From: Anthony Liguori @ 2010-01-06 15:24 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: qemu-devel On 01/06/2010 09:16 AM, Michael S. Tsirkin wrote: > How otherwise would scripts know how to talk to qemu? > Just just happens to match command line format you say? > And the way to discover what that format is ... how exactly? > > Look, yes we could split this stuff out but this is just maintainance > headache, each change in backend will now need to be done in multiple > places, we'll have to care about old scripts, new scripts, it's just a > mess and at the end we will get existing functionality back and codebase > which is harder to debug and develop. > A helper is semantics equivalent to passing an fd from a management tool. All of the problems you describe are equally applicable to that model. The question is, should we take in code in qemu to support any possible mechanism of creation of networking or should we just make sure their all possible by passing in an appropriate fd. Having helpers does not mean that we would have no backends built into qemu. It just means that's it's possible to create backends outside of qemu. Of course, we need to evalute whether a new backend should be in qemu or outside of qemu but that's something to handle on a case-by-case basis. Regards, Anthony Liguori ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 15:24 ` Anthony Liguori @ 2010-01-06 15:41 ` Michael S. Tsirkin 2010-01-06 17:19 ` Jamie Lokier 0 siblings, 1 reply; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-06 15:41 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel On Wed, Jan 06, 2010 at 09:24:45AM -0600, Anthony Liguori wrote: > On 01/06/2010 09:16 AM, Michael S. Tsirkin wrote: >> How otherwise would scripts know how to talk to qemu? >> Just just happens to match command line format you say? >> And the way to discover what that format is ... how exactly? >> >> Look, yes we could split this stuff out but this is just maintainance >> headache, each change in backend will now need to be done in multiple >> places, we'll have to care about old scripts, new scripts, it's just a >> mess and at the end we will get existing functionality back and codebase >> which is harder to debug and develop. >> > > A helper is semantics equivalent to passing an fd from a management > tool. All of the problems you describe are equally applicable to that > model. No, because management calls qemu and parses qemu help output. Yes it is not ideal but it works today. > The question is, should we take in code in qemu to support any possible > mechanism of creation of networking or should we just make sure their > all possible by passing in an appropriate fd. We already do this. What will not work generally is *returning* fd from helper. And IMO we are better off not pretending it's possible. > Having helpers does not mean that we would have no backends built into > qemu. It just means that's it's possible to create backends outside of > qemu. > > Of course, we need to evalute whether a new backend should be in qemu or > outside of qemu but that's something to handle on a case-by-case basis. > > Regards, > > Anthony Liguori To the point, I think we are better off with packet socket (vepa) backend in qemu than as a helper script. -- MST ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 15:41 ` Michael S. Tsirkin @ 2010-01-06 17:19 ` Jamie Lokier 2010-01-06 18:19 ` Michael S. Tsirkin 0 siblings, 1 reply; 31+ messages in thread From: Jamie Lokier @ 2010-01-06 17:19 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Anthony Liguori, qemu-devel Michael S. Tsirkin wrote: > On Wed, Jan 06, 2010 at 09:24:45AM -0600, Anthony Liguori wrote: > > A helper is semantics equivalent to passing an fd from a management > > tool. All of the problems you describe are equally applicable to that > > model. > > No, because management calls qemu and parses qemu help output. Yes it > is not ideal but it works today. I don't understand. What do you think would not work with helper="..." where ... is specified on the qemu command line by the management script, versus the management script doing the helper operations itself first and then calling qemu with fd=? If you are thinking that management scripts will tailor the -net arguments according to qemu version, you're right for some configurations (but not well established simple ones). Presumably management can do the same capability when specifying "..." - the difference being it would query the helper tool to get _it's_ features in some cases, e.g. for arguments to a helper which uses SSH to provide an encrypted tunnel. > > The question is, should we take in code in qemu to support any possible > > mechanism of creation of networking or should we just make sure their > > all possible by passing in an appropriate fd. > > We already do this. What will not work generally is *returning* fd from > helper. And IMO we are better off not pretending it's possible. What about it will not work? Even on Windows, I don't see why -net this,that,other,helper="..." cannot be a direct equivalent for -net this,that,other,fd=N, for any combination of this,that,other options - with the added bonus that the helper would be allowed to provide additional options to QEMU if wanted. > > Having helpers does not mean that we would have no backends built into > > qemu. It just means that's it's possible to create backends outside of > > qemu. > > > > Of course, we need to evalute whether a new backend should be in qemu or > > outside of qemu but that's something to handle on a case-by-case basis. > > > > Regards, > > > > Anthony Liguori > > To the point, I think we are better off with packet socket (vepa) > backend in qemu than as a helper script. That one, yes, but with the helper= option being more or less equivalent to fd= with the added ability to tell qemu how it wants qemu to talk to the fd, it's a bit easier to have user-supplied helpers such as: - Build an encrypted tunnel with SSH - Log all packets - Fake packets with a Perl script for repeatable tests - Send packets through a network simulator - Site-specific bridge + iptables setup You don't want code for those sort of things in qemu itself. Same, really, could be imagined with -monitor, -serial etc. - providing a generic "helper" backend in the same way we support connecting to serial ports, telnet sockets etc. Btw, as of right now, I have not found a management tool which sets up bridges correctly for my sites... There is always something extra needed with iptables, so it has to be done with hand-holding, or with the script= and downscript= options - which are annoyingly fragile because downscript isn't run if qemu has to be killed. A helper which communicates its result back to qemu, and then *keeps the unix socket open* would be a nice way to reliably detect when the helper should destroy whatever it created - more reliable than downscript=. I agree many backends are better implemented in qemu proper, but Anthony's idea sounds simple and versatile to me, and I would certainly use it for site-specific things. -- Jamie ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 17:19 ` Jamie Lokier @ 2010-01-06 18:19 ` Michael S. Tsirkin 2010-01-06 22:49 ` Jamie Lokier 0 siblings, 1 reply; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-06 18:19 UTC (permalink / raw) To: Jamie Lokier; +Cc: Anthony Liguori, qemu-devel On Wed, Jan 06, 2010 at 05:19:45PM +0000, Jamie Lokier wrote: > Michael S. Tsirkin wrote: > > On Wed, Jan 06, 2010 at 09:24:45AM -0600, Anthony Liguori wrote: > > > A helper is semantics equivalent to passing an fd from a management > > > tool. All of the problems you describe are equally applicable to that > > > model. > > > > No, because management calls qemu and parses qemu help output. Yes it > > is not ideal but it works today. > > I don't understand. What do you think would not work with > helper="..." where ... is specified on the qemu command line by the > management script, versus the management script doing the helper > operations itself first and then calling qemu with fd=? > > If you are thinking that management scripts will tailor the -net > arguments according to qemu version, you're right for some > configurations (but not well established simple ones). > > Presumably management can do the same capability when specifying "..." > - the difference being it would query the helper tool to get _it's_ > features in some cases, e.g. for arguments to a helper which uses SSH > to provide an encrypted tunnel. What won't work is that besides fd= management specifies many other arguments to the -net flag. > > > The question is, should we take in code in qemu to support any possible > > > mechanism of creation of networking or should we just make sure their > > > all possible by passing in an appropriate fd. > > > > We already do this. What will not work generally is *returning* fd from > > helper. And IMO we are better off not pretending it's possible. > > What about it will not work? Even on Windows, I don't see why -net > this,that,other,helper="..." cannot be a direct equivalent for -net > this,that,other,fd=N, for any combination of this,that,other options - > with the added bonus that the helper would be allowed to provide > additional options to QEMU if wanted. > > > > Having helpers does not mean that we would have no backends built into > > > qemu. It just means that's it's possible to create backends outside of > > > qemu. > > > > > > Of course, we need to evalute whether a new backend should be in qemu or > > > outside of qemu but that's something to handle on a case-by-case basis. > > > > > > Regards, > > > > > > Anthony Liguori > > > > To the point, I think we are better off with packet socket (vepa) > > backend in qemu than as a helper script. > > That one, yes, but with the helper= option being more or less > equivalent to fd= with the added ability to tell qemu how it wants > qemu to talk to the fd, it's a bit easier to have user-supplied > helpers such as: > > - Build an encrypted tunnel with SSH > - Log all packets > - Fake packets with a Perl script for repeatable tests > - Send packets through a network simulator > - Site-specific bridge + iptables setup > > You don't want code for those sort of things in qemu itself. > > Same, really, could be imagined with -monitor, -serial etc. - > providing a generic "helper" backend in the same way we support > connecting to serial ports, telnet sockets etc. > > Btw, as of right now, I have not found a management tool which sets up > bridges correctly for my sites... There is always something extra > needed with iptables, so it has to be done with hand-holding, or with > the script= and downscript= options - which are annoyingly fragile > because downscript isn't run if qemu has to be killed. > > A helper which communicates its result back to qemu, and then *keeps > the unix socket open* would be a nice way to reliably detect when the > helper should destroy whatever it created - more reliable than downscript=. > > I agree many backends are better implemented in qemu proper, but > Anthony's idea sounds simple and versatile to me, and I would > certainly use it for site-specific things. > > -- Jamie What you describe: helper= instead of fd= will work and I have no issue with this. And we won't need any protocol between helper and qemu: just the fd returned. But of course this means that it can't be used to create new backends such as vepa, which often need to setup the fd in complex ways. -- MST ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 18:19 ` Michael S. Tsirkin @ 2010-01-06 22:49 ` Jamie Lokier 2010-01-06 23:59 ` Michael S. Tsirkin 0 siblings, 1 reply; 31+ messages in thread From: Jamie Lokier @ 2010-01-06 22:49 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Anthony Liguori, qemu-devel Michael S. Tsirkin wrote: > On Wed, Jan 06, 2010 at 05:19:45PM +0000, Jamie Lokier wrote: > > Michael S. Tsirkin wrote: > > > On Wed, Jan 06, 2010 at 09:24:45AM -0600, Anthony Liguori wrote: > > > > A helper is semantics equivalent to passing an fd from a management > > > > tool. All of the problems you describe are equally applicable to that > > > > model. > > > > > > No, because management calls qemu and parses qemu help output. Yes it > > > is not ideal but it works today. > > > > I don't understand. What do you think would not work with > > helper="..." where ... is specified on the qemu command line by the > > management script, versus the management script doing the helper > > operations itself first and then calling qemu with fd=? > > > > If you are thinking that management scripts will tailor the -net > > arguments according to qemu version, you're right for some > > configurations (but not well established simple ones). > > > > Presumably management can do the same capability when specifying "..." > > - the difference being it would query the helper tool to get _it's_ > > features in some cases, e.g. for arguments to a helper which uses SSH > > to provide an encrypted tunnel. > > What won't work is that besides fd= management specifies many other > arguments to the -net flag. I still don't understand. What prevents management from specifying the other arguments with helper=, either in the helper argument (for arguments to the helper itself), or to qemu (for things qemu needs be told)? > What you describe: helper= instead of fd= will work and I have no issue > with this. And we won't need any protocol between helper and qemu: just > the fd returned. You may still need qemu to know whether to use send/recv (datagram socket) or read/write with framing (pipe or something), but if it comes to that, qemu can use fstat() to decide what it needs. There is probably no need for options passed back, I agree :-) I think there is a lot to be said for letting the helper keep the initial unix socket open, so it can reliably detect when the parent qemu dies and then clean up. > But of course this means that it can't be used to create new > backends such as vepa, which often need to setup the fd in complex > ways. For vepa, I don't know if you mean the fd needs complex setup initially, or complex options with each packet. (Web browser unavailable right now). For complex initial setup, that's exactly what a helper would be good for. Any options needed for that setup would be part of the helper="/path/to/helper opts..." string. If there are options which depend on helper version, management can query the helper itself with /path/to/helper --help; that doesn't seem likely to be needed much. If individual packet transmission requires "complex ways" then of course that would have to be inside qemu. Is that the case with vepa and other things under discussion? I got the impression there isn't much variation in the way packets are tranmitted and received. -- Jamie ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 22:49 ` Jamie Lokier @ 2010-01-06 23:59 ` Michael S. Tsirkin 0 siblings, 0 replies; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-06 23:59 UTC (permalink / raw) To: Jamie Lokier; +Cc: Anthony Liguori, qemu-devel On Wed, Jan 06, 2010 at 10:49:54PM +0000, Jamie Lokier wrote: > Michael S. Tsirkin wrote: > > On Wed, Jan 06, 2010 at 05:19:45PM +0000, Jamie Lokier wrote: > > > Michael S. Tsirkin wrote: > > > > On Wed, Jan 06, 2010 at 09:24:45AM -0600, Anthony Liguori wrote: > > > > > A helper is semantics equivalent to passing an fd from a management > > > > > tool. All of the problems you describe are equally applicable to that > > > > > model. > > > > > > > > No, because management calls qemu and parses qemu help output. Yes it > > > > is not ideal but it works today. > > > > > > I don't understand. What do you think would not work with > > > helper="..." where ... is specified on the qemu command line by the > > > management script, versus the management script doing the helper > > > operations itself first and then calling qemu with fd=? > > > > > > If you are thinking that management scripts will tailor the -net > > > arguments according to qemu version, you're right for some > > > configurations (but not well established simple ones). > > > > > > Presumably management can do the same capability when specifying "..." > > > - the difference being it would query the helper tool to get _it's_ > > > features in some cases, e.g. for arguments to a helper which uses SSH > > > to provide an encrypted tunnel. > > > > What won't work is that besides fd= management specifies many other > > arguments to the -net flag. > > I still don't understand. What prevents management from specifying > the other arguments with helper=, either in the helper argument (for > arguments to the helper itself), or to qemu (for things qemu needs be told)? > > > What you describe: helper= instead of fd= will work and I have no issue > > with this. And we won't need any protocol between helper and qemu: just > > the fd returned. > > You may still need qemu to know whether to use send/recv (datagram > socket) or read/write with framing (pipe or something), but if it > comes to that, qemu can use fstat() to decide what it needs. There is > probably no need for options passed back, I agree :-) Well, if we special-case some fd type, let's just put all handling in qemu. There's no advantage in spreading it around. It only makes sense to move stuff out to helper script if it can be done generically IMO. > I think there is a lot to be said for letting the helper keep the > initial unix socket open, so it can reliably detect when the parent > qemu dies and then clean up. > > > But of course this means that it can't be used to create new > > backends such as vepa, which often need to setup the fd in complex > > ways. > > For vepa, I don't know if you mean the fd needs complex setup > initially, or complex options with each packet. (Web browser > unavailable right now). > > For complex initial setup, that's exactly what a helper would be good > for. Any options needed for that setup would be part of the > helper="/path/to/helper opts..." string. If there are options which > depend on helper version, management can query the helper itself with > /path/to/helper --help; that doesn't seem likely to be needed much. > > If individual packet transmission requires "complex ways" then of > course that would have to be inside qemu. Is that the case with vepa > and other things under discussion? As I said, stuff like vhost needs physical addresses as part of its setup, so that definitely needs to be in qemu too. > I got the impression there isn't much variation in the way packets > are tranmitted and received. > > -- Jamie No. E.g. for TX/RX, with packet socket (which is what you'll use for vepa) you need to do it differently from e.g. TCP socket. It is true that TCP sockets really do look very much like pipes, so you can write code that handles these generically. But other devices don't, and there's a lot of minor differences there, which we *could* abstract away - but in the end we won't get any new features users need, and code will be more complex and hard to debug. -- MST ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] Re: Planning for 0.13 2010-01-06 15:10 ` Anthony Liguori 2010-01-06 15:16 ` Michael S. Tsirkin @ 2010-01-06 19:48 ` Paolo Bonzini 2010-01-06 19:54 ` Michael S. Tsirkin 1 sibling, 1 reply; 31+ messages in thread From: Paolo Bonzini @ 2010-01-06 19:48 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel, Michael S. Tsirkin On 01/06/2010 04:10 PM, Anthony Liguori wrote: > We have ones that require read/write, ones that require send/recv, and > ones that require vhost interaction. Really, the first two are the same > but the distinction is necessary for Windows. Not necessarily, you can open sockets on Windows so that they support read/write. Just create it with fh = WSASocket (domain, type, protocol, NULL, 0, 0); instead of socket. Since Windows already has enough problems passing file descriptors to processes, imposing the above on an external management interface is not a huge chore. Paolo ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] Re: Planning for 0.13 2010-01-06 19:48 ` Paolo Bonzini @ 2010-01-06 19:54 ` Michael S. Tsirkin 2010-01-06 19:59 ` Paolo Bonzini 2010-01-06 23:00 ` Jamie Lokier 0 siblings, 2 replies; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-06 19:54 UTC (permalink / raw) To: Paolo Bonzini; +Cc: Anthony Liguori, qemu-devel On Wed, Jan 06, 2010 at 08:48:16PM +0100, Paolo Bonzini wrote: > On 01/06/2010 04:10 PM, Anthony Liguori wrote: >> We have ones that require read/write, ones that require send/recv, and >> ones that require vhost interaction. Really, the first two are the same >> but the distinction is necessary for Windows. > > Not necessarily, you can open sockets on Windows so that they support > read/write. Just create it with > > fh = WSASocket (domain, type, protocol, NULL, 0, 0); > > instead of socket. Since Windows already has enough problems passing > file descriptors to processes, imposing the above on an external > management interface is not a huge chore. > > Paolo For linux read/write often isn't a good idea :) E.g. for packet sockets you really need to use sendmsg and set msg_name with the proper protocol. You also must use recvmsg and set MSG_TRUNC otherwise packets can get truncatred silently. -- MST ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] Re: Planning for 0.13 2010-01-06 19:54 ` Michael S. Tsirkin @ 2010-01-06 19:59 ` Paolo Bonzini 2010-01-06 20:07 ` Michael S. Tsirkin 2010-01-06 23:00 ` Jamie Lokier 1 sibling, 1 reply; 31+ messages in thread From: Paolo Bonzini @ 2010-01-06 19:59 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Anthony Liguori, qemu-devel >>> We have ones that require read/write, ones that require send/recv, and >>> ones that require vhost interaction. Really, the first two are the same >>> but the distinction is necessary for Windows. >> >> Not necessarily, you can open sockets on Windows so that they support >> read/write. Just create it with >> >> fh = WSASocket (domain, type, protocol, NULL, 0, 0); >> >> instead of socket. Since Windows already has enough problems passing >> file descriptors to processes, imposing the above on an external >> management interface is not a huge chore. >> >> Paolo > > For linux read/write often isn't a good idea :) Yeah, only for "normal" raw sockets. > E.g. for packet sockets you really need to use sendmsg and set msg_name > with the proper protocol. You also must use recvmsg and set MSG_TRUNC > otherwise packets can get truncatred silently. The situation for packet sockets is more similar to vnet headers no (just learning all this stuff)? They require code in qemu anyway, so the helper would do only the set up/tear down. Paolo ^ permalink raw reply [flat|nested] 31+ messages in thread
* [Qemu-devel] Re: Planning for 0.13 2010-01-06 19:59 ` Paolo Bonzini @ 2010-01-06 20:07 ` Michael S. Tsirkin 0 siblings, 0 replies; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-06 20:07 UTC (permalink / raw) To: Paolo Bonzini; +Cc: Anthony Liguori, qemu-devel On Wed, Jan 06, 2010 at 08:59:37PM +0100, Paolo Bonzini wrote: > >>>> We have ones that require read/write, ones that require send/recv, and >>>> ones that require vhost interaction. Really, the first two are the same >>>> but the distinction is necessary for Windows. >>> >>> Not necessarily, you can open sockets on Windows so that they support >>> read/write. Just create it with >>> >>> fh = WSASocket (domain, type, protocol, NULL, 0, 0); >>> >>> instead of socket. Since Windows already has enough problems passing >>> file descriptors to processes, imposing the above on an external >>> management interface is not a huge chore. >>> >>> Paolo >> >> For linux read/write often isn't a good idea :) > > Yeah, only for "normal" raw sockets. You mean TCP? We really need a UDP option BTW, and that also needs special handling. >> E.g. for packet sockets you really need to use sendmsg and set msg_name >> with the proper protocol. You also must use recvmsg and set MSG_TRUNC >> otherwise packets can get truncatred silently. > > The situation for packet sockets is more similar to vnet headers no > (just learning all this stuff)? They require code in qemu anyway, so > the helper would do only the set up/tear down. > > Paolo Yes. And in that case, it does not make sense to force helper usage where option to call 'socket' is just as easy. -- MST ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 19:54 ` Michael S. Tsirkin 2010-01-06 19:59 ` Paolo Bonzini @ 2010-01-06 23:00 ` Jamie Lokier 2010-01-07 0:05 ` Michael S. Tsirkin 1 sibling, 1 reply; 31+ messages in thread From: Jamie Lokier @ 2010-01-06 23:00 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Paolo Bonzini, qemu-devel, Anthony Liguori Michael S. Tsirkin wrote: > On Wed, Jan 06, 2010 at 08:48:16PM +0100, Paolo Bonzini wrote: > > On 01/06/2010 04:10 PM, Anthony Liguori wrote: > >> We have ones that require read/write, ones that require send/recv, and > >> ones that require vhost interaction. Really, the first two are the same > >> but the distinction is necessary for Windows. > > > > Not necessarily, you can open sockets on Windows so that they support > > read/write. Just create it with > > > > fh = WSASocket (domain, type, protocol, NULL, 0, 0); > > > > instead of socket. Since Windows already has enough problems passing > > file descriptors to processes, imposing the above on an external > > management interface is not a huge chore. I think socket() is equivalent to that WSASocket() on all modern Windows versions (since Windows 2000 or so; actually the Windows NT line and Winsock 2), so there isn't any need for WSASocket. Passing socket file descriptors isn't very hard (again, the NT line), but it's different from unix obviously. On unix you can use a unix domain datagram socket if you're just communicating with a local process, so recv/send can always be used. On Windows, you have to use something else for local process communications (loopback TCP sockets can be used but are sometimes blocked by annoying software). A smart thing to do would be detect the type of handle received, and use the appropriate way of talking to it, but since you need to receive a string to receive a handle anyway, it's trivial to include an option with the string saying how to talk to it. > For linux read/write often isn't a good idea :) E.g. for packet > sockets you really need to use sendmsg and set msg_name with the > proper protocol. You also must use recvmsg and set MSG_TRUNC > otherwise packets can get truncatred silently. On packet sockets, connect() + write() should be equivalent to sendmsg to the connected addresses. If not it's a bit of a kernel bug. Is it? Agreed about recvmsg and MSG_TRUNC though. But anyway, in what situation would you not use recv/send (except Windows local IPC)? And if there is one, is there ever a situation where fstat() cannot be used by qemu to decide what to use? If packet sockets needs sendmsg with msg_name, it could call getpeername and always use that :-) -- Jamie ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Re: Planning for 0.13 2010-01-06 23:00 ` Jamie Lokier @ 2010-01-07 0:05 ` Michael S. Tsirkin 0 siblings, 0 replies; 31+ messages in thread From: Michael S. Tsirkin @ 2010-01-07 0:05 UTC (permalink / raw) To: Jamie Lokier; +Cc: Paolo Bonzini, qemu-devel, Anthony Liguori On Wed, Jan 06, 2010 at 11:00:11PM +0000, Jamie Lokier wrote: > Michael S. Tsirkin wrote: > > On Wed, Jan 06, 2010 at 08:48:16PM +0100, Paolo Bonzini wrote: > > > On 01/06/2010 04:10 PM, Anthony Liguori wrote: > > >> We have ones that require read/write, ones that require send/recv, and > > >> ones that require vhost interaction. Really, the first two are the same > > >> but the distinction is necessary for Windows. > > > > > > Not necessarily, you can open sockets on Windows so that they support > > > read/write. Just create it with > > > > > > fh = WSASocket (domain, type, protocol, NULL, 0, 0); > > > > > > instead of socket. Since Windows already has enough problems passing > > > file descriptors to processes, imposing the above on an external > > > management interface is not a huge chore. > > I think socket() is equivalent to that WSASocket() on all modern > Windows versions (since Windows 2000 or so; actually the Windows NT > line and Winsock 2), so there isn't any need for WSASocket. > > Passing socket file descriptors isn't very hard (again, the NT line), > but it's different from unix obviously. > > On unix you can use a unix domain datagram socket if you're just > communicating with a local process, so recv/send can always be used. > > On Windows, you have to use something else for local process > communications (loopback TCP sockets can be used but are sometimes > blocked by annoying software). A smart thing to do would be detect > the type of handle received, and use the appropriate way of talking to > it, but since you need to receive a string to receive a handle anyway, > it's trivial to include an option with the string saying how to talk to it. > > > For linux read/write often isn't a good idea :) E.g. for packet > > sockets you really need to use sendmsg and set msg_name with the > > proper protocol. You also must use recvmsg and set MSG_TRUNC > > otherwise packets can get truncatred silently. > > On packet sockets, connect() + write() should be equivalent to sendmsg > to the connected addresses. If not it's a bit of a kernel bug. Is it? No. One of the fields in the address is protocol. We need to look at the packet to figure it out, so it can not be set per socket. > Agreed about recvmsg and MSG_TRUNC though. > > But anyway, in what situation would you not use recv/send (except > Windows local IPC)? And if there is one, is there ever a situation > where fstat() cannot be used by qemu to decide what to use? If packet > sockets needs sendmsg with msg_name, it could call getpeername and > always use that :-) > > -- Jamie If qemu has special code for e.g. packet sockets, I do not see any advantage in moving setup out of qemu. It's only generic stuff that makes sense to use helpers for. -- MST ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Planning for 0.13 2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori ` (2 preceding siblings ...) 2010-01-05 21:33 ` [Qemu-devel] " Michael S. Tsirkin @ 2010-01-05 22:31 ` Aurelien Jarno 2010-01-06 2:46 ` Roy Tam ` (3 subsequent siblings) 7 siblings, 0 replies; 31+ messages in thread From: Aurelien Jarno @ 2010-01-05 22:31 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel On Tue, Jan 05, 2010 at 06:43:11AM -0600, Anthony Liguori wrote: > Hi, > > I hope everyone had a happy new year! Now that we've finished the 0.12 > release and most of us have had a nice break, I think it's time to start > planning for the next release. > > 0.12 felt a bit rushed to me. I'd like to take a bit more time with > 0.13 and try to complete features a bit more than we did in 0.12. So I > propose that we target 0.13 as a 6-month cycle and target a June 1st > release. Based on the -rc process for 0.12, I would like to have a two > week -rc cycle for 0.13 but this time, absolutely no non-bug fixes past > freeze. We got sloppy in 0.12 with this and we had some ugly > regressions in the final release. > > Here are the features that I'm aware of for 0.13. Please add anything > you're working on and I'll try to centralize this somewhere. > > - gPXE support for virtio-blk > - Helper based network setup > - Balloon driver statistics > - Fully supported QMP > - Live migration protocol support for subvendor versions (aka features) - TCG IA64 support. I have something mostly working in system mode, so it should not be a problem for June. -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Planning for 0.13 2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori ` (3 preceding siblings ...) 2010-01-05 22:31 ` [Qemu-devel] " Aurelien Jarno @ 2010-01-06 2:46 ` Roy Tam 2010-01-06 9:37 ` Gerd Hoffmann ` (2 subsequent siblings) 7 siblings, 0 replies; 31+ messages in thread From: Roy Tam @ 2010-01-06 2:46 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel 2010/1/5 Anthony Liguori <aliguori@linux.vnet.ibm.com>: > Hi, > > I hope everyone had a happy new year! Now that we've finished the 0.12 > release and most of us have had a nice break, I think it's time to start > planning for the next release. > > 0.12 felt a bit rushed to me. I'd like to take a bit more time with 0.13 > and try to complete features a bit more than we did in 0.12. So I propose > that we target 0.13 as a 6-month cycle and target a June 1st release. Based > on the -rc process for 0.12, I would like to have a two week -rc cycle for > 0.13 but this time, absolutely no non-bug fixes past freeze. We got sloppy > in 0.12 with this and we had some ugly regressions in the final release. > > Here are the features that I'm aware of for 0.13. Please add anything > you're working on and I'll try to centralize this somewhere. > > - gPXE support for virtio-blk > - Helper based network setup > - Balloon driver statistics > - Fully supported QMP > - Live migration protocol support for subvendor versions (aka features) for me, - NEC PC-9821 support hope Mr. Takeda can improve his patch set and push it to git head before 0.13 release. > > Regards, > > Anthony Liguori > > > ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Planning for 0.13 2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori ` (4 preceding siblings ...) 2010-01-06 2:46 ` Roy Tam @ 2010-01-06 9:37 ` Gerd Hoffmann 2010-01-06 15:34 ` Adam Litke 2010-01-12 13:43 ` Pasi Kärkkäinen 7 siblings, 0 replies; 31+ messages in thread From: Gerd Hoffmann @ 2010-01-06 9:37 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel On 01/05/10 13:43, Anthony Liguori wrote: > - gPXE support for virtio-blk likewise for lsi, not sure how hard this is though. maybe figuring something sane way to extboot is easier. > - Helper based network setup > - Balloon driver statistics > - Fully supported QMP > - Live migration protocol support for subvendor versions (aka features) - qdev conversion continued. - scsi needs some more love, megasas driver. - p35 + pcie. cheers, Gerd ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Planning for 0.13 2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori ` (5 preceding siblings ...) 2010-01-06 9:37 ` Gerd Hoffmann @ 2010-01-06 15:34 ` Adam Litke 2010-01-12 13:43 ` Pasi Kärkkäinen 7 siblings, 0 replies; 31+ messages in thread From: Adam Litke @ 2010-01-06 15:34 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-devel On Tue, 2010-01-05 at 06:43 -0600, Anthony Liguori wrote: > Hi, > > I hope everyone had a happy new year! Now that we've finished the 0.12 > release and most of us have had a nice break, I think it's time to start > planning for the next release. > > 0.12 felt a bit rushed to me. I'd like to take a bit more time with > 0.13 and try to complete features a bit more than we did in 0.12. So I > propose that we target 0.13 as a 6-month cycle and target a June 1st > release. Based on the -rc process for 0.12, I would like to have a two > week -rc cycle for 0.13 but this time, absolutely no non-bug fixes past > freeze. We got sloppy in 0.12 with this and we had some ugly > regressions in the final release. > > Here are the features that I'm aware of for 0.13. Please add anything > you're working on and I'll try to centralize this somewhere. Port the -mem-path and -mem-prealloc options from qemu-kvm. virtio-balloon enhancements for -mem-path enabled VMs. -- Thanks, Adam ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Planning for 0.13 2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori ` (6 preceding siblings ...) 2010-01-06 15:34 ` Adam Litke @ 2010-01-12 13:43 ` Pasi Kärkkäinen 2010-01-12 15:07 ` Stefano Stabellini 2010-02-09 14:50 ` Artyom Tarasenko 7 siblings, 2 replies; 31+ messages in thread From: Pasi Kärkkäinen @ 2010-01-12 13:43 UTC (permalink / raw) To: Anthony Liguori; +Cc: Ian Jackson, qemu-devel On Tue, Jan 05, 2010 at 06:43:11AM -0600, Anthony Liguori wrote: > Hi, > > I hope everyone had a happy new year! Now that we've finished the 0.12 > release and most of us have had a nice break, I think it's time to start > planning for the next release. > > 0.12 felt a bit rushed to me. I'd like to take a bit more time with > 0.13 and try to complete features a bit more than we did in 0.12. So I > propose that we target 0.13 as a 6-month cycle and target a June 1st > release. Based on the -rc process for 0.12, I would like to have a two > week -rc cycle for 0.13 but this time, absolutely no non-bug fixes past > freeze. We got sloppy in 0.12 with this and we had some ugly > regressions in the final release. > > Here are the features that I'm aware of for 0.13. Please add anything > you're working on and I'll try to centralize this somewhere. > > - gPXE support for virtio-blk > - Helper based network setup > - Balloon driver statistics > - Fully supported QMP > - Live migration protocol support for subvendor versions (aka features) > Hello, I think Xen folks were planning to push (some) Xen qemu-dm patches for upstream Qemu 0.13. Discussion here: http://lists.xensource.com/archives/html/xen-devel/2010-01/msg00200.html -- Pasi ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Planning for 0.13 2010-01-12 13:43 ` Pasi Kärkkäinen @ 2010-01-12 15:07 ` Stefano Stabellini 2010-02-09 14:50 ` Artyom Tarasenko 1 sibling, 0 replies; 31+ messages in thread From: Stefano Stabellini @ 2010-01-12 15:07 UTC (permalink / raw) To: Pasi Kärkkäinen Cc: Anthony Liguori, Ian Jackson, qemu-devel@nongnu.org [-- Attachment #1: Type: text/plain, Size: 1533 bytes --] On Tue, 12 Jan 2010, Pasi Kärkkäinen wrote: > On Tue, Jan 05, 2010 at 06:43:11AM -0600, Anthony Liguori wrote: > > Hi, > > > > I hope everyone had a happy new year! Now that we've finished the 0.12 > > release and most of us have had a nice break, I think it's time to start > > planning for the next release. > > > > 0.12 felt a bit rushed to me. I'd like to take a bit more time with > > 0.13 and try to complete features a bit more than we did in 0.12. So I > > propose that we target 0.13 as a 6-month cycle and target a June 1st > > release. Based on the -rc process for 0.12, I would like to have a two > > week -rc cycle for 0.13 but this time, absolutely no non-bug fixes past > > freeze. We got sloppy in 0.12 with this and we had some ugly > > regressions in the final release. > > > > Here are the features that I'm aware of for 0.13. Please add anything > > you're working on and I'll try to centralize this somewhere. > > > > - gPXE support for virtio-blk > > - Helper based network setup > > - Balloon driver statistics > > - Fully supported QMP > > - Live migration protocol support for subvendor versions (aka features) > > > > Hello, > > I think Xen folks were planning to push (some) Xen qemu-dm patches for upstream > Qemu 0.13. > > Discussion here: > http://lists.xensource.com/archives/html/xen-devel/2010-01/msg00200.html > Yes, we are going to try to upstream Xen support in Qemu, hopefully we'll finish in time for 0.13, but we just started the work so I don't know yet for sure. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [Qemu-devel] Planning for 0.13 2010-01-12 13:43 ` Pasi Kärkkäinen 2010-01-12 15:07 ` Stefano Stabellini @ 2010-02-09 14:50 ` Artyom Tarasenko 1 sibling, 0 replies; 31+ messages in thread From: Artyom Tarasenko @ 2010-02-09 14:50 UTC (permalink / raw) To: Anthony Liguori; +Cc: Blue Swirl, qemu-devel Hi Anthony, > Here are the features that I'm aware of for 0.13. Please add anything > you're working on and I'll try to centralize this somewhere. > > - gPXE support for virtio-blk > - Helper based network setup > - Balloon driver statistics > - Fully supported QMP > - Live migration protocol support for subvendor versions (aka features) - Support for Solaris/sparc guest Shouldn't be too hard. After my recent irq and mmu fixes Solaris 2.4-2.6 is already booting under the git/master. There are only few issues with spurious interrupts (Slavio/Macio), going to track them down. Once it works under OBP, the missing functionality can be added to OpenBIOS. There is already a good test case: NetBSD 1.3.3 fails under OpenBIOS the same way as Solars does. But OpenBIOS release plan is independent from qemu release plan anyway, right? -- Regards, Artyom Tarasenko solaris/sparc under qemu blog: http://tyom.blogspot.com/ ^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2010-02-09 14:51 UTC | newest] Thread overview: 31+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori 2010-01-05 12:44 ` [Qemu-devel] " Anthony Liguori 2010-01-05 20:50 ` [Qemu-devel] " Stefan Weil 2010-01-05 21:33 ` [Qemu-devel] " Michael S. Tsirkin 2010-01-06 0:32 ` Anthony Liguori 2010-01-06 10:49 ` Michael S. Tsirkin 2010-01-06 12:36 ` Anthony Liguori 2010-01-06 13:20 ` Michael S. Tsirkin 2010-01-06 13:34 ` Anthony Liguori 2010-01-06 13:55 ` Michael S. Tsirkin 2010-01-06 15:10 ` Anthony Liguori 2010-01-06 15:16 ` Michael S. Tsirkin 2010-01-06 15:24 ` Anthony Liguori 2010-01-06 15:41 ` Michael S. Tsirkin 2010-01-06 17:19 ` Jamie Lokier 2010-01-06 18:19 ` Michael S. Tsirkin 2010-01-06 22:49 ` Jamie Lokier 2010-01-06 23:59 ` Michael S. Tsirkin 2010-01-06 19:48 ` Paolo Bonzini 2010-01-06 19:54 ` Michael S. Tsirkin 2010-01-06 19:59 ` Paolo Bonzini 2010-01-06 20:07 ` Michael S. Tsirkin 2010-01-06 23:00 ` Jamie Lokier 2010-01-07 0:05 ` Michael S. Tsirkin 2010-01-05 22:31 ` [Qemu-devel] " Aurelien Jarno 2010-01-06 2:46 ` Roy Tam 2010-01-06 9:37 ` Gerd Hoffmann 2010-01-06 15:34 ` Adam Litke 2010-01-12 13:43 ` Pasi Kärkkäinen 2010-01-12 15:07 ` Stefano Stabellini 2010-02-09 14:50 ` Artyom Tarasenko
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).