73 lines
3.1 KiB
Diff
73 lines
3.1 KiB
Diff
|
|
From 4e8c6efae3bf8c016c560e58771b7a4db7032efe Mon Sep 17 00:00:00 2001
|
||
|
|
From: Tony Asleson <tasleson@redhat.com>
|
||
|
|
Date: Thu, 23 May 2019 14:43:41 -0500
|
||
|
|
Subject: [PATCH 2/2] sim_array [volume|fs]_resize: Change re-size behavior
|
||
|
|
|
||
|
|
The simulator only allows size increments of a block size. The code was
|
||
|
|
returning success if the user specified 1 byte more for the resize, but
|
||
|
|
internally it wasn't updating the size, eg. it was leaving the previous
|
||
|
|
rounded down size. This goes against the documentation for the volume
|
||
|
|
re-size where we may round up for resize. This change rounds up the
|
||
|
|
supplied value. If the rounded up size matches current size we return
|
||
|
|
no state change, else we round up and update the simulator value to match.
|
||
|
|
|
||
|
|
This also matches the expected behavior that when successful the new size
|
||
|
|
will indeed be different, although it may be larger than specified and
|
||
|
|
if the exact operation is repeated, it will fail with no state change.
|
||
|
|
|
||
|
|
Signed-off-by: Tony Asleson <tasleson@redhat.com>
|
||
|
|
---
|
||
|
|
plugin/sim/simarray.py | 22 ++++++----------------
|
||
|
|
1 file changed, 6 insertions(+), 16 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/plugin/sim/simarray.py b/plugin/sim/simarray.py
|
||
|
|
index bc7817b..8552e3d 100644
|
||
|
|
--- a/plugin/sim/simarray.py
|
||
|
|
+++ b/plugin/sim/simarray.py
|
||
|
|
@@ -1367,18 +1367,12 @@ def _sim_ag_ids_of_masked_vol(self, sim_vol_id):
|
||
|
|
'vol_masks', 'vol_id="%s"' % sim_vol_id))
|
||
|
|
|
||
|
|
def sim_vol_resize(self, sim_vol_id, new_size_bytes):
|
||
|
|
- org_new_size_bytes = new_size_bytes
|
||
|
|
new_size_bytes = BackStore._block_rounding(new_size_bytes)
|
||
|
|
sim_vol = self.sim_vol_of_id(sim_vol_id)
|
||
|
|
if sim_vol['total_space'] == new_size_bytes:
|
||
|
|
- if org_new_size_bytes != new_size_bytes:
|
||
|
|
- # Even volume size is identical to rounded size,
|
||
|
|
- # but it's not what user requested, hence we silently pass.
|
||
|
|
- return
|
||
|
|
- else:
|
||
|
|
- raise LsmError(
|
||
|
|
- ErrorNumber.NO_STATE_CHANGE,
|
||
|
|
- "Volume size is identical to requested")
|
||
|
|
+ raise LsmError(
|
||
|
|
+ ErrorNumber.NO_STATE_CHANGE,
|
||
|
|
+ "Volume size is identical to requested")
|
||
|
|
|
||
|
|
sim_pool = self.sim_pool_of_id(sim_vol['pool_id'])
|
||
|
|
|
||
|
|
@@ -1610,17 +1604,13 @@ def sim_fs_delete(self, sim_fs_id):
|
||
|
|
self._data_delete("fss", 'id="%s"' % sim_fs_id)
|
||
|
|
|
||
|
|
def sim_fs_resize(self, sim_fs_id, new_size_bytes):
|
||
|
|
- org_new_size_bytes = new_size_bytes
|
||
|
|
new_size_bytes = BackStore._block_rounding(new_size_bytes)
|
||
|
|
sim_fs = self.sim_fs_of_id(sim_fs_id)
|
||
|
|
|
||
|
|
if sim_fs['total_space'] == new_size_bytes:
|
||
|
|
- if new_size_bytes != org_new_size_bytes:
|
||
|
|
- return
|
||
|
|
- else:
|
||
|
|
- raise LsmError(
|
||
|
|
- ErrorNumber.NO_STATE_CHANGE,
|
||
|
|
- "File System size is identical to requested")
|
||
|
|
+ raise LsmError(
|
||
|
|
+ ErrorNumber.NO_STATE_CHANGE,
|
||
|
|
+ "File System size is identical to requested")
|
||
|
|
|
||
|
|
# TODO(Gris Ge): If a fs is in a clone/snapshot relationship, resize
|
||
|
|
# should be handled properly.
|
||
|
|
--
|
||
|
|
2.37.3.windows.1
|
||
|
|
|