From d164e49bdecadcc45579bccad39cb39ee4106ff7 Mon Sep 17 00:00:00 2001 From: Nikhilkumar Shelke Date: Tue, 8 Mar 2022 14:30:00 +0530 Subject: [PATCH] mgr/volumes: the 'mode' should honor idempotent subvolume creation currently the 'mode' argument is not honored idempotent subvolume creation for existing subvolume. Fixes: https://tracker.ceph.com/issues/54375 Signed-off-by: Nikhilkumar Shelke --- .../mgr/volumes/fs/operations/versions/subvolume_base.py | 5 +++++ src/pybind/mgr/volumes/fs/volume.py | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py b/src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py index 346751b2210..68d03e8d008 100644 --- a/src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py +++ b/src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py @@ -250,6 +250,11 @@ class SubvolumeBase(object): if uid is not None and gid is not None: self.fs.chown(path, uid, gid) + # set mode + mode = attrs.get("mode", None) + if mode is not None: + self.fs.lchmod(path, mode) + def _resize(self, path, newsize, noshrink): try: newsize = int(newsize) diff --git a/src/pybind/mgr/volumes/fs/volume.py b/src/pybind/mgr/volumes/fs/volume.py index 10247e21111..38dbc34e1a8 100644 --- a/src/pybind/mgr/volumes/fs/volume.py +++ b/src/pybind/mgr/volumes/fs/volume.py @@ -176,6 +176,7 @@ class VolumeClient(CephfsClient["Module"]): pool = kwargs['pool_layout'] uid = kwargs['uid'] gid = kwargs['gid'] + mode = kwargs['mode'] isolate_nspace = kwargs['namespace_isolated'] try: @@ -187,6 +188,7 @@ class VolumeClient(CephfsClient["Module"]): attrs = { 'uid': uid if uid else subvolume.uid, 'gid': gid if gid else subvolume.gid, + 'mode': octal_str_to_decimal_int(mode), 'data_pool': pool, 'pool_namespace': subvolume.namespace if isolate_nspace else None, 'quota': size -- 2.39.5