Swap COW for all CowVMs, not only AppVM
This commit is contained in:
parent
3043a391e0
commit
8928e55215
@ -862,6 +862,7 @@ class QubesCowVm(QubesVm):
|
|||||||
private_img if private_img is not None else default_private_img)
|
private_img if private_img is not None else default_private_img)
|
||||||
|
|
||||||
self.rootcow_img = dir_path + "/" + default_rootcow_img
|
self.rootcow_img = dir_path + "/" + default_rootcow_img
|
||||||
|
self.swapcow_img = dir_path + "/" + default_swapcow_img
|
||||||
|
|
||||||
def set_updateable(self):
|
def set_updateable(self):
|
||||||
if self.is_updateable():
|
if self.is_updateable():
|
||||||
@ -872,6 +873,7 @@ class QubesCowVm(QubesVm):
|
|||||||
if not self.template_vm.is_updateable():
|
if not self.template_vm.is_updateable():
|
||||||
self.updateable = True
|
self.updateable = True
|
||||||
self.reset_cow_storage()
|
self.reset_cow_storage()
|
||||||
|
self.reset_swap_cow_storage()
|
||||||
else:
|
else:
|
||||||
# Temaplate VM is Updatable itself --> can't make the AppVM updateable too
|
# Temaplate VM is Updatable itself --> can't make the AppVM updateable too
|
||||||
# as this would cause COW-backed storage incoherency
|
# as this would cause COW-backed storage incoherency
|
||||||
@ -957,6 +959,8 @@ class QubesCowVm(QubesVm):
|
|||||||
if not self.is_updateable():
|
if not self.is_updateable():
|
||||||
self.reset_cow_storage()
|
self.reset_cow_storage()
|
||||||
|
|
||||||
|
self.reset_swap_cow_storage()
|
||||||
|
|
||||||
return super(QubesCowVm, self).start(debug_console=debug_console, verbose=verbose, preparing_dvm=preparing_dvm)
|
return super(QubesCowVm, self).start(debug_console=debug_console, verbose=verbose, preparing_dvm=preparing_dvm)
|
||||||
|
|
||||||
def reset_cow_storage (self):
|
def reset_cow_storage (self):
|
||||||
@ -977,6 +981,16 @@ class QubesCowVm(QubesVm):
|
|||||||
f_cow.close ()
|
f_cow.close ()
|
||||||
f_root.close()
|
f_root.close()
|
||||||
|
|
||||||
|
def reset_swap_cow_storage (self):
|
||||||
|
print "--> Resetting the swap COW storage: {0}...".format (self.swapcow_img)
|
||||||
|
if os.path.exists (self.swapcow_img):
|
||||||
|
os.remove (self.swapcow_img)
|
||||||
|
|
||||||
|
f_swap_cow = open (self.swapcow_img, "w")
|
||||||
|
f_swap_cow.truncate (swap_cow_sz)
|
||||||
|
f_swap_cow.close()
|
||||||
|
|
||||||
|
|
||||||
def remove_from_disk(self):
|
def remove_from_disk(self):
|
||||||
if dry_run:
|
if dry_run:
|
||||||
return
|
return
|
||||||
@ -1331,8 +1345,6 @@ class QubesAppVm(QubesCowVm):
|
|||||||
super(QubesAppVm, self).__init__(**kwargs)
|
super(QubesAppVm, self).__init__(**kwargs)
|
||||||
dir_path = self.dir_path
|
dir_path = self.dir_path
|
||||||
|
|
||||||
self.swapcow_img = dir_path + "/" + default_swapcow_img
|
|
||||||
|
|
||||||
if "firewall_conf" not in kwargs or kwargs["firewall_conf"] is None:
|
if "firewall_conf" not in kwargs or kwargs["firewall_conf"] is None:
|
||||||
kwargs["firewall_conf"] = dir_path + "/" + default_firewall_conf_file
|
kwargs["firewall_conf"] = dir_path + "/" + default_firewall_conf_file
|
||||||
|
|
||||||
@ -1345,7 +1357,6 @@ class QubesAppVm(QubesCowVm):
|
|||||||
def set_updateable(self):
|
def set_updateable(self):
|
||||||
|
|
||||||
super(QubesAppVm, self).set_updateable()
|
super(QubesAppVm, self).set_updateable()
|
||||||
self.reset_swap_cow_storage()
|
|
||||||
|
|
||||||
def create_on_disk(self, verbose):
|
def create_on_disk(self, verbose):
|
||||||
if dry_run:
|
if dry_run:
|
||||||
@ -1467,15 +1478,6 @@ class QubesAppVm(QubesCowVm):
|
|||||||
|
|
||||||
return super(QubesAppVm, self).start(debug_console=debug_console, verbose=verbose, preparing_dvm=preparing_dvm)
|
return super(QubesAppVm, self).start(debug_console=debug_console, verbose=verbose, preparing_dvm=preparing_dvm)
|
||||||
|
|
||||||
def reset_swap_cow_storage (self):
|
|
||||||
print "--> Resetting the swap COW storage: {0}...".format (self.swapcow_img)
|
|
||||||
if os.path.exists (self.swapcow_img):
|
|
||||||
os.remove (self.swapcow_img)
|
|
||||||
|
|
||||||
f_swap_cow = open (self.swapcow_img, "w")
|
|
||||||
f_swap_cow.truncate (swap_cow_sz)
|
|
||||||
f_swap_cow.close()
|
|
||||||
|
|
||||||
class QubesVmCollection(dict):
|
class QubesVmCollection(dict):
|
||||||
"""
|
"""
|
||||||
A collection of Qubes VMs indexed by Qubes id (qid)
|
A collection of Qubes VMs indexed by Qubes id (qid)
|
||||||
|
Loading…
Reference in New Issue
Block a user