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
	 Marek Marczykowski
						Marek Marczykowski