From c40872df00420beb81a69a191f0ca2b7965d637e Mon Sep 17 00:00:00 2001 From: Madhu Rajanna Date: Fri, 4 Dec 2020 13:26:53 +0530 Subject: [PATCH] rbd: undo reservation incase of errors If cephcsi encounters any error after reservation, as a cleanup operation it should revert back the reservation. Signed-off-by: Madhu Rajanna --- internal/rbd/rbd_journal.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/internal/rbd/rbd_journal.go b/internal/rbd/rbd_journal.go index 91439dee3..f4e226809 100644 --- a/internal/rbd/rbd_journal.go +++ b/internal/rbd/rbd_journal.go @@ -570,6 +570,15 @@ func RegenerateJournal(imageName, volumeID, pool, journalPool, requestName strin return err } + defer func() { + if err != nil { + undoErr := j.UndoReservation(ctx, rbdVol.JournalPool, rbdVol.Pool, + rbdVol.RbdImageName, rbdVol.RequestName) + if undoErr != nil { + util.ErrorLog(ctx, "failed to undo reservation %s: %v", rbdVol, undoErr) + } + } + }() rbdVol.VolID, err = util.GenerateVolID(ctx, rbdVol.Monitors, cr, imagePoolID, rbdVol.Pool, rbdVol.ClusterID, rbdVol.ReservedID, volIDVersion) if err != nil {