rbd: free snapshot resources after allocation

Not all snapshot objects are free'd correctly after they were allocated.
It is possible that some connections to the Ceph cluster were never
closed. This does not need to be a noticeable problem, as connections
are re-used where possible, but it isn't clean either.

Signed-off-by: Niels de Vos <ndevos@ibm.com>
This commit is contained in:
Niels de Vos 2024-03-21 10:59:50 +01:00 committed by mergify[bot]
parent 18162c71bc
commit 7b2b125b18

View File

@ -348,6 +348,12 @@ func (cs *ControllerServer) CreateVolume(
if err != nil { if err != nil {
return nil, err return nil, err
} }
if parentVol != nil {
defer parentVol.Destroy()
}
if rbdSnap != nil {
defer rbdSnap.Destroy()
}
err = updateTopologyConstraints(rbdVol, rbdSnap) err = updateTopologyConstraints(rbdVol, rbdSnap)
if err != nil { if err != nil {
@ -655,6 +661,7 @@ func (cs *ControllerServer) createVolumeFromSnapshot(
return status.Error(codes.Internal, err.Error()) return status.Error(codes.Internal, err.Error())
} }
defer rbdSnap.Destroy()
// update parent name(rbd image name in snapshot) // update parent name(rbd image name in snapshot)
rbdSnap.RbdImageName = rbdSnap.RbdSnapName rbdSnap.RbdImageName = rbdSnap.RbdSnapName
@ -1458,6 +1465,7 @@ func (cs *ControllerServer) DeleteSnapshot(
return nil, status.Error(codes.Internal, err.Error()) return nil, status.Error(codes.Internal, err.Error())
} }
defer rbdSnap.Destroy()
// safeguard against parallel create or delete requests against the same // safeguard against parallel create or delete requests against the same
// name // name