summaryrefslogtreecommitdiff
path: root/libpod/volume.go
diff options
context:
space:
mode:
authorMatthew Heon <mheon@redhat.com>2021-02-10 09:46:12 -0500
committerMatthew Heon <mheon@redhat.com>2021-02-10 14:21:37 -0500
commitea910fc53537d8c6f8cd1e1eaad49eaa5906c5f5 (patch)
treeeb8c9c48634c82617b83ac09b316c0ed57fc64e9 /libpod/volume.go
parent763d522983b819ecd38689c9c0840069d1e2b530 (diff)
downloadpodman-ea910fc53537d8c6f8cd1e1eaad49eaa5906c5f5.tar.gz
podman-ea910fc53537d8c6f8cd1e1eaad49eaa5906c5f5.tar.bz2
podman-ea910fc53537d8c6f8cd1e1eaad49eaa5906c5f5.zip
Rewrite copy-up to use buildah Copier
The old copy-up implementation was very unhappy with symlinks, which could cause containers to fail to start for unclear reasons when a directory we wanted to copy-up contained one. Rewrite to use the Buildah Copier, which is more recent and should be both safer and less likely to blow up over links. At the same time, fix a deadlock in copy-up for volumes requiring mounting - the Mountpoint() function tried to take the already-acquired volume lock. Fixes #6003 Signed-off-by: Matthew Heon <mheon@redhat.com>
Diffstat (limited to 'libpod/volume.go')
-rw-r--r--libpod/volume.go11
1 files changed, 9 insertions, 2 deletions
diff --git a/libpod/volume.go b/libpod/volume.go
index 4c137cb8e..5cc5e7e40 100644
--- a/libpod/volume.go
+++ b/libpod/volume.go
@@ -130,11 +130,18 @@ func (v *Volume) MountPoint() (string, error) {
if err := v.update(); err != nil {
return "", err
}
+ }
+
+ return v.mountPoint(), nil
+}
- return v.state.MountPoint, nil
+// Internal-only helper for volume mountpoint
+func (v *Volume) mountPoint() string {
+ if v.UsesVolumeDriver() {
+ return v.state.MountPoint
}
- return v.config.MountPoint, nil
+ return v.config.MountPoint
}
// Options return the volume's options