From 9ce2048f580fa7a36ff282d58f9cafdc7aa65f9c Mon Sep 17 00:00:00 2001 From: Artsiom Koltun Date: Thu, 1 Jun 2023 09:52:16 +0200 Subject: [PATCH] Clean QoS on virtio-blk deletion. Signed-off-by: Artsiom Koltun --- pkg/frontend/blk.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/frontend/blk.go b/pkg/frontend/blk.go index 2bb6367c..36a87276 100644 --- a/pkg/frontend/blk.go +++ b/pkg/frontend/blk.go @@ -95,7 +95,7 @@ func (s *Server) CreateVirtioBlk(ctx context.Context, in *pb.CreateVirtioBlkRequ } // DeleteVirtioBlk deletes a Virtio block device -func (s *Server) DeleteVirtioBlk(_ context.Context, in *pb.DeleteVirtioBlkRequest) (*emptypb.Empty, error) { +func (s *Server) DeleteVirtioBlk(ctx context.Context, in *pb.DeleteVirtioBlkRequest) (*emptypb.Empty, error) { log.Printf("DeleteVirtioBlk: Received from client: %v", in) controller, ok := s.Virt.BlkCtrls[in.Name] if !ok { @@ -120,6 +120,16 @@ func (s *Server) DeleteVirtioBlk(_ context.Context, in *pb.DeleteVirtioBlkReques log.Printf("Could not delete: %v", in) return nil, spdk.ErrUnexpectedSpdkCallResult } + + if s.needToSetVirtioBlkQos(controller) { + if _, err := s.Virt.qosProvider.DeleteQosVolume(ctx, + &pb.DeleteQosVolumeRequest{ + Name: s.qosVolumeIDFromVirtioBlkName(controller.Name), + }); err != nil { + log.Printf("error: %v", err) + return nil, err + } + } delete(s.Virt.BlkCtrls, controller.Name) return &emptypb.Empty{}, nil }