mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-23 22:17:19 +00:00
runtime: direct-volume stats use correct name
Today the shim does a translation when doing direct-volume stats where it takes the source and returns the mount path within the guest. The source for a direct-assigned volume is actually the device path on the host and not the publish volume path. This change will perform a lookup of the mount info during direct-volume stats to ensure that the device path is provided to the shim for querying the volume stats. Fixes: #4297 Signed-off-by: Yibo Zhuang <yibzhuang@gmail.com>
This commit is contained in:
parent
ffdc065b4c
commit
4428ceae16
@ -7,10 +7,11 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
containerdshim "github.com/kata-containers/kata-containers/src/runtime/pkg/containerd-shim-v2"
|
containerdshim "github.com/kata-containers/kata-containers/src/runtime/pkg/containerd-shim-v2"
|
||||||
"github.com/kata-containers/kata-containers/src/runtime/pkg/direct-volume"
|
volume "github.com/kata-containers/kata-containers/src/runtime/pkg/direct-volume"
|
||||||
"github.com/kata-containers/kata-containers/src/runtime/pkg/utils/shimclient"
|
"github.com/kata-containers/kata-containers/src/runtime/pkg/utils/shimclient"
|
||||||
|
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
@ -127,8 +128,14 @@ func Stats(volumePath string) ([]byte, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
urlSafeDevicePath := url.PathEscape(volumePath)
|
volumeMountInfo, err := volume.VolumeMountInfo(volumePath)
|
||||||
body, err := shimclient.DoGet(sandboxId, defaultTimeout, containerdshim.DirectVolumeStatUrl+"/"+urlSafeDevicePath)
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
urlSafeDevicePath := url.PathEscape(volumeMountInfo.Device)
|
||||||
|
body, err := shimclient.DoGet(sandboxId, defaultTimeout,
|
||||||
|
fmt.Sprintf("%s?%s=%s", containerdshim.DirectVolumeStatUrl, containerdshim.DirectVolumePathKey, urlSafeDevicePath))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -141,8 +148,13 @@ func Resize(volumePath string, size uint64) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
volumeMountInfo, err := volume.VolumeMountInfo(volumePath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
resizeReq := containerdshim.ResizeRequest{
|
resizeReq := containerdshim.ResizeRequest{
|
||||||
VolumePath: volumePath,
|
VolumePath: volumeMountInfo.Device,
|
||||||
Size: size,
|
Size: size,
|
||||||
}
|
}
|
||||||
encoded, err := json.Marshal(resizeReq)
|
encoded, err := json.Marshal(resizeReq)
|
||||||
|
Loading…
Reference in New Issue
Block a user