storage/reflink: volume.resize(): succeed without image

Successfully resize volumes without any currently existing image file,
e.g. cleanly stopped volatile volumes: Just update the nominal size in
this case.
This commit is contained in:
Rusty Bird 2019-06-15 16:03:46 +00:00
parent 25e92bd19b
commit ef128156a3
No known key found for this signature in database
GPG Key ID: 469D78F47AAF2ADF

View File

@ -263,15 +263,13 @@ class ReflinkVolume(qubes.storage.Volume):
raise qubes.storage.StoragePoolException(
'Cannot resize: {} is read-only'.format(self.vid))
try: # assume volume is not (cleanly) stopped ...
_resize_file(self._path_dirty, size)
update = True
except FileNotFoundError: # ... but it actually is.
_resize_file(self._path_clean, size)
update = False
for path in (self._path_dirty, self._path_clean):
with suppress(FileNotFoundError):
_resize_file(path, size)
break
self.size = size
if update:
if path == self._path_dirty:
_update_loopdev_sizes(self._path_dirty)
return self