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) | ||||
| 
 | ||||
|         self.rootcow_img = dir_path + "/" + default_rootcow_img | ||||
|         self.swapcow_img = dir_path + "/" + default_swapcow_img | ||||
| 
 | ||||
|     def set_updateable(self): | ||||
|         if self.is_updateable(): | ||||
| @ -872,6 +873,7 @@ class QubesCowVm(QubesVm): | ||||
|         if not self.template_vm.is_updateable(): | ||||
|             self.updateable = True | ||||
|             self.reset_cow_storage() | ||||
|             self.reset_swap_cow_storage() | ||||
|         else: | ||||
|             # Temaplate VM is Updatable itself --> can't make the AppVM updateable too | ||||
|             # as this would cause COW-backed storage incoherency | ||||
| @ -957,6 +959,8 @@ class QubesCowVm(QubesVm): | ||||
|         if not self.is_updateable(): | ||||
|             self.reset_cow_storage() | ||||
| 
 | ||||
|         self.reset_swap_cow_storage() | ||||
| 
 | ||||
|         return super(QubesCowVm, self).start(debug_console=debug_console, verbose=verbose, preparing_dvm=preparing_dvm) | ||||
| 
 | ||||
|     def reset_cow_storage (self): | ||||
| @ -977,6 +981,16 @@ class QubesCowVm(QubesVm): | ||||
|         f_cow.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): | ||||
|         if dry_run: | ||||
|             return | ||||
| @ -1331,8 +1345,6 @@ class QubesAppVm(QubesCowVm): | ||||
|         super(QubesAppVm, self).__init__(**kwargs) | ||||
|         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: | ||||
|             kwargs["firewall_conf"] = dir_path + "/" + default_firewall_conf_file | ||||
| 
 | ||||
| @ -1345,7 +1357,6 @@ class QubesAppVm(QubesCowVm): | ||||
|     def set_updateable(self): | ||||
| 
 | ||||
|         super(QubesAppVm, self).set_updateable() | ||||
|         self.reset_swap_cow_storage() | ||||
| 
 | ||||
|     def create_on_disk(self, verbose): | ||||
|         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) | ||||
| 
 | ||||
|     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): | ||||
|     """ | ||||
|     A collection of Qubes VMs indexed by Qubes id (qid) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marek Marczykowski
						Marek Marczykowski