Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
---
 www/manager6/qemu/HardwareView.js | 11 +++++++-
 www/manager6/qemu/MemoryEdit.js   | 43 ++++++++++++++++++++++++++-----
 2 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/www/manager6/qemu/HardwareView.js 
b/www/manager6/qemu/HardwareView.js
index c6d193fc..815dfcc2 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -73,7 +73,7 @@ Ext.define('PVE.qemu.HardwareView', {
                defaultValue: '512',
                tdCls: 'pve-itype-icon-memory',
                group: 2,
-               multiKey: ['memory', 'balloon', 'shares'],
+               multiKey: ['memory', 'balloon', 'shares', 'allow-ksm'],
                renderer: function(value, metaData, record, ri, ci, store, 
pending) {
                    var res = '';
 
@@ -92,6 +92,12 @@ Ext.define('PVE.qemu.HardwareView', {
                    } else if (balloon === 0) {
                        res += ' [balloon=0]';
                    }
+
+                   let allowKsm = me.getObjectValue('allow-ksm', undefined, 
pending);
+                   if (allowKsm !== undefined) {
+                       res += ' [allow-ksm=' + allowKsm + ']';
+                   }
+
                    return res;
                },
            },
@@ -197,6 +203,9 @@ Ext.define('PVE.qemu.HardwareView', {
            numa: {
                visible: false,
            },
+           'allow-ksm': {
+               visible: false,
+           },
            balloon: {
                visible: false,
            },
diff --git a/www/manager6/qemu/MemoryEdit.js b/www/manager6/qemu/MemoryEdit.js
index 5e91dc9b..e7f1f688 100644
--- a/www/manager6/qemu/MemoryEdit.js
+++ b/www/manager6/qemu/MemoryEdit.js
@@ -32,23 +32,39 @@ Ext.define('PVE.qemu.MemoryInputPanel', {
     },
 
     onGetValues: function(values) {
-       var me = this;
+       let res = {};
 
-       var res = {};
+       let deleteSet = new Set([]);
+
+       // properties that can be passed as-is
+       let propagate = ['allow-ksm', 'memory'];
+
+       propagate.forEach(function(prop) {
+           if (values.delete?.split(',').includes(prop)) {
+               deleteSet.add(prop);
+           }
+           if (prop in values) {
+               res[prop] = values[prop];
+           }
+       });
 
-       res.memory = values.memory;
        res.balloon = values.balloon;
 
        if (!values.ballooning) {
            res.balloon = 0;
-           res.delete = 'shares';
+           deleteSet.add('shares');
        } else if (values.memory === values.balloon) {
            delete res.balloon;
-           res.delete = 'balloon,shares';
+           deleteSet.add('balloon');
+           deleteSet.add('shares');
        } else if (Ext.isDefined(values.shares) && values.shares !== "") {
            res.shares = values.shares;
        } else {
-           res.delete = "shares";
+           deleteSet.add('shares');
+       }
+
+       if (deleteSet.size > 0) {
+           res.delete = deleteSet.keys().toArray().join(',');
        }
 
        return res;
@@ -132,6 +148,20 @@ Ext.define('PVE.qemu.MemoryInputPanel', {
                    },
                },
            },
+           {
+               xtype: 'proxmoxcheckbox',
+               name: 'allow-ksm',
+               labelWidth: labelWidth,
+               fieldLabel: gettext('Allow KSM'),
+               checked: true,
+               uncheckedValue: '0',
+               defaultValue: '1',
+               deleteDefaultValue: true,
+               autoEl: {
+                   tag: 'div',
+                   'data-qtip': gettext('Allow the Kernel Samepage Merging 
daemon to merge memory pages of this VM.'),
+               },
+           },
        ];
 
        if (me.insideWizard) {
@@ -183,6 +213,7 @@ Ext.define('PVE.qemu.MemoryEdit', {
                    shares: data.shares,
                    memory: data.memory || '512',
                    balloon: data.balloon > 0 ? data.balloon : data.memory || 
'512',
+                   'allow-ksm': data['allow-ksm'] ?? true,
                };
 
                ipanel.setValues(values);
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to