dom0: run xl create through sudo
This finally solve problem with RLIMIT_MEMLOCK (less important) and is required to attach PCI devices (eg netvm restart) - more important.
This commit is contained in:
parent
891653a413
commit
925647c7d7
@ -31,7 +31,6 @@ import re
|
|||||||
import shutil
|
import shutil
|
||||||
import uuid
|
import uuid
|
||||||
import time
|
import time
|
||||||
import resource
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from qmemman_client import QMemmanClient
|
from qmemman_client import QMemmanClient
|
||||||
|
|
||||||
@ -885,21 +884,13 @@ class QubesVm(object):
|
|||||||
# refresh config file
|
# refresh config file
|
||||||
self.create_config_file()
|
self.create_config_file()
|
||||||
|
|
||||||
limit_memlock = resource.getrlimit(resource.RLIMIT_MEMLOCK)
|
|
||||||
# try to increase limit if needed
|
|
||||||
if limit_memlock[0] < int(self.memory) * 1024:
|
|
||||||
# intentionally don't catch exceptions - if it fails - there is no
|
|
||||||
# memory for new VM
|
|
||||||
resource.setrlimit(resource.RLIMIT_MEMLOCK,
|
|
||||||
(int(self.memory) * 1024, limit_memlock[1]))
|
|
||||||
|
|
||||||
mem_required = int(self.memory) * 1024 * 1024
|
mem_required = int(self.memory) * 1024 * 1024
|
||||||
qmemman_client = QMemmanClient()
|
qmemman_client = QMemmanClient()
|
||||||
if not qmemman_client.request_memory(mem_required):
|
if not qmemman_client.request_memory(mem_required):
|
||||||
qmemman_client.close()
|
qmemman_client.close()
|
||||||
raise MemoryError ("ERROR: insufficient memory to start this VM")
|
raise MemoryError ("ERROR: insufficient memory to start this VM")
|
||||||
|
|
||||||
xl_cmdline = ['/usr/sbin/xl', 'create', self.conf_file, '-p']
|
xl_cmdline = ['sudo', '/usr/sbin/xl', 'create', self.conf_file, '-p']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
subprocess.check_call(xl_cmdline)
|
subprocess.check_call(xl_cmdline)
|
||||||
|
Loading…
Reference in New Issue
Block a user