From: Dhairya Parmar <87528150+dparmar18@users.noreply.github.com> Date: Mon, 22 Sep 2025 10:15:00 +0000 (+0530) Subject: Merge pull request #64650 from rishabh-d-dave/wip-72201-tentacle X-Git-Tag: testing/wip-jcollin-testing-20250926.021110-tentacle~22 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=525aae91e7665071f88bc07ec244726c48bd215f;p=ceph-ci.git Merge pull request #64650 from rishabh-d-dave/wip-72201-tentacle tentacle: mgr/vol: keep and show clone source info --- 525aae91e7665071f88bc07ec244726c48bd215f diff --cc src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py index e73244985bb,1c5db5f0ac4..5dc6d14b734 --- a/src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py +++ b/src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py @@@ -487,14 -515,15 +515,15 @@@ class SubvolumeBase(object) normalization = "none" try: - case_insensitive = self.fs.getxattr(subvolpath, + casesensitive = self.fs.getxattr(subvolpath, 'ceph.dir.casesensitive' ).decode('utf-8') - case_insensitive = case_insensitive == "0" + casesensitive = casesensitive == "1" except cephfs.NoData: - case_insensitive = False + casesensitive = True - return {'path': subvolpath, + subvol_info = { + 'path': subvolpath, 'type': etype.value, 'uid': int(st["uid"]), 'gid': int(st["gid"]), @@@ -514,9 -543,29 +543,29 @@@ 'state': self.state.value, 'earmark': earmark, 'normalization': normalization, - 'case_insensitive': case_insensitive, + 'casesensitive': casesensitive, } + subvol_src_info = self._get_clone_source() + if subvol_src_info: + if subvol_src_info.get('group', None) == None: + # group name won't be saved in .meta file in case it's + # default group + subvol_src_info['group'] = '_nogroup' + subvol_info['source'] = subvol_src_info + else: + # it could be that the clone was created in previous release of Ceph + # where its source info used to be deleted after cloning finishes. + # print "N/A" for such cases. + if self.subvol_type == SubvolumeTypes.TYPE_CLONE: + subvol_info['source'] = 'N/A' + else: + # only clones can have a source subvol, therefore don't even + # print "N/A" for source info if subvolume is not a clone. + pass + + return subvol_info + def set_user_metadata(self, keyname, value): try: self.metadata_mgr.add_section(MetadataManager.USER_METADATA_SECTION)