[libvirt] [PATCH v2 4/5] util: extend virExecWithHook()

Osier Yang jyang at redhat.com
Fri Dec 30 04:42:09 UTC 2011


On 2011年12月22日 15:06, Taku Izumi wrote:
>
> This patch extends virExecWithHook() to receive
> capability information.
>
>
> Signed-off-by: Taku Izumi<izumi.taku at jp.fujitsu.com>
> Signed-off-by: Shota Hirae<m11g1401 at hibikino.ne.jp>
> ---
>   src/util/command.c |   16 ++++++++++------
>   1 file changed, 10 insertions(+), 6 deletions(-)
>
> Index: libvirt/src/util/command.c
> ===================================================================
> --- libvirt.orig/src/util/command.c
> +++ libvirt/src/util/command.c
> @@ -333,6 +333,7 @@ prepareStdFd(int fd, int std)
>    * @hook optional virExecHook function to call prior to exec
>    * @data data to pass to the hook function
>    * @pidfile path to use as pidfile for daemonized process (needs DAEMON flag)
> + * @capabilities capabilities to keep
>    */
>   static int
>   virExecWithHook(const char *const*argv,
> @@ -343,7 +344,8 @@ virExecWithHook(const char *const*argv,
>                   unsigned int flags,
>                   virExecHook hook,
>                   void *data,
> -                char *pidfile)
> +                char *pidfile,
> +                unsigned long long capabilities)
>   {
>       pid_t pid;
>       int null = -1, i, openmax;
> @@ -572,9 +574,9 @@ virExecWithHook(const char *const*argv,
>
>       /* The steps above may need todo something privileged, so
>        * we delay clearing capabilities until the last minute */
> -    if ((flags&  VIR_EXEC_CLEAR_CAPS)&&
> -        virClearCapabilities()<  0)
> -        goto fork_error;
> +    if (capabilities || (flags&  VIR_EXEC_CLEAR_CAPS))
> +        if (virKeepCapabilities(capabilities)<  0)
> +            goto fork_error;
>
>       /* Close logging again to ensure no FDs leak to child */
>       virLogReset();
> @@ -661,7 +663,8 @@ virExecWithHook(const char *const*argv A
>                   int flags_unused ATTRIBUTE_UNUSED,
>                   virExecHook hook ATTRIBUTE_UNUSED,
>                   void *data ATTRIBUTE_UNUSED,
> -                char *pidfile ATTRIBUTE_UNUSED)
> +                char *pidfile ATTRIBUTE_UNUSED,
> +                unsigned long long capabilities ATTRIBUTE_UNUSED)
>   {
>       /* XXX: Some day we can implement pieces of virCommand/virExec on
>        * top of _spawn() or CreateProcess(), but we can't implement
> @@ -2103,7 +2106,8 @@ virCommandRunAsync(virCommandPtr cmd, pi
>                             cmd->flags,
>                             virCommandHook,
>                             cmd,
> -                          cmd->pidfile);
> +                          cmd->pidfile,
> +                          cmd->capabilities);
>
>       VIR_DEBUG("Command result %d, with PID %d",
>                 ret, (int)cmd->pid);
>

This patch just looks fine. ACK.

Regards,
Osier




More information about the libvir-list mailing list