mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-07-18 17:33:02 +00:00
persist: fix vmtemplate storage leak
Fix VM template storage leak by adding delete operations, we need to delete sandbox storage dirs when stop VM. Signed-off-by: Wei Zhang <weizhang555.zw@gmail.com>
This commit is contained in:
parent
29b55ab88b
commit
508101bc0f
@ -14,6 +14,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
pb "github.com/kata-containers/runtime/protocols/cache"
|
pb "github.com/kata-containers/runtime/protocols/cache"
|
||||||
|
"github.com/kata-containers/runtime/virtcontainers/persist"
|
||||||
|
persistapi "github.com/kata-containers/runtime/virtcontainers/persist/api"
|
||||||
"github.com/kata-containers/runtime/virtcontainers/pkg/uuid"
|
"github.com/kata-containers/runtime/virtcontainers/pkg/uuid"
|
||||||
"github.com/kata-containers/runtime/virtcontainers/store"
|
"github.com/kata-containers/runtime/virtcontainers/store"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
@ -34,6 +36,8 @@ type VM struct {
|
|||||||
memory uint32
|
memory uint32
|
||||||
|
|
||||||
cpuDelta uint32
|
cpuDelta uint32
|
||||||
|
|
||||||
|
store persistapi.PersistDriver
|
||||||
}
|
}
|
||||||
|
|
||||||
// VMConfig is a collection of all info that a new blackbox VM needs.
|
// VMConfig is a collection of all info that a new blackbox VM needs.
|
||||||
@ -155,9 +159,16 @@ func NewVM(ctx context.Context, config VMConfig) (*VM, error) {
|
|||||||
|
|
||||||
virtLog.WithField("vm", id).WithField("config", config).Info("create new vm")
|
virtLog.WithField("vm", id).WithField("config", config).Info("create new vm")
|
||||||
|
|
||||||
|
store, err := persist.GetDriver("fs")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
virtLog.WithField("vm", id).WithError(err).Error("failed to create new vm")
|
virtLog.WithField("vm", id).WithError(err).Error("failed to create new vm")
|
||||||
|
virtLog.WithField("vm", id).Errorf("Deleting store for %s", id)
|
||||||
|
store.Destroy(id)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -219,6 +230,7 @@ func NewVM(ctx context.Context, config VMConfig) (*VM, error) {
|
|||||||
proxyURL: url,
|
proxyURL: url,
|
||||||
cpu: config.HypervisorConfig.NumVCPUs,
|
cpu: config.HypervisorConfig.NumVCPUs,
|
||||||
memory: config.HypervisorConfig.MemorySize,
|
memory: config.HypervisorConfig.MemorySize,
|
||||||
|
store: store,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,9 +243,16 @@ func NewVMFromGrpc(ctx context.Context, v *pb.GrpcVM, config VMConfig) (*VM, err
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
store, err := persist.GetDriver("fs")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
virtLog.WithField("vm", v.Id).WithError(err).Error("failed to create new vm from Grpc")
|
virtLog.WithField("vm", v.Id).WithError(err).Error("failed to create new vm from Grpc")
|
||||||
|
virtLog.WithField("vm", v.Id).Errorf("Deleting store for %s", v.Id)
|
||||||
|
store.Destroy(v.Id)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -261,6 +280,7 @@ func NewVMFromGrpc(ctx context.Context, v *pb.GrpcVM, config VMConfig) (*VM, err
|
|||||||
cpu: v.Cpu,
|
cpu: v.Cpu,
|
||||||
memory: v.Memory,
|
memory: v.Memory,
|
||||||
cpuDelta: v.CpuDelta,
|
cpuDelta: v.CpuDelta,
|
||||||
|
store: store,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,7 +338,7 @@ func (v *VM) Stop() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return v.store.Destroy(v.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddCPUs adds num of CPUs to the VM.
|
// AddCPUs adds num of CPUs to the VM.
|
||||||
|
Loading…
Reference in New Issue
Block a user