mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-23 23:00:19 +00:00
check subvolume present in backend
If a CreateVolume call is interrupted,
post creating the required CSI journal entries,
but prior to creating the backing CephFS subvolume,
then a subsequent CreateVolume call will return
a valid response with a VolumeID that has
it's backing image missing. This PR adds a check
for backend image, if image notfound it deletes the
reserved keys in omap.
fixes #839
Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 128f3fc2cf
)
This commit is contained in:
parent
7f4028d356
commit
c4b6bb90d6
@ -67,6 +67,14 @@ func checkVolExists(ctx context.Context, volOptions *volumeOptions, secret map[s
|
|||||||
}
|
}
|
||||||
vid.FsSubvolName = volJournal.NamingPrefix() + imageUUID
|
vid.FsSubvolName = volJournal.NamingPrefix() + imageUUID
|
||||||
|
|
||||||
|
_, err = getVolumeRootPathCeph(ctx, volOptions, cr, volumeID(vid.FsSubvolName))
|
||||||
|
if err != nil {
|
||||||
|
if _, ok := err.(ErrVolumeNotFound); ok {
|
||||||
|
err = volJournal.UndoReservation(ctx, volOptions.Monitors, cr, volOptions.MetadataPool, vid.FsSubvolName, volOptions.RequestName)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
// TODO: size checks
|
// TODO: size checks
|
||||||
|
|
||||||
// found a volume already available, process and return it!
|
// found a volume already available, process and return it!
|
||||||
|
Loading…
Reference in New Issue
Block a user