Sim fs resize

Signed-off-by: mengwenhua <mengwenhua@xfusion.com>
This commit is contained in:
mengwenhua 2023-01-07 17:45:51 +08:00
parent 18f381e424
commit c11f7cbc42
3 changed files with 108 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -2,7 +2,7 @@
%define with_python2 0
Name: libstoragemgmt
Version: 1.8.0
Release: 6
Release: 7
Summary: Storage array management library
License: LGPLv2+
URL: https://github.com/libstorage/libstoragemgmt
@ -12,6 +12,9 @@ Patch1: 0001-change-run-dir.patch
Patch2: 0002-Specify-signed-char.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: openssl-devel glib2-devel systemd bash-completion libconfig-devel systemd-devel
BuildRequires: procps sqlite-devel python3-six python3-devel systemd systemd-devel chrpath valgrind
@ -372,6 +375,9 @@ fi
%{_mandir}/man*/*
%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
- fix too many argument for format