Merge pull request #1800 from teawater/fix_vm

Fix issue of virtio-mem
This commit is contained in:
Fupan Li
2021-05-07 13:08:12 +08:00
committed by GitHub

View File

@@ -768,8 +768,8 @@ func (q *qemu) setupVirtioMem() error {
if err != nil { if err != nil {
return err return err
} }
// 1024 is size for nvdimm // backend memory size must be multiple of 2Mib
sizeMB := int(maxMem) - int(q.config.MemorySize) sizeMB := (int(maxMem) - int(q.config.MemorySize)) >> 2 << 2
share, target, memoryBack, err := q.getMemArgs() share, target, memoryBack, err := q.getMemArgs()
if err != nil { if err != nil {
@@ -2043,8 +2043,9 @@ func (q *qemu) resizeMemory(ctx context.Context, reqMemMB uint32, memoryBlockSiz
var addMemDevice memoryDevice var addMemDevice memoryDevice
if q.config.VirtioMem && currentMemory != reqMemMB { if q.config.VirtioMem && currentMemory != reqMemMB {
q.Logger().WithField("hotplug", "memory").Debugf("resize memory from %dMB to %dMB", currentMemory, reqMemMB) q.Logger().WithField("hotplug", "memory").Debugf("resize memory from %dMB to %dMB", currentMemory, reqMemMB)
sizeByte := (reqMemMB - q.config.MemorySize) * 1024 * 1024 sizeByte := uint64(reqMemMB - q.config.MemorySize)
err := q.qmpMonitorCh.qmp.ExecQomSet(q.qmpMonitorCh.ctx, "virtiomem0", "requested-size", uint64(sizeByte)) sizeByte = sizeByte * 1024 * 1024
err := q.qmpMonitorCh.qmp.ExecQomSet(q.qmpMonitorCh.ctx, "virtiomem0", "requested-size", sizeByte)
if err != nil { if err != nil {
return 0, memoryDevice{}, err return 0, memoryDevice{}, err
} }