diff --git a/internal/cephfs/controllerserver.go b/internal/cephfs/controllerserver.go index 298b09598..14d3db153 100644 --- a/internal/cephfs/controllerserver.go +++ b/internal/cephfs/controllerserver.go @@ -287,9 +287,10 @@ func (cs *ControllerServer) CreateVolume( } // TODO return error message if requested vol size greater than found volume return error + metadata := k8s.GetVolumeMetadata(req.GetParameters()) if vID != nil { + volClient := core.NewSubVolume(volOptions.GetConnection(), &volOptions.SubVolume, volOptions.ClusterID) if sID != nil || pvID != nil && !volOptions.BackingSnapshot { - volClient := core.NewSubVolume(volOptions.GetConnection(), &volOptions.SubVolume, volOptions.ClusterID) err = volClient.ExpandVolume(ctx, volOptions.Size) if err != nil { purgeErr := volClient.PurgeVolume(ctx, false) @@ -311,6 +312,14 @@ func (cs *ControllerServer) CreateVolume( } } + if !volOptions.BackingSnapshot { + // Set metadata on restart of provisioner pod when subvolume exist + err = volClient.SetAllMetadata(metadata) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + } + // remove kubernetes csi prefixed parameters. volumeContext := k8s.RemoveCSIPrefixedParameters(req.GetParameters()) volumeContext["subvolumeName"] = vID.FsSubvolName @@ -388,7 +397,6 @@ func (cs *ControllerServer) CreateVolume( } // Set Metadata on PV Create - metadata := k8s.GetVolumeMetadata(req.GetParameters()) err = volClient.SetAllMetadata(metadata) if err != nil { return nil, status.Error(codes.Internal, err.Error())