mirror of
https://github.com/containers/podman.git
synced 2025-06-24 03:08:13 +08:00
Fix system df inconsistent
Use RWSzir as system df verbose containers size to remain consistent with the summery. Volume is reclaimable only if not used by container. Signed-off-by: Qi Wang <qiwan@redhat.com>
This commit is contained in:
@ -134,7 +134,7 @@ func printSummary(reports *entities.SystemDfReport, userFormat string) error {
|
|||||||
for _, v := range reports.Volumes {
|
for _, v := range reports.Volumes {
|
||||||
activeVolumes += v.Links
|
activeVolumes += v.Links
|
||||||
volumesSize += v.Size
|
volumesSize += v.Size
|
||||||
volumesReclaimable += v.Size
|
volumesReclaimable += v.ReclaimableSize
|
||||||
}
|
}
|
||||||
volumeSummary := dfSummary{
|
volumeSummary := dfSummary{
|
||||||
Type: "Local Volumes",
|
Type: "Local Volumes",
|
||||||
@ -182,7 +182,7 @@ func printVerbose(reports *entities.SystemDfReport) error {
|
|||||||
dfContainers = append(dfContainers, &dfContainer{SystemDfContainerReport: d})
|
dfContainers = append(dfContainers, &dfContainer{SystemDfContainerReport: d})
|
||||||
}
|
}
|
||||||
containerHeaders := "CONTAINER ID\tIMAGE\tCOMMAND\tLOCAL VOLUMES\tSIZE\tCREATED\tSTATUS\tNAMES\n"
|
containerHeaders := "CONTAINER ID\tIMAGE\tCOMMAND\tLOCAL VOLUMES\tSIZE\tCREATED\tSTATUS\tNAMES\n"
|
||||||
containerRow := "{{.ContainerID}}\t{{.Image}}\t{{.Command}}\t{{.LocalVolumes}}\t{{.Size}}\t{{.Created}}\t{{.Status}}\t{{.Names}}\n"
|
containerRow := "{{.ContainerID}}\t{{.Image}}\t{{.Command}}\t{{.LocalVolumes}}\t{{.RWSize}}\t{{.Created}}\t{{.Status}}\t{{.Names}}\n"
|
||||||
format = containerHeaders + "{{range . }}" + containerRow + "{{end}}"
|
format = containerHeaders + "{{range . }}" + containerRow + "{{end}}"
|
||||||
if err := writeTemplate(w, format, dfContainers); err != nil {
|
if err := writeTemplate(w, format, dfContainers); err != nil {
|
||||||
return nil
|
return nil
|
||||||
@ -257,8 +257,8 @@ func (d *dfContainer) Command() string {
|
|||||||
return strings.Join(d.SystemDfContainerReport.Command, " ")
|
return strings.Join(d.SystemDfContainerReport.Command, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *dfContainer) Size() string {
|
func (d *dfContainer) RWSize() string {
|
||||||
return units.HumanSize(float64(d.SystemDfContainerReport.Size))
|
return units.HumanSize(float64(d.SystemDfContainerReport.RWSize))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *dfContainer) Created() string {
|
func (d *dfContainer) Created() string {
|
||||||
|
@ -75,9 +75,10 @@ type SystemDfContainerReport struct {
|
|||||||
|
|
||||||
// SystemDfVolumeReport describes a volume and its size
|
// SystemDfVolumeReport describes a volume and its size
|
||||||
type SystemDfVolumeReport struct {
|
type SystemDfVolumeReport struct {
|
||||||
VolumeName string
|
VolumeName string
|
||||||
Links int
|
Links int
|
||||||
Size int64
|
Size int64
|
||||||
|
ReclaimableSize int64
|
||||||
}
|
}
|
||||||
|
|
||||||
// SystemResetOptions describes the options for resetting your
|
// SystemResetOptions describes the options for resetting your
|
||||||
|
@ -313,6 +313,7 @@ func (ic *ContainerEngine) SystemDf(ctx context.Context, options entities.System
|
|||||||
}
|
}
|
||||||
|
|
||||||
dfVolumes := make([]*entities.SystemDfVolumeReport, 0, len(vols))
|
dfVolumes := make([]*entities.SystemDfVolumeReport, 0, len(vols))
|
||||||
|
var reclaimableSize int64
|
||||||
for _, v := range vols {
|
for _, v := range vols {
|
||||||
var consInUse int
|
var consInUse int
|
||||||
volSize, err := sizeOfPath(v.MountPoint())
|
volSize, err := sizeOfPath(v.MountPoint())
|
||||||
@ -323,15 +324,19 @@ func (ic *ContainerEngine) SystemDf(ctx context.Context, options entities.System
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if len(inUse) == 0 {
|
||||||
|
reclaimableSize += volSize
|
||||||
|
}
|
||||||
for _, viu := range inUse {
|
for _, viu := range inUse {
|
||||||
if util.StringInSlice(viu, runningContainers) {
|
if util.StringInSlice(viu, runningContainers) {
|
||||||
consInUse++
|
consInUse++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
report := entities.SystemDfVolumeReport{
|
report := entities.SystemDfVolumeReport{
|
||||||
VolumeName: v.Name(),
|
VolumeName: v.Name(),
|
||||||
Links: consInUse,
|
Links: consInUse,
|
||||||
Size: volSize,
|
Size: volSize,
|
||||||
|
ReclaimableSize: reclaimableSize,
|
||||||
}
|
}
|
||||||
dfVolumes = append(dfVolumes, &report)
|
dfVolumes = append(dfVolumes, &report)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user