[libvirt] [PATCH 1/3] utils: Implement virCommandPassFDGetFDIndex

Stefan Berger stefanb at linux.vnet.ibm.com
Wed Feb 25 23:08:40 UTC 2015


On 02/24/2015 11:52 PM, Martin Kletzander wrote:
> On Tue, Feb 24, 2015 at 09:24:51AM -0500, Stefan Berger wrote:
>> On 02/24/2015 08:34 AM, Martin Kletzander wrote:
>>> On Mon, Feb 23, 2015 at 06:50:46AM -0500, Stefan Berger wrote:
>>>> Implement virCommandPassFDGetFDIndex to determine the index a given
>>>> file descriptor will have when passed to the child process. When this
>>>> function is called, a flag is set to prevent the reordering of the
>>>> file descriptors.
>>>>
>>>> Signed-off-by: Stefan Berger <stefanb at linux.vnet.ibm.com>
>>>> ---
>>>> src/libvirt_private.syms |  1 +
>>>> src/util/vircommand.c    | 33 +++++++++++++++++++++++++++++++++
>>>> src/util/vircommand.h    |  3 +++
>>>> 3 files changed, 37 insertions(+)
>>>>
>>>> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
>>>> index c156b40..aadb833 100644
>>>> --- a/src/libvirt_private.syms
>>>> +++ b/src/libvirt_private.syms
>>>> @@ -1213,6 +1213,7 @@ virCommandNewArgList;
>>>> virCommandNewArgs;
>>>> virCommandNonblockingFDs;
>>>> virCommandPassFD;
>>>> +virCommandPassFDGetFDIndex;
>>>> virCommandPassListenFDs;
>>>> virCommandRawStatus;
>>>> virCommandRequireHandshake;
>>>> diff --git a/src/util/vircommand.c b/src/util/vircommand.c
>>>> index 6527d85..2616446 100644
>>>> --- a/src/util/vircommand.c
>>>> +++ b/src/util/vircommand.c
>>>> @@ -67,6 +67,7 @@ enum {
>>>>    VIR_EXEC_RUN_SYNC   = (1 << 3),
>>>>    VIR_EXEC_ASYNC_IO   = (1 << 4),
>>>>    VIR_EXEC_LISTEN_FDS = (1 << 5),
>>>> +    VIR_EXEC_FIXED_FDS  = (1 << 6),
>>>
>>> The descriptors shouldn't get reordered *unless* there is
>>> VIR_EXEC_LISTEN_FDS flag added, so FIXED_FDS shouldn't be necessary.
>>> Or is there a bug in that approach that needs fixing?
>>
>> Hm, it depends on the order in which APIs are called where we either
>> need to protect against re-ordering (if we use indices) or we cannot
>> allow indices to be used if we need to reorder them. So, actually the
>> way the patch is, it isn't correct, either.
>>
>> The problem of having to prevent the reordering of file descriptors
>> when we are building the QEMU command line with file descriptors
>> already exists today. So maybe I could just remove this flag and the
>> related check knowing that reordering of file descriptors and building
>> the QEMU command line that contains file descriptor (from before the
>> order) would not be allowed today without any of the patches I am
>> trying to add.
>>
>
> You surely and safely can.  The point behind reordering FDs was that
> when you're using FD passing as done by systemd, those FDs passed must
> start from number 3.  However, because we are already passing a bunch
> of file descriptors to QEMU and other commands, we *must not* reorder
> any file descriptors because it wouldn't work, of course.

Follow this I would no remove that flag and all checks around it and 
leave only the new function.

    Stefan


>
> Martin




More information about the libvir-list mailing list