!18 Sim fs resize
From: @meng-wenhua Reviewed-by: @Charlie_li Signed-off-by: @Charlie_li
This commit is contained in:
commit
82185efc57
@ -0,0 +1,29 @@
|
|||||||
|
From 2ba3527ae5dc345ee91797c6445bb7fe009b02e3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tony Asleson <tasleson@redhat.com>
|
||||||
|
Date: Thu, 23 May 2019 14:35:51 -0500
|
||||||
|
Subject: [PATCH 1/2] simarray._block_rounding: Use integer division
|
||||||
|
|
||||||
|
This was causing problems for py2 vs. py3 code. Always use integer
|
||||||
|
division.
|
||||||
|
|
||||||
|
Signed-off-by: Tony Asleson <tasleson@redhat.com>
|
||||||
|
---
|
||||||
|
plugin/sim/simarray.py | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/plugin/sim/simarray.py b/plugin/sim/simarray.py
|
||||||
|
index 6f0a582..bc7817b 100644
|
||||||
|
--- a/plugin/sim/simarray.py
|
||||||
|
+++ b/plugin/sim/simarray.py
|
||||||
|
@@ -1268,7 +1268,7 @@ def _check_pool_free_space(self, sim_pool_id, size_bytes):
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _block_rounding(size_bytes):
|
||||||
|
- return (size_bytes + BackStore.BLK_SIZE - 1) / \
|
||||||
|
+ return (size_bytes + BackStore.BLK_SIZE - 1) // \
|
||||||
|
BackStore.BLK_SIZE * BackStore.BLK_SIZE
|
||||||
|
|
||||||
|
def sim_vol_create(self, name, size_bytes, sim_pool_id, is_hw_raid_vol=0):
|
||||||
|
--
|
||||||
|
2.37.3.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,72 @@
|
|||||||
|
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
|
||||||
|
|
||||||
@ -2,7 +2,7 @@
|
|||||||
%define with_python2 0
|
%define with_python2 0
|
||||||
Name: libstoragemgmt
|
Name: libstoragemgmt
|
||||||
Version: 1.8.0
|
Version: 1.8.0
|
||||||
Release: 6
|
Release: 7
|
||||||
Summary: Storage array management library
|
Summary: Storage array management library
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
URL: https://github.com/libstorage/libstoragemgmt
|
URL: https://github.com/libstorage/libstoragemgmt
|
||||||
@ -12,6 +12,9 @@ Patch1: 0001-change-run-dir.patch
|
|||||||
Patch2: 0002-Specify-signed-char.patch
|
Patch2: 0002-Specify-signed-char.patch
|
||||||
Patch3: fix-too-many-argument-for-format.patch
|
Patch3: fix-too-many-argument-for-format.patch
|
||||||
|
|
||||||
|
Patch6000: backport-0001-simarray._block_rounding-Use-integer-division.patch
|
||||||
|
Patch6001: backport-0002-sim_array-volume-fs-_resize-Change-re-size-behavior.patch
|
||||||
|
|
||||||
BuildRequires: gcc gcc-c++ autoconf automake libtool libxml2-devel check-devel perl-interpreter
|
BuildRequires: gcc gcc-c++ autoconf automake libtool libxml2-devel check-devel perl-interpreter
|
||||||
BuildRequires: openssl-devel glib2-devel systemd bash-completion libconfig-devel systemd-devel
|
BuildRequires: openssl-devel glib2-devel systemd bash-completion libconfig-devel systemd-devel
|
||||||
BuildRequires: procps sqlite-devel python3-six python3-devel systemd systemd-devel chrpath valgrind
|
BuildRequires: procps sqlite-devel python3-six python3-devel systemd systemd-devel chrpath valgrind
|
||||||
@ -372,6 +375,9 @@ fi
|
|||||||
%{_mandir}/man*/*
|
%{_mandir}/man*/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Jan 7 2023 mengwenhua <mengwenhua@xfusion.com> - 1.8.0-7
|
||||||
|
- Sim fs resize
|
||||||
|
|
||||||
* Fri Jan 28 2022 wulei <wulei80@huawei.com> - 1.8.0-6
|
* Fri Jan 28 2022 wulei <wulei80@huawei.com> - 1.8.0-6
|
||||||
- fix too many argument for format
|
- fix too many argument for format
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user