[libvirt] [PATCH] Allow chardev of type 'file' for UML domains.

Daniel P. Berrange berrange at redhat.com
Mon Aug 23 10:42:17 UTC 2010


On Mon, Aug 23, 2010 at 12:19:51PM +0200, Soren Hansen wrote:
> Like the comment suggested, we just open the file and pass the file
> descriptor to uml. The input "stream" is set to "null", since I couldn't
> find any useful way to actually use a file for input for a chardev and
> this also mimics what e.g. QEmu does internally.
> 
> Signed-off-by: Soren Hansen <soren at linux2go.dk>
> ---
>  src/uml/uml_conf.c   |   31 ++++++++++++++++++++++++++-----
>  src/uml/uml_conf.h   |    1 +
>  src/uml/uml_driver.c |   12 +++++++++++-
>  3 files changed, 38 insertions(+), 6 deletions(-)
> 
> diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c
> index 9cad7f1..e926a9f 100644
> --- a/src/uml/uml_driver.c
> +++ b/src/uml/uml_driver.c
> @@ -811,6 +811,7 @@ static int umlStartVMDaemon(virConnectPtr conn,
>      char *logfile;
>      int logfd = -1;
>      struct stat sb;
> +    int openmax;
>      fd_set keepfd;
>      char ebuf[1024];
>      umlDomainObjPrivatePtr priv = vm->privateData;
> @@ -869,7 +870,7 @@ static int umlStartVMDaemon(virConnectPtr conn,
>          return -1;
>      }
>  
> -    if (umlBuildCommandLine(conn, driver, vm,
> +    if (umlBuildCommandLine(conn, driver, vm, &keepfd,
>                              &argv, &progenv) < 0) {
>          close(logfd);
>          umlCleanupTapDevices(conn, vm);
> @@ -908,6 +909,15 @@ static int umlStartVMDaemon(virConnectPtr conn,
>                             NULL, NULL, NULL);
>      close(logfd);
>  
> +    /*
> +     * At the moment, the only thing that populates keepfd is
> +     * umlBuildCommandLineChr. We want to close every fd it opens.
> +     */
> +    openmax = sysconf (_SC_OPEN_MAX);
> +    for (i = 0; i < openmax; i++)
> +        if (FD_ISSET(i, &keepfd))
> +            close(i);
> +

Unfortunately fdset is one of those limited types that can't
represent all possible values. So you need to use FD_SETSIZE
instead of _SC_OPEN_MAX here

Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list