From 43a4c100ec73b588d47ba5902165bdaa6c314a8d Mon Sep 17 00:00:00 2001 From: Yug Date: Tue, 15 Sep 2020 20:03:16 +0530 Subject: [PATCH] cephfs: No-Op Protect call if "snapshot-autoprotect" feature present The subvolume features consists the list of features, which if includes "snapshot-autoprotect", result in query based approach to detecting the need for protect/unprotect. If "snapshot-autoprotect" feature is present, The ProtectSnapshot call should be treated as a no-op Signed-off-by: Yug --- internal/cephfs/snapshot.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/internal/cephfs/snapshot.go b/internal/cephfs/snapshot.go index 8c124b91b..a20b702eb 100644 --- a/internal/cephfs/snapshot.go +++ b/internal/cephfs/snapshot.go @@ -25,6 +25,10 @@ import ( "github.com/golang/protobuf/ptypes/timestamp" ) +// autoProtect points to the snapshot auto-protect feature of +// the subvolume. +const autoProtect = "snapshot-autoprotect" + // cephfsSnapshot represents a CSI snapshot and its cluster information. type cephfsSnapshot struct { NamePrefix string @@ -137,6 +141,11 @@ func getSnapshotInfo(ctx context.Context, volOptions *volumeOptions, cr *util.Cr } func protectSnapshot(ctx context.Context, volOptions *volumeOptions, cr *util.Credentials, snapID, volID volumeID) error { + // If "snapshot-autoprotect" feature is present, The ProtectSnapshot + // call should be treated as a no-op. + if checkSubvolumeHasFeature(autoProtect, volOptions.Features) { + return nil + } args := []string{ "fs", "subvolume",