mirror of
https://github.com/containers/podman.git
synced 2025-08-24 18:12:25 +08:00
libpod: do not call (*container).Config()
Access the container's config field directly inside of libpod instead of calling `Config()` which in turn creates expensive JSON deep copies. Accessing the field directly drops memory consumption of a simple `podman run --rm busybox true` from 1245kB to 410kB. [NO TESTS NEEDED] Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This commit is contained in:
@ -112,7 +112,7 @@ func (c *Container) resolvePath(mountPoint string, containerPath string) (string
|
||||
func findVolume(c *Container, containerPath string) (*Volume, error) {
|
||||
runtime := c.Runtime()
|
||||
cleanedContainerPath := filepath.Clean(containerPath)
|
||||
for _, vol := range c.Config().NamedVolumes {
|
||||
for _, vol := range c.config.NamedVolumes {
|
||||
if cleanedContainerPath == filepath.Clean(vol.Dest) {
|
||||
return runtime.GetVolume(vol.Name)
|
||||
}
|
||||
@ -124,7 +124,7 @@ func findVolume(c *Container, containerPath string) (*Volume, error) {
|
||||
// Volume's destination.
|
||||
func isPathOnVolume(c *Container, containerPath string) bool {
|
||||
cleanedContainerPath := filepath.Clean(containerPath)
|
||||
for _, vol := range c.Config().NamedVolumes {
|
||||
for _, vol := range c.config.NamedVolumes {
|
||||
if cleanedContainerPath == filepath.Clean(vol.Dest) {
|
||||
return true
|
||||
}
|
||||
@ -141,7 +141,7 @@ func isPathOnVolume(c *Container, containerPath string) bool {
|
||||
// path of a Mount. Returns a matching Mount or nil.
|
||||
func findBindMount(c *Container, containerPath string) *specs.Mount {
|
||||
cleanedPath := filepath.Clean(containerPath)
|
||||
for _, m := range c.Config().Spec.Mounts {
|
||||
for _, m := range c.config.Spec.Mounts {
|
||||
if m.Type != "bind" {
|
||||
continue
|
||||
}
|
||||
@ -157,7 +157,7 @@ func findBindMount(c *Container, containerPath string) *specs.Mount {
|
||||
// Mount's destination.
|
||||
func isPathOnBindMount(c *Container, containerPath string) bool {
|
||||
cleanedContainerPath := filepath.Clean(containerPath)
|
||||
for _, m := range c.Config().Spec.Mounts {
|
||||
for _, m := range c.config.Spec.Mounts {
|
||||
if cleanedContainerPath == filepath.Clean(m.Destination) {
|
||||
return true
|
||||
}
|
||||
|
Reference in New Issue
Block a user