On 15/03/2017 16:02, Kevin Wolf wrote: > Am 15.03.2017 um 15:43 hat Paolo Bonzini geschrieben: >> On 15/03/2017 15:30, Kevin Wolf wrote: >>> Am 15.03.2017 um 14:39 hat Paolo Bonzini geschrieben: >>>> On 15/03/2017 12:03, Kevin Wolf wrote: >>>>> But we discussed this earlier, and while I'm not completely sure any >>>>> more about the details, I seem to remeber that Paolo said something >>>>> along the lines that AioContext is going away anyway and building the >>>>> code for proper management would be wasted time. >>>> >>>> AioContext is going to stay, but everybody will be able to send >>>> operations to a BB/BDS from any AioContext. The BDS AioContext will >>>> only matter for network devices, since they have to attach the file >>>> descriptor handlers somewhere. For files it won't matter at all because >>>> you can use multiple Linux AIO context or thread pools at the same time. >>> >>> Should the iothread option then become a -blockdev option rather than a >>> -device one? >> >> Well, both. The device also needs an I/O thread to attach its ioeventfd >> handler. And it makes sense to use the -device I/O thread if -blockdev >> specified none. > > Right, that makes sense. I just wasn't aware until now that we would get > a per-node option, so that's good to know.
I hadn't thought about it either. :) >>>> There should be a policy on which BB sets AioContext on the BDS (e.g. >>>> only the device does it), but apart from that, it should not be an issue. >>> >>> We don't know which BBs are going to be attached. We don't necessarily >>> have a device at all, or we could have two of them. >> >> Wow, can we really have two? :-O > > What would prevent you from doing this? The whole blockdev work was > about making the block layer more flexible, so now we have this > flexibility of attaching more or less anything to anything (unless op > blockers prevent it, which is why they are important for actually > supporting blockdev). Yeah, the actual question was more "will the blockers allow two" devices behind the same BDS. But I suppose there's no reason to prevent that (emulating multipath, for example). >>> Though maybe we should try to keep a BDS and its children in the same >>> AioContext anyway if that's possible? Will it make a difference? >> >> Everything can make sense---but yes, keeping the whole hierarchy in the >> same AioContext makes sense more often. > > So I take this to mean that it does make a difference. :-) > > If we want to keep users and their child nodes in the same AioContext by > default, we'll probably still need to implement all of the callbacks > that we would need for proper AioContext management today. Or just assume that in the common case people won't specify iothread on -blockdev, only on -device. Paolo