Skip to content

Commit

Permalink
rbd: remove checkFlatten() function
Browse files Browse the repository at this point in the history
CephCSI should not flatten image that can be mounted
for use by the user.
`checkFlatten()` was called in a recovery code flow
of PVC restored from snapshot and was missed while
refractoring in #2900

refer: #2900

Signed-off-by: Rakshith R <[email protected]>
  • Loading branch information
Rakshith-R authored and mergify[bot] committed Nov 19, 2024
1 parent 3e9b438 commit eea64fe
Showing 1 changed file with 3 additions and 36 deletions.
39 changes: 3 additions & 36 deletions internal/rbd/controllerserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ func (cs *ControllerServer) CreateVolume(
if err != nil {
return nil, getGRPCErrorForCreateVolume(err)
} else if found {
return cs.repairExistingVolume(ctx, req, cr, rbdVol, rbdSnap)
return cs.repairExistingVolume(ctx, req, rbdVol, rbdSnap)
}

err = checkValidCreateVolumeRequest(rbdVol, parentVol, rbdSnap)
Expand Down Expand Up @@ -516,21 +516,14 @@ func flattenParentImage(
// that the state is corrected to what was requested. It is needed to call this
// when the process of creating a volume was interrupted.
func (cs *ControllerServer) repairExistingVolume(ctx context.Context, req *csi.CreateVolumeRequest,
cr *util.Credentials, rbdVol *rbdVolume, rbdSnap *rbdSnapshot,
rbdVol *rbdVolume, rbdSnap *rbdSnapshot,
) (*csi.CreateVolumeResponse, error) {
vcs := req.GetVolumeContentSource()

switch {
// rbdVol is a restore from snapshot, rbdSnap is passed
case vcs.GetSnapshot() != nil:
// restore from snapshot implies rbdSnap != nil
// check if image depth is reached limit and requires flatten
err := checkFlatten(ctx, rbdVol, cr)
if err != nil {
return nil, err
}

err = rbdSnap.repairEncryptionConfig(ctx, &rbdVol.rbdImage)
err := rbdSnap.repairEncryptionConfig(ctx, &rbdVol.rbdImage)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -636,32 +629,6 @@ func flattenTemporaryClonedImages(ctx context.Context, rbdVol *rbdVolume, cr *ut
return nil
}

// checkFlatten ensures that the image chain depth is not reached
// hardlimit or softlimit. if the softlimit is reached it adds a task and
// return success,the hardlimit is reached it starts a task to flatten the
// image and return Aborted.
func checkFlatten(ctx context.Context, rbdVol *rbdVolume, cr *util.Credentials) error {
err := rbdVol.flattenRbdImage(ctx, false, rbdHardMaxCloneDepth, rbdSoftMaxCloneDepth)
if err != nil {
if errors.Is(err, ErrFlattenInProgress) {
return status.Error(codes.Aborted, err.Error())
}
if errDefer := rbdVol.Delete(ctx); errDefer != nil {
log.ErrorLog(ctx, "failed to delete rbd image: %s with error: %v", rbdVol, errDefer)

return status.Error(codes.Internal, err.Error())
}
errDefer := undoVolReservation(ctx, rbdVol, cr)
if errDefer != nil {
log.WarningLog(ctx, "failed undoing reservation of volume: %s (%s)", rbdVol.RequestName, errDefer)
}

return status.Error(codes.Internal, err.Error())
}

return nil
}

func (cs *ControllerServer) createVolumeFromSnapshot(
ctx context.Context,
cr *util.Credentials,
Expand Down

0 comments on commit eea64fe

Please sign in to comment.