|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 10/12] tools/libxl: add support for xenstore quota in domain_config
Add support for xenstore quota in the struct domain_config. Initially
it will be used only for migration of a domain.
Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
Acked-by: Nick Rosbrook <enr0n@xxxxxxxxxx> # golang stuff
---
V2:
- use LOGED() for error logging (Anthony Perard)
- mention additional struct member xenstore_quota in libxl.h
(Anthony Perard)
---
tools/golang/xenlight/helpers.gen.go | 6 ++++++
tools/golang/xenlight/types.gen.go | 1 +
tools/include/libxl.h | 1 +
tools/libs/light/libxl_dom.c | 8 ++++++++
tools/libs/light/libxl_domain.c | 11 +++++++++++
tools/libs/light/libxl_types.idl | 1 +
6 files changed, 28 insertions(+)
diff --git a/tools/golang/xenlight/helpers.gen.go
b/tools/golang/xenlight/helpers.gen.go
index 767b9e45f5..b0c09da910 100644
--- a/tools/golang/xenlight/helpers.gen.go
+++ b/tools/golang/xenlight/helpers.gen.go
@@ -1286,6 +1286,9 @@ if err :=
x.TrapUnmappedAccesses.fromC(&xc.trap_unmapped_accesses);err != nil {
return fmt.Errorf("converting field TrapUnmappedAccesses: %v", err)
}
x.XenstoreFeatureMask = uint32(xc.xenstore_feature_mask)
+if err := x.XenstoreQuota.fromC(&xc.xenstore_quota);err != nil {
+return fmt.Errorf("converting field XenstoreQuota: %v", err)
+}
return nil}
@@ -1825,6 +1828,9 @@ if err :=
x.TrapUnmappedAccesses.toC(&xc.trap_unmapped_accesses); err != nil {
return fmt.Errorf("converting field TrapUnmappedAccesses: %v", err)
}
xc.xenstore_feature_mask = C.uint32_t(x.XenstoreFeatureMask)
+if err := x.XenstoreQuota.toC(&xc.xenstore_quota); err != nil {
+return fmt.Errorf("converting field XenstoreQuota: %v", err)
+}
return nil
}
diff --git a/tools/golang/xenlight/types.gen.go
b/tools/golang/xenlight/types.gen.go
index 8dd610919d..e0fd78ec03 100644
--- a/tools/golang/xenlight/types.gen.go
+++ b/tools/golang/xenlight/types.gen.go
@@ -629,6 +629,7 @@ VmtraceBufKb int
Vpmu Defbool
TrapUnmappedAccesses Defbool
XenstoreFeatureMask uint32
+XenstoreQuota XsQuotaList
}
type DomainBuildInfoTypeUnion interface {
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 6d2910df34..80e3ec8de9 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -1545,6 +1545,7 @@ void libxl_mac_copy(libxl_ctx *ctx, libxl_mac *dst, const
libxl_mac *src);
* libxl_xs_quota_global_set()
* libxl_xs_quota_domain_get()
* libxl_xs_quota_domain_set()
+ * and the xenstore_quota member of struct domain_build_info
* are available.
*/
#define LIBXL_HAVE_XENSTORE_QUOTA
diff --git a/tools/libs/light/libxl_dom.c b/tools/libs/light/libxl_dom.c
index 05ebc69534..4ff5f65f6f 100644
--- a/tools/libs/light/libxl_dom.c
+++ b/tools/libs/light/libxl_dom.c
@@ -509,6 +509,14 @@ retry_transaction:
xs_introduce_domain(ctx->xsh, domid, state->store_mfn, state->store_port);
+ if (info->xenstore_quota.num_quota) {
+ rc = libxl_xs_quota_domain_set(ctx, domid, &info->xenstore_quota);
+ if (rc) {
+ LOGED(ERROR, domid, "Failed to set Xenstore quota");
+ goto out;
+ }
+ }
+
out:
free(vm_path);
return rc;
diff --git a/tools/libs/light/libxl_domain.c b/tools/libs/light/libxl_domain.c
index 5be47f687f..37fcd92871 100644
--- a/tools/libs/light/libxl_domain.c
+++ b/tools/libs/light/libxl_domain.c
@@ -2533,6 +2533,17 @@ static void retrieve_domain_configuration_end(libxl__egc
*egc,
}
}
+ /* Xenstore quota */
+ {
+ libxl_xs_quota_list_dispose(&d_config->b_info.xenstore_quota);
+ rc = libxl_xs_quota_domain_get(CTX, domid,
+ &d_config->b_info.xenstore_quota);
+ if (rc) {
+ LOGED(ERROR, domid, "Fail to get xenstore quota");
+ goto out;
+ }
+ }
+
/* Devices: disk, nic, vtpm, pcidev etc. */
/* The MERGE macro implements following logic:
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index 1a63c8af76..a7893460f0 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -760,6 +760,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
("vpmu", libxl_defbool),
("trap_unmapped_accesses", libxl_defbool),
("xenstore_feature_mask", uint32, {'init_val': '~0U'}),
+ ("xenstore_quota", libxl_xs_quota_list),
], dir=DIR_IN,
copy_deprecated_fn="libxl__domain_build_info_copy_deprecated",
--
2.53.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |