[GSoC]: Libvirt driver for Jailhouse-Problem in sending initial patches(0-2)

Prakhar Bansal prakharbansal0910 at gmail.com
Sat Sep 5 23:31:18 UTC 2020


Hello Libvirt community,

I want to apologize for my attempts to send the same patches multiple
times, but for some reason I am not able to send Patch 1-2 along with cover
letter with this patch set through git send-email.
I even tried sending them separately but it didn’t help.

When I’m trying sending Patch set(0-9), only Patches 3-9 are being
successfully sent to mailing list and I’m getting the message on my gmail
account that your message to libvir-list at redhat.com has been blocked.
I’m still trying to solve this issue but I would appreciate any suggestion
on this matter.

Thanks,
Prakhar Bansal

On Sat, Sep 5, 2020 at 2:31 PM <libvir-list-request at redhat.com> wrote:

> Send libvir-list mailing list submissions to
>
>         libvir-list at redhat.com
>
>
>
> To subscribe or unsubscribe via the World Wide Web, visit
>
>         https://www.redhat.com/mailman/listinfo/libvir-list
>
> or, via email, send a message with subject or body 'help' to
>
>         libvir-list-request at redhat.com
>
>
>
> You can reach the person managing the list at
>
>         libvir-list-owner at redhat.com
>
>
>
> When replying, please edit your Subject line so it is more specific
>
> than "Re: Contents of libvir-list digest..."
>
>
>
>
>
> Today's Topics:
>
>
>
>    1. [GSoC PATCH 6/9] Jailhouse driver: Implementation of
>
>       DomainLookup*     callbacks (Prakhar Bansal)
>
>    2. [GSoC PATCH 5/9] Jailhouse driver: Implementation of
>
>       DomainInfo/State/List (Prakhar Bansal)
>
>    3. [GSoC PATCH 7/9] Jailhouse driver: Implementation of
>
>       DomainShutdown/Destroy callbacks (Prakhar Bansal)
>
>
>
>
>
> ----------------------------------------------------------------------
>
>
>
> Message: 1
>
> Date: Sat,  5 Sep 2020 16:30:00 -0500
>
> From: Prakhar Bansal <prakharbansal0910 at gmail.com>
>
> To: libvir-list at redhat.com
>
> Subject: [GSoC PATCH 6/9] Jailhouse driver: Implementation of
>
>         DomainLookup*   callbacks
>
> Message-ID: <20200905213003.10682-7-prakharbansal0910 at gmail.com>
>
> Content-Type: text/plain; charset=US-ASCII
>
>
>
> Signed-off-by:Prakhar Bansal<prakharbansal0910 at gmail.com>
>
> ---
>
>  src/jailhouse/jailhouse_driver.c | 70 ++++++++++++++++++++++++++++----
>
>  1 file changed, 61 insertions(+), 9 deletions(-)
>
>
>
> diff --git a/src/jailhouse/jailhouse_driver.c
> b/src/jailhouse/jailhouse_driver.c
>
> index 2bb249f996..8c84a23388 100644
>
> --- a/src/jailhouse/jailhouse_driver.c
>
> +++ b/src/jailhouse/jailhouse_driver.c
>
> @@ -292,25 +292,77 @@ jailhouseConnectListAllDomains(virConnectPtr conn,
>
>  static virDomainPtr
>
>  jailhouseDomainLookupByID(virConnectPtr conn, int id)
>
>  {
>
> -    UNUSED(conn);
>
> -    UNUSED(id);
>
> -    return NULL;
>
> +virJailhouseDriverPtr driver = conn->privateData;
>
> +    virDomainObjPtr cell;
>
> +    virDomainPtr dom = NULL;
>
> +
>
> +    cell = virDomainObjListFindByID(driver->domains, id);
>
> +
>
> +    if (!cell) {
>
> +        virReportError(VIR_ERR_NO_DOMAIN,
>
> +                       _("No domain with matching ID '%d'"), id);
>
> +        goto cleanup;
>
> +    }
>
> +
>
> +    if (virDomainLookupByIDEnsureACL(conn, cell->def) < 0)
>
> +        goto cleanup;
>
> +
>
> +    dom = virGetDomain(conn, cell->def->name, cell->def->uuid,
> cell->def->id);
>
> + cleanup:
>
> +    virDomainObjEndAPI(&cell);
>
> +    return dom;
>
>  }
>
>
>
>  static virDomainPtr
>
>  jailhouseDomainLookupByName(virConnectPtr conn, const char *name)
>
>  {
>
> -    UNUSED(conn);
>
> -    UNUSED(name);
>
> -    return NULL;
>
> +    virJailhouseDriverPtr driver = conn->privateData;
>
> +    virDomainObjPtr cell;
>
> +    virDomainPtr dom = NULL;
>
> +
>
> +    cell = virDomainObjListFindByName(driver->domains, name);
>
> +
>
> +    if (!cell) {
>
> +        virReportError(VIR_ERR_NO_DOMAIN,
>
> +                       _("No domain with matching name '%s'"), name);
>
> +        goto cleanup;
>
> +    }
>
> +
>
> +    if (virDomainLookupByNameEnsureACL(conn, cell->def) < 0)
>
> +        goto cleanup;
>
> +
>
> +    dom = virGetDomain(conn, cell->def->name, cell->def->uuid,
> cell->def->id);
>
> +
>
> + cleanup:
>
> +    virDomainObjEndAPI(&cell);
>
> +    return dom;
>
>  }
>
>
>
>  static virDomainPtr
>
>  jailhouseDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
>
>  {
>
> -    UNUSED(conn);
>
> -    UNUSED(uuid);
>
> -    return NULL;
>
> +    virJailhouseDriverPtr driver = conn->privateData;
>
> +    virDomainObjPtr cell;
>
> +    virDomainPtr dom = NULL;
>
> +
>
> +    cell = virDomainObjListFindByUUID(driver->domains, uuid);
>
> +
>
> +    if (!cell) {
>
> +        char uuidstr[VIR_UUID_STRING_BUFLEN];
>
> +        virUUIDFormat(uuid, uuidstr);
>
> +        virReportError(VIR_ERR_NO_DOMAIN,
>
> +                       _("No domain with matching UUID '%s'"), uuidstr);
>
> +        goto cleanup;
>
> +    }
>
> +
>
> +    if (virDomainLookupByUUIDEnsureACL(conn, cell->def) < 0)
>
> +        goto cleanup;
>
> +
>
> +    dom = virGetDomain(conn, cell->def->name, cell->def->uuid,
> cell->def->id);
>
> +
>
> + cleanup:
>
> +    virDomainObjEndAPI(&cell);
>
> +    return dom;
>
>  }
>
>
>
>  static virDomainObjPtr
>
> --
>
> 2.17.1
>
>
>
>
>
>
>
> ------------------------------
>
>
>
> Message: 2
>
> Date: Sat,  5 Sep 2020 16:29:59 -0500
>
> From: Prakhar Bansal <prakharbansal0910 at gmail.com>
>
> To: libvir-list at redhat.com
>
> Subject: [GSoC PATCH 5/9] Jailhouse driver: Implementation of
>
>         DomainInfo/State/List
>
> Message-ID: <20200905213003.10682-6-prakharbansal0910 at gmail.com>
>
> Content-Type: text/plain; charset=US-ASCII
>
>
>
> Signed-off-by:Prakhar Bansal<prakharbansal0910 at gmail.com>
>
> ---
>
>  src/jailhouse/jailhouse_driver.c | 102 +++++++++++++++++++++++++------
>
>  1 file changed, 83 insertions(+), 19 deletions(-)
>
>
>
> diff --git a/src/jailhouse/jailhouse_driver.c
> b/src/jailhouse/jailhouse_driver.c
>
> index 5b7bdc92d8..2bb249f996 100644
>
> --- a/src/jailhouse/jailhouse_driver.c
>
> +++ b/src/jailhouse/jailhouse_driver.c
>
> @@ -267,19 +267,26 @@ static int
>
>  jailhouseNodeGetInfo(virConnectPtr conn,
>
>                       virNodeInfoPtr nodeinfo)
>
>  {
>
> -    UNUSED(conn);
>
> -    UNUSED(nodeinfo);
>
> -    return -1;
>
> +    if (virNodeGetInfoEnsureACL(conn) < 0)
>
> +        return -1;
>
> +
>
> +    return virCapabilitiesGetNodeInfo(nodeinfo);
>
>  }
>
>
>
>  static int
>
>  jailhouseConnectListAllDomains(virConnectPtr conn,
>
> -                               virDomainPtr **domain, unsigned int flags)
>
> +                               virDomainPtr **domains,
>
> +                               unsigned int flags)
>
>  {
>
> -    UNUSED(conn);
>
> -    UNUSED(domain);
>
> -    UNUSED(flags);
>
> -    return -1;
>
> +    virJailhouseDriverPtr driver = conn->privateData;
>
> +
>
> +    virCheckFlags(VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL, -1);
>
> +
>
> +    if (virConnectListAllDomainsEnsureACL(conn) < 0)
>
> +        return -1;
>
> +
>
> +    return virDomainObjListExport(driver->domains, conn, domains,
>
> +                                  virConnectListAllDomainsCheckACL,
> flags);
>
>  }
>
>
>
>  static virDomainPtr
>
> @@ -522,30 +529,87 @@ jailhouseDomainDestroy(virDomainPtr domain)
>
>  }
>
>
>
>  static int
>
> -jailhouseDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
>
> +virjailhouseGetDomainTotalCpuStats(virDomainObjPtr cell,
>
> +                               unsigned long long *cpustats)
>
>  {
>
> -    UNUSED(domain);
>
> -    UNUSED(info);
>
> +    // TODO(Prakhar): Not implemented yet.
>
> +    UNUSED(cell);
>
> +    UNUSED(cpustats);
>
>      return -1;
>
>  }
>
>
>
> +static int
>
> +jailhouseDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
>
> +{
>
> +    virDomainObjPtr cell;
>
> +    int ret = -1;
>
> +
>
> +    if (!(cell = virJailhouseDomObjFromDomain(domain)))
>
> +        goto cleanup;
>
> +
>
> +    if (virDomainGetInfoEnsureACL(domain->conn, cell->def) < 0)
>
> +        goto cleanup;
>
> +
>
> +    if (virDomainObjIsActive(cell)) {
>
> +        if (virjailhouseGetDomainTotalCpuStats(cell, &(info->cpuTime)) <
> 0)
>
> +            goto cleanup;
>
> +    } else {
>
> +        info->cpuTime = 0;
>
> +    }
>
> +
>
> +    info->state = virDomainObjGetState(cell, NULL);
>
> +    info->maxMem = virDomainDefGetMemoryTotal(cell->def);
>
> +    info->nrVirtCpu = virDomainDefGetVcpus(cell->def);
>
> +    ret = 0;
>
> +
>
> + cleanup:
>
> +    virDomainObjEndAPI(&cell);
>
> +    return ret;
>
> +}
>
> +
>
>  static int
>
>  jailhouseDomainGetState(virDomainPtr domain,
>
>                          int *state, int *reason, unsigned int flags)
>
>  {
>
> -    UNUSED(domain);
>
> -    UNUSED(state);
>
> -    UNUSED(reason);
>
> -    UNUSED(flags);
>
> -    return -1;
>
> +    virDomainObjPtr cell;
>
> +    int ret = -1;
>
> +
>
> +    virCheckFlags(0, -1);
>
> +
>
> +    if (!(cell = virJailhouseDomObjFromDomain(domain)))
>
> +        goto cleanup;
>
> +
>
> +    if (virDomainGetStateEnsureACL(domain->conn, cell->def) < 0)
>
> +       goto cleanup;
>
> +
>
> +    *state = virDomainObjGetState(cell, reason);
>
> +    ret = 0;
>
> +
>
> + cleanup:
>
> +    virDomainObjEndAPI(&cell);
>
> +    return ret;
>
>  }
>
>
>
>  static char *
>
>  jailhouseDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
>
>  {
>
> -    UNUSED(domain);
>
> -    UNUSED(flags);
>
> -    return NULL;
>
> +    virDomainObjPtr cell;
>
> +    char *ret = NULL;
>
> +
>
> +    virCheckFlags(VIR_DOMAIN_XML_COMMON_FLAGS, NULL);
>
> +
>
> +    if (!(cell = virJailhouseDomObjFromDomain(domain)))
>
> +        goto cleanup;
>
> +
>
> +    if (virDomainGetXMLDescEnsureACL(domain->conn, cell->def, flags) < 0)
>
> +        goto cleanup;
>
> +
>
> +    ret = virDomainDefFormat(cell->def, NULL /* xmlopt */,
>
> +                             virDomainDefFormatConvertXMLFlags(flags));
>
> +
>
> + cleanup:
>
> +    virDomainObjEndAPI(&cell);
>
> +    return ret;
>
>  }
>
>
>
>  static virHypervisorDriver jailhouseHypervisorDriver = {
>
> --
>
> 2.17.1
>
>
>
>
>
>
>
> ------------------------------
>
>
>
> Message: 3
>
> Date: Sat,  5 Sep 2020 16:30:01 -0500
>
> From: Prakhar Bansal <prakharbansal0910 at gmail.com>
>
> To: libvir-list at redhat.com
>
> Subject: [GSoC PATCH 7/9] Jailhouse driver: Implementation of
>
>         DomainShutdown/Destroy callbacks
>
> Message-ID: <20200905213003.10682-8-prakharbansal0910 at gmail.com>
>
> Content-Type: text/plain; charset=US-ASCII
>
>
>
> Signed-off-by:Prakhar Bansal<prakharbansal0910 at gmail.com>
>
> ---
>
>  src/jailhouse/jailhouse_api.c    |   8 +++
>
>  src/jailhouse/jailhouse_driver.c | 101 +++++++++++++++++++++++++++++--
>
>  2 files changed, 104 insertions(+), 5 deletions(-)
>
>
>
> diff --git a/src/jailhouse/jailhouse_api.c b/src/jailhouse/jailhouse_api.c
>
> index 783903e939..510e2f5f66 100644
>
> --- a/src/jailhouse/jailhouse_api.c
>
> +++ b/src/jailhouse/jailhouse_api.c
>
> @@ -71,6 +71,14 @@ int cell_match(const struct dirent *dirent);
>
>
>
>  int createCell(const char *conf_file);
>
>
>
> +int loadImagesInCell(virJailhouseCellId cell_id, char *images, int
> num_images);
>
> +
>
> +int shutdownCell(virJailhouseCellId cell_id);
>
> +
>
> +int startCell(virJailhouseCellId cell_id);
>
> +
>
> +int destroyCell(virJailhouseCellId cell_id);
>
> +
>
>  int getCellInfo(const unsigned int id,
>
>                  virJailhouseCellInfoPtr * cell_info);
>
>
>
> diff --git a/src/jailhouse/jailhouse_driver.c
> b/src/jailhouse/jailhouse_driver.c
>
> index 8c84a23388..46c7759cb8 100644
>
> --- a/src/jailhouse/jailhouse_driver.c
>
> +++ b/src/jailhouse/jailhouse_driver.c
>
> @@ -406,8 +406,8 @@ jailhouseDomainCreateWithFlags(virDomainPtr domain,
>
>                                 unsigned int flags)
>
>  {
>
>      virJailhouseDriverPtr driver = domain->conn->privateData;
>
> -    virDomainObjPtr cell;
>
>      virJailhouseCellInfoPtr cell_info;
>
> +    virDomainObjPtr cell;
>
>      int ret = -1;
>
>
>
>      virCheckFlags(VIR_DOMAIN_NONE, -1);
>
> @@ -566,18 +566,107 @@ jailhouseDomainCreateXML(virConnectPtr conn,
>
>      return dom;
>
>  }
>
>
>
> +static int
>
> +jailhouseDomainShutdownFlags(virDomainPtr domain, unsigned int flags)
>
> +{
>
> +    virJailhouseDriverPtr driver = domain->conn->privateData;
>
> +    virJailhouseCellInfoPtr cell_info;
>
> +    virDomainObjPtr cell;
>
> +    virJailhouseCellId cell_id;
>
> +    int ret = -1;
>
> +
>
> +    virCheckFlags(0, -1);
>
> +
>
> +    if (!(cell = virJailhouseDomObjFromDomain(domain)))
>
> +        goto cleanup;
>
> +
>
> +    if (virDomainShutdownFlagsEnsureACL(domain->conn, cell->def, flags) <
> 0)
>
> +        goto cleanup;
>
> +
>
> +    if (virDomainObjGetState(cell, NULL) != VIR_DOMAIN_RUNNING)
>
> +        goto cleanup;
>
> +
>
> +    if (!(cell_info = virJailhouseFindCellByName(driver,
> cell->def->name))) {
>
> +        virReportError(VIR_ERR_NO_DOMAIN,
>
> +                       _("no domain with matching name %s and ID %d)"),
>
> +                       cell->def->name, cell->def->id);
>
> +        virDomainObjListRemove(driver->domains, cell);
>
> +        goto cleanup;
>
> +    }
>
> +
>
> +    // Initialize the cell_id.
>
> +    cell_id.id = cell->def->id;
>
> +    cell_id.padding = 0;
>
> +    if (virStrcpy(cell_id.name, cell->def->name,
> JAILHOUSE_CELL_ID_NAMELEN) < 0) {
>
> +        virReportError(VIR_ERR_INTERNAL_ERROR,
>
> +                       _("Cell name %s length exceeded the limit"),
>
> +                       cell->def->name);
>
> +        goto cleanup;
>
> +    }
>
> +
>
> +    if (shutdownCell(cell_id) < 0)
>
> +        goto cleanup;
>
> +
>
> +    virDomainObjSetState(cell, VIR_DOMAIN_SHUTOFF,
> VIR_DOMAIN_SHUTOFF_SHUTDOWN);
>
> +
>
> +    ret = 0;
>
> +
>
> + cleanup:
>
> +    virDomainObjEndAPI(&cell);
>
> +    return ret;
>
> +}
>
> +
>
>  static int
>
>  jailhouseDomainShutdown(virDomainPtr domain)
>
>  {
>
> -    UNUSED(domain);
>
> -    return -1;
>
> +    return jailhouseDomainShutdownFlags(domain, 0);
>
> +}
>
> +
>
> +static int
>
> +jailhouseDomainDestroyFlags(virDomainPtr domain, unsigned int flags)
>
> +{
>
> +    virJailhouseDriverPtr driver = domain->conn->privateData;
>
> +    virJailhouseCellInfoPtr cell_info;
>
> +    virDomainObjPtr cell;
>
> +    int ret = -1;
>
> +
>
> +    virCheckFlags(0, -1);
>
> +
>
> +    if (!(cell = virJailhouseDomObjFromDomain(domain)))
>
> +        goto cleanup;
>
> +
>
> +    if (virDomainDestroyFlagsEnsureACL(domain->conn, cell->def) < 0)
>
> +        goto cleanup;
>
> +
>
> +    if (virDomainObjGetState(cell, NULL) != VIR_DOMAIN_SHUTOFF) {
>
> +        virReportError(VIR_ERR_OPERATION_INVALID,
>
> +                       _("Domain %s is still running."),
>
> +                       cell->def->name);
>
> +        goto cleanup;
>
> +    }
>
> +
>
> +    if (!(cell_info = virJailhouseFindCellByName(driver,
> cell->def->name))) {
>
> +        virReportError(VIR_ERR_NO_DOMAIN,
>
> +                       _("no domain with matching name %s and ID %d)"),
>
> +                       cell->def->name, cell->def->id);
>
> +        virDomainObjListRemove(driver->domains, cell);
>
> +        goto cleanup;
>
> +    }
>
> +
>
> +    // Remove the cell from the domain list.
>
> +    virDomainObjListRemove(driver->domains, cell);
>
> +
>
> +    ret = 0;
>
> +
>
> + cleanup:
>
> +    virDomainObjEndAPI(&cell);
>
> +    return ret;
>
>  }
>
>
>
>  static int
>
>  jailhouseDomainDestroy(virDomainPtr domain)
>
>  {
>
> -    UNUSED(domain);
>
> -    return -1;
>
> +    return jailhouseDomainDestroyFlags(domain, 0);
>
>  }
>
>
>
>  static int
>
> @@ -675,7 +764,9 @@ static virHypervisorDriver jailhouseHypervisorDriver =
> {
>
>      .domainCreateWithFlags = jailhouseDomainCreateWithFlags,    /* 6.3.0
> */
>
>      .domainCreateXML = jailhouseDomainCreateXML, /* 6.3.0 */
>
>      .domainShutdown = jailhouseDomainShutdown,  /* 6.3.0 */
>
> +    .domainShutdownFlags = jailhouseDomainShutdownFlags,  /* 6.3.0 */
>
>      .domainDestroy = jailhouseDomainDestroy,    /* 6.3.0 */
>
> +    .domainDestroyFlags = jailhouseDomainDestroyFlags,    /* 6.3.0 */
>
>      .domainGetInfo = jailhouseDomainGetInfo,    /* 6.3.0 */
>
>      .domainGetState = jailhouseDomainGetState,  /* 6.3.0 */
>
>      .domainLookupByID = jailhouseDomainLookupByID,      /* 6.3.0 */
>
> --
>
> 2.17.1
>
>
>
>
>
>
>
> End of libvir-list Digest, Vol 178, Issue 70
>
> ********************************************
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20200905/d2e1a805/attachment-0001.htm>


More information about the libvir-list mailing list