]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #64650 from rishabh-d-dave/wip-72201-tentacle
authorDhairya Parmar <87528150+dparmar18@users.noreply.github.com>
Mon, 22 Sep 2025 10:15:00 +0000 (15:45 +0530)
committerGitHub <noreply@github.com>
Mon, 22 Sep 2025 10:15:00 +0000 (15:45 +0530)
tentacle: mgr/vol: keep and show clone source info

1  2 
PendingReleaseNotes
doc/cephfs/fs-volumes.rst
qa/tasks/cephfs/test_volumes.py
src/pybind/mgr/volumes/fs/async_cloner.py
src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py
src/pybind/mgr/volumes/fs/operations/versions/subvolume_v1.py

Simple merge
Simple merge
Simple merge
index e73244985bb63257c6808d50e687b5dcb2d3daa0,1c5db5f0ac4b9f75eb0b2b8608005dca33f0e8af..5dc6d14b7348648ed0680cca08d662281f3b25d0
@@@ -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"]),
                  '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)