[PATCH go-xml] 1, add memoryBacking for domain. 2, add hugepages, nosharepages, locked, source, access and allocation for memoryBacking. 3, add test case for memoryBacking.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: zhenwei.pi <zhenwei.pi@xxxxxxxxxxxxxxx>

---
 domain.go      | 76 +++++++++++++++++++++++++++++++++++++++++++---------------
 domain_test.go | 38 +++++++++++++++++++++++++++++
 2 files changed, 95 insertions(+), 19 deletions(-)

diff --git a/domain.go b/domain.go
index d81ac2a..773a83e 100644
--- a/domain.go
+++ b/domain.go
@@ -459,6 +459,43 @@ type DomainMaxMemory struct {
 	Slots uint   `xml:"slots,attr,omitempty"`
 }
+type DomainMemoryHugepage struct {
+	Size    uint   `xml:"size,attr"`
+	Unit    string `xml:"unit,attr,omitempty"`
+	Nodeset string `xml:"nodeset,attr,omitempty"`
+}
+
+type DomainMemoryHugepages struct {
+	Hugepages []DomainMemoryHugepage `xml:"page"`
+}
+
+type DomainMemoryNosharepages struct {
+}
+
+type DomainMemoryLocked struct {
+}
+
+type DomainMemorySource struct {
+	Type string `xml:"type,attr,omitempty"`
+}
+
+type DomainMemoryAccess struct {
+	Mode string `xml:"mode,attr,omitempty"`
+}
+
+type DomainMemoryAllocation struct {
+	Mode string `xml:"mode,attr,omitempty"`
+}
+
+type DomainMemoryBacking struct {
+	MemoryHugePages    *DomainMemoryHugepages    `xml:"hugepages"`
+	MemoryNosharepages *DomainMemoryNosharepages `xml:"nosharepages"`
+	MemoryLocked       *DomainMemoryLocked       `xml:"locked"`
+	MemorySource       *DomainMemorySource       `xml:"source"`
+	MemoryAccess       *DomainMemoryAccess       `xml:"access"`
+	MemoryAllocation   *DomainMemoryAllocation   `xml:"allocation"`
+}
+
 type DomainOSType struct {
 	Arch    string `xml:"arch,attr,omitempty"`
 	Machine string `xml:"machine,attr,omitempty"`
@@ -681,25 +718,26 @@ type DomainQEMUCommandline struct {
 // matching the order of XML elements that libvirt
 // will generate when dumping XML.
 type Domain struct {
-	XMLName         xml.Name           `xml:"domain"`
-	Type            string             `xml:"type,attr,omitempty"`
-	Name            string             `xml:"name"`
-	UUID            string             `xml:"uuid,omitempty"`
-	Memory          *DomainMemory      `xml:"memory"`
-	CurrentMemory   *DomainMemory      `xml:"currentMemory"`
-	MaximumMemory   *DomainMaxMemory   `xml:"maxMemory"`
-	VCPU            *DomainVCPU        `xml:"vcpu"`
-	VCPUs           *DomainVCPUs       `xml:"vcpus"`
-	Resource        *DomainResource    `xml:"resource"`
-	SysInfo         *DomainSysInfo     `xml:"sysinfo"`
-	OS              *DomainOS          `xml:"os"`
-	Features        *DomainFeatureList `xml:"features"`
-	CPU             *DomainCPU         `xml:"cpu"`
-	Clock           *DomainClock       `xml:"clock,omitempty"`
-	OnPoweroff      string             `xml:"on_poweroff,omitempty"`
-	OnReboot        string             `xml:"on_reboot,omitempty"`
-	OnCrash         string             `xml:"on_crash,omitempty"`
-	Devices         *DomainDeviceList  `xml:"devices"`
+	XMLName         xml.Name             `xml:"domain"`
+	Type            string               `xml:"type,attr,omitempty"`
+	Name            string               `xml:"name"`
+	UUID            string               `xml:"uuid,omitempty"`
+	Memory          *DomainMemory        `xml:"memory"`
+	CurrentMemory   *DomainMemory        `xml:"currentMemory"`
+	MaximumMemory   *DomainMaxMemory     `xml:"maxMemory"`
+	MemoryBacking   *DomainMemoryBacking `xml:"memoryBacking"`
+	VCPU            *DomainVCPU          `xml:"vcpu"`
+	VCPUs           *DomainVCPUs         `xml:"vcpus"`
+	Resource        *DomainResource      `xml:"resource"`
+	SysInfo         *DomainSysInfo       `xml:"sysinfo"`
+	OS              *DomainOS            `xml:"os"`
+	Features        *DomainFeatureList   `xml:"features"`
+	CPU             *DomainCPU           `xml:"cpu"`
+	Clock           *DomainClock         `xml:"clock,omitempty"`
+	OnPoweroff      string               `xml:"on_poweroff,omitempty"`
+	OnReboot        string               `xml:"on_reboot,omitempty"`
+	OnCrash         string               `xml:"on_crash,omitempty"`
+	Devices         *DomainDeviceList    `xml:"devices"`
 	QEMUCommandline *DomainQEMUCommandline
 }
diff --git a/domain_test.go b/domain_test.go
index 3ff1dc1..51d413b 100644
--- a/domain_test.go
+++ b/domain_test.go
@@ -435,6 +435,33 @@ var domainTestData = []struct {
 				Value: 16384,
 				Slots: 2,
 			},
+			MemoryBacking: &DomainMemoryBacking{
+				MemoryHugePages: &DomainMemoryHugepages{
+					Hugepages: []DomainMemoryHugepage{
+						{
+							Size:    1,
+							Unit:    "G",
+							Nodeset: "0-3,5",
+						},
+						{
+							Size:    2,
+							Unit:    "M",
+							Nodeset: "4",
+						},
+					},
+				},
+				MemoryNosharepages: &DomainMemoryNosharepages{},
+				MemoryLocked:       &DomainMemoryLocked{},
+				MemorySource: &DomainMemorySource{
+					Type: "file|anonymous",
+				},
+				MemoryAccess: &DomainMemoryAccess{
+					Mode: "shared|private",
+				},
+				MemoryAllocation: &DomainMemoryAllocation{
+					Mode: "immediate|ondemand",
+				},
+			},
 			OS: &DomainOS{
 				Type: &DomainOSType{
 					Arch:    "x86_64",
@@ -532,6 +559,17 @@ var domainTestData = []struct {
 			`  <memory unit="KiB">8192</memory>`,
 			`  <currentMemory unit="KiB">4096</currentMemory>`,
 			`  <maxMemory unit="KiB" slots="2">16384</maxMemory>`,
+			`  <memoryBacking>`,
+			`    <hugepages>`,
+			`      <page size="1" unit="G" nodeset="0-3,5"></page>`,
+			`      <page size="2" unit="M" nodeset="4"></page>`,
+			`    </hugepages>`,
+			`    <nosharepages></nosharepages>`,
+			`    <locked></locked>`,
+			`    <source type="file|anonymous"></source>`,
+			`    <access mode="shared|private"></access>`,
+			`    <allocation mode="immediate|ondemand"></allocation>`,
+			`  </memoryBacking>`,
 			`  <sysinfo type="smbios">`,
 			`    <system>`,
 			`      <entry name="manufacturer">manufacturer</entry>`,
--
2.7.4


--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux