Signed-off-by: Lin Ma <lma@xxxxxxxx> --- ui/fsdetails.ui | 14 ++++++++++++++ virtManager/addhardware.py | 6 ++---- virtManager/details/details.py | 5 +---- virtManager/device/fsdetails.py | 13 +++++++++++++ 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/ui/fsdetails.ui b/ui/fsdetails.ui index e5311492..e662b181 100644 --- a/ui/fsdetails.ui +++ b/ui/fsdetails.ui @@ -40,6 +40,20 @@ <property name="top-attach">7</property> </packing> </child> + <child> + <object class="GtkCheckButton" id="mem-sharedaccess"> + <property name="label" translatable="yes">S_hared memory access</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="use-underline">True</property> + <property name="draw-indicator">True</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">8</property> + </packing> + </child> <child> <object class="GtkBox" id="fs-source-box"> <property name="visible">True</property> diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py index 463410ab..25709506 100644 --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -9,7 +9,7 @@ import traceback from gi.repository import Gtk from virtinst import (DeviceChannel, DeviceConsole, - DeviceController, DeviceDisk, DeviceHostdev, DeviceFilesystem, + DeviceController, DeviceDisk, DeviceHostdev, DeviceInput, DeviceInterface, DevicePanic, DeviceParallel, DeviceRedirdev, DeviceRng, DeviceSerial, DeviceSmartcard, DeviceSound, DeviceTpm, DeviceVideo, DeviceVsock, DeviceWatchdog) @@ -1554,9 +1554,7 @@ class vmmAddHardware(vmmGObjectUI): return dev def _build_filesystem(self): - fsdriver = uiutil.get_list_selection( - self._fsdetails.widget("fs-driver-combo")) - if fsdriver == DeviceFilesystem.DRIVER_VIRTIOFS: + if self._fsdetails.force_mem_shared_access(): guest = self.vm.xmlobj if guest.cpu.has_private_memAccess_cells(): kwargs = {} diff --git a/virtManager/details/details.py b/virtManager/details/details.py index 6c194d2f..289c9909 100644 --- a/virtManager/details/details.py +++ b/virtManager/details/details.py @@ -12,7 +12,6 @@ import libvirt import virtinst from virtinst import log -from virtinst import DeviceFilesystem from ..lib import uiutil from ..addhardware import vmmAddHardware @@ -1641,9 +1640,7 @@ class vmmDetails(vmmGObjectUI): kwargs = {} if self._edited(EDIT_FS): - fsdriver = uiutil.get_list_selection( - self.fsDetails.widget("fs-driver-combo")) - if fsdriver == DeviceFilesystem.DRIVER_VIRTIOFS: + if self.fsDetails.force_mem_shared_access(): guest = self.vm.xmlobj if guest.cpu.has_private_memAccess_cells(): embeded_kwargs = {} diff --git a/virtManager/device/fsdetails.py b/virtManager/device/fsdetails.py index 1650e1b8..264db3bb 100644 --- a/virtManager/device/fsdetails.py +++ b/virtManager/device/fsdetails.py @@ -120,6 +120,9 @@ class vmmFSDetails(vmmGObjectUI): self.conn.is_qemu() or self.conn.is_test() or self.conn.is_lxc()) + self.widget("mem-sharedaccess").set_visible( + self.conn.is_qemu() or + self.conn.is_test()) ############## @@ -176,6 +179,7 @@ class vmmFSDetails(vmmGObjectUI): self.widget("fs-source").set_text("") self.widget("fs-target").set_text("") self.widget("fs-readonly").set_active(False) + self.widget("mem-sharedaccess").set_active(False) self._sync_ui() self._active_edits = [] @@ -298,13 +302,22 @@ class vmmFSDetails(vmmGObjectUI): def _fs_driver_cb(self, src): fsdriver = uiutil.get_list_selection(src) + self.widget("mem-sharedaccess").set_visible(False) if fsdriver == DeviceFilesystem.DRIVER_VIRTIOFS: uiutil.set_list_selection( self.widget("fs-mode-combo"), DeviceFilesystem.MODE_PASSTHROUGH) self.widget("fs-mode-combo").set_sensitive(False) self.widget("fs-readonly").set_active(False) self.widget("fs-readonly").set_sensitive(False) + guest = self.vm.xmlobj + if (guest.cpu.has_private_memAccess_cells() or + (not guest.cpu.all_shared_memAccess_cells() and + not guest.memoryBacking.is_access_shared())): + self.widget("mem-sharedaccess").set_visible(True) else: self.widget("fs-mode-combo").set_sensitive(True) self.widget("fs-readonly").set_sensitive(True) self._change_cb(_EDIT_FS_DRIVER) + + def force_mem_shared_access(self): + return self.widget("mem-sharedaccess").get_active() -- 2.26.2