mirror of
https://github.com/containers/podman.git
synced 2025-06-26 12:56:45 +08:00
correct algorithm for deleting all images
when deleting all images, we need to iterate all the images deleting on those who dont have children first. And then reiterate until they are all gone. This resolves #1926 Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
@ -91,9 +91,24 @@ func rmiCmd(c *cli.Context) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "unable to query local images")
|
return errors.Wrapf(err, "unable to query local images")
|
||||||
}
|
}
|
||||||
|
lastNumberofImages := 0
|
||||||
|
for len(imagesToDelete) > 0 {
|
||||||
|
if lastNumberofImages == len(imagesToDelete) {
|
||||||
|
return errors.New("unable to delete all images; re-run the rmi command again.")
|
||||||
|
}
|
||||||
for _, i := range imagesToDelete {
|
for _, i := range imagesToDelete {
|
||||||
|
isParent, err := i.IsParent()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if isParent {
|
||||||
|
continue
|
||||||
|
}
|
||||||
removeImage(i)
|
removeImage(i)
|
||||||
}
|
}
|
||||||
|
lastNumberofImages = len(imagesToDelete)
|
||||||
|
imagesToDelete, err = runtime.ImageRuntime().GetImages()
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Create image.image objects for deletion from user input.
|
// Create image.image objects for deletion from user input.
|
||||||
// Note that we have to query the storage one-by-one to
|
// Note that we have to query the storage one-by-one to
|
||||||
|
Reference in New Issue
Block a user