This reverts commit
16e50abbd42a4b4f740816ba5f60bc259a6a96bf.
This flag is no longer necessary as the volumes plugin issues quiesce calls
against the data (i.e. root) directory of the subvolume rather than the
subvolume directory (with its associated .meta file).
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
def config_path(self):
return os.path.join(self.base_path, b".meta")
- def mark_meta(self):
- """
- Set "ceph.quiesce.block" flag on the .meta file inode. It must remain
- available while a subvolume is quiesced in order to allow some
- interactions with the subvolume, snapshots in particular.
- """
- try:
- self.fs.setxattr(self.config_path, 'ceph.quiesce.block', b'1', 0)
- except cephfs.InvalidValue:
- raise VolumeException(-errno.EINVAL, "invalid value specified for ceph.quiesce.block")
- except cephfs.Error as e:
- raise VolumeException(-e.args[0], e.args[1])
-
@property
def legacy_dir(self):
return (os.path.join(self.vol_spec.base_dir.encode('utf-8'),
qpath = subvol_path.decode('utf-8')
self.init_config(SubvolumeV1.VERSION, subvolume_type, qpath, initial_state)
self.mark_subvolume()
- self.mark_meta()
except (VolumeException, MetadataMgrException, cephfs.Error) as e:
try:
log.info("cleaning up subvolume with path: {0}".format(self.subvolname))
# create directory and set attributes
self.fs.mkdirs(subvol_path, attrs.get("mode"))
self.mark_subvolume()
- self.mark_meta()
self.set_attrs(subvol_path, attrs)
# persist subvolume metadata and clone source
st = self.fs.stat(subvol_path)
# unconditionally mark as subvolume, to handle pre-existing subvolumes without the mark
self.mark_subvolume()
- self.mark_meta()
self.uid = int(st.st_uid)
self.gid = int(st.st_gid)
# Create the subvolume metadata file which manages auth-ids if it doesn't exist
self.auth_mdata_mgr.create_subvolume_metadata_file(self.group.groupname, self.subvolname)
- self.mark_meta()
except (VolumeException, MetadataMgrException, cephfs.Error) as e:
try:
self._remove_on_failure(subvol_path, retained)
self.metadata_mgr.init(SubvolumeV2.VERSION, subvolume_type.value, qpath, initial_state.value)
self.add_clone_source(source_volname, source_subvolume, snapname)
self.metadata_mgr.flush()
- self.mark_meta()
except (VolumeException, MetadataMgrException, cephfs.Error) as e:
try:
self._remove_on_failure(subvol_path, retained)
self.metadata_mgr.refresh()
# unconditionally mark as subvolume, to handle pre-existing subvolumes without the mark
self.mark_subvolume()
- self.mark_meta()
etype = self.subvol_type
if op_type not in self.allowed_ops_by_type(etype):