Skip to content

Commit 7056896

Browse files
committed
🐛 Fix storage pool handling in meta patch
Signed-off-by: Muhammed Hussain Karimi <[email protected]>
1 parent f2d1f95 commit 7056896

File tree

4 files changed

+32
-13
lines changed

4 files changed

+32
-13
lines changed

rawfile/internal_svc.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,13 @@ def ExpandRawFile(
6363
is_attached=volume_manager.is_attached(request.volume_id),
6464
status=internal_pb2.ExpandRawFileStatus.RESOURCE_EXHAUSTED,
6565
)
66-
if metadata(request.volume_id).get("thin_provision", False):
66+
if meta.get("thin_provision", False):
6767
truncate(img_file_path, request.new_size)
6868
else:
6969
fallocate(img_file_path, request.new_size)
7070
patch_metadata(
7171
request.volume_id,
72+
meta["storage_pool"],
7273
{"size": request.new_size},
7374
)
7475
return internal_pb2.ExpandRawFileResponse(

rawfile/utils/rawfile.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ def _owner_umask():
7474
os.umask(old_umask) # Restore original umask
7575

7676

77-
def update_metadata(volume_id: str, obj: dict) -> dict:
78-
update_permissions(volume_id)
77+
def update_metadata(volume_id: str, storage_pool: str, obj: dict) -> dict:
78+
update_permissions(volume_id, storage_pool)
7979
with _owner_umask():
8080
meta_tmp = meta_file_tmp(volume_id)
8181
meta = meta_file(volume_id)
@@ -95,12 +95,11 @@ def update_metadata(volume_id: str, obj: dict) -> dict:
9595
return obj
9696

9797

98-
def update_permissions(volume_id: str) -> None:
98+
def update_permissions(volume_id: str, storage_pool: str) -> None:
9999
from utils.volume_manager import manager as volume_manager
100100
from itertools import chain
101101

102-
meta = metadata(volume_id)
103-
_img_dir = volume_manager._get_volume_path(meta["storage_pool"], volume_id)
102+
_img_dir = volume_manager._get_volume_path(storage_pool, volume_id)
104103
if not _img_dir.exists():
105104
return
106105
_img_dir.chmod(D_PERMS)
@@ -112,10 +111,10 @@ def update_permissions(volume_id: str) -> None:
112111
each.chmod(F_PERMS)
113112

114113

115-
def patch_metadata(volume_id: str, obj: dict) -> dict:
114+
def patch_metadata(volume_id: str, storage_pool: str, obj: dict) -> dict:
116115
old_data = metadata_or(volume_id)
117116
new_data = {**old_data, **obj}
118-
return update_metadata(volume_id, new_data)
117+
return update_metadata(volume_id, storage_pool, new_data)
119118

120119

121120
def truncate(img_file, size):

rawfile/utils/snapshot_manager.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,11 @@ def create_snapshot(
7676
reflink_attached = list(set(meta.get("reflink_attached", [])))
7777
if copy_on_write:
7878
reflink_attached.append(name)
79-
patch_metadata(volume_id, {"reflink_attached": reflink_attached})
79+
patch_metadata(
80+
volume_id,
81+
meta["storage_pool"],
82+
{"reflink_attached": reflink_attached},
83+
)
8084
return Snapshot(
8185
name=name,
8286
volume_id=volume_id,
@@ -110,7 +114,11 @@ def delete_snapshot(self, volume_id: str, name: str, temporary: bool = False):
110114
reflink_attached = list(set(meta.get("reflink_attached", [])))
111115
if name in reflink_attached:
112116
reflink_attached.remove(name)
113-
patch_metadata(volume_id, {"reflink_attached": reflink_attached})
117+
patch_metadata(
118+
volume_id,
119+
meta["storage_pool"],
120+
{"reflink_attached": reflink_attached},
121+
)
114122

115123
def restore_snapshot(
116124
self, volume_id: str, name: str, destination: Path, temporary: bool = False

rawfile/utils/volume_manager.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def create_volume(
6262
meta_dir(volume_id).mkdir(exist_ok=True, parents=True)
6363
patch_metadata(
6464
volume_id,
65+
storage_pool,
6566
{
6667
"schema_version": LATEST_SCHEMA_VERSION,
6768
"storage_pool": storage_pool,
@@ -108,6 +109,7 @@ def create_volume(
108109
snapshots_dir.joinpath("temp").mkdir(exist_ok=True, parents=True)
109110
patch_metadata(
110111
volume_id,
112+
storage_pool,
111113
{
112114
"volume_id": volume_id,
113115
"created_at": time.time(),
@@ -148,7 +150,7 @@ def create_volume(
148150
truncate(img_file, size)
149151
else:
150152
fallocate(img_file, size)
151-
patch_metadata(volume_id, {"ready": True})
153+
patch_metadata(volume_id, storage_pool, {"ready": True})
152154
finally:
153155
if source_type == VolumeSource.volume and (
154156
source_volume_id and snapshot_name
@@ -224,7 +226,9 @@ def delete_volume(self, volume_id):
224226
gc_at = now
225227
with VolLock(volume_id):
226228
patch_metadata(
227-
volume_id, {"deleted_at": deleted_at, "gc_at": gc_at, "ready": False}
229+
volume_id,
230+
meta["storage_pool"],
231+
{"deleted_at": deleted_at, "gc_at": gc_at, "ready": False},
228232
)
229233
self.gc_if_needed(volume_id, dry_run=False)
230234
return vol_img_size
@@ -267,7 +271,14 @@ def get_all_volumes_stats(self) -> dict[str, VolumeStats]:
267271
def migrate_metadata(self, volume_id, target_version):
268272
old_data = metadata_or(volume_id)
269273
new_data = migrate_to(old_data, target_version)
270-
return update_metadata(volume_id, new_data)
274+
return update_metadata(
275+
volume_id,
276+
old_data.get(
277+
"storage_pool",
278+
new_data.get("storage_pool", config.csi_driver.default_pool),
279+
),
280+
new_data,
281+
)
271282

272283
def migrate_metadata_dir(self):
273284
for old_meta in glob(

0 commit comments

Comments
 (0)