summaryrefslogtreecommitdiff
path: root/libpod/container_api.go
diff options
context:
space:
mode:
Diffstat (limited to 'libpod/container_api.go')
-rw-r--r--libpod/container_api.go27
1 files changed, 8 insertions, 19 deletions
diff --git a/libpod/container_api.go b/libpod/container_api.go
index cfffa2232..ef94aa4c9 100644
--- a/libpod/container_api.go
+++ b/libpod/container_api.go
@@ -368,7 +368,7 @@ func (c *Container) Attach(noStdin bool, keys string) error {
// Mount mounts a container's filesystem on the host
// The path where the container has been mounted is returned
-func (c *Container) Mount(label string) (string, error) {
+func (c *Container) Mount() (string, error) {
if !c.locked {
c.lock.Lock()
defer c.lock.Unlock()
@@ -378,27 +378,11 @@ func (c *Container) Mount(label string) (string, error) {
}
}
- // return mountpoint if container already mounted
- if c.state.Mounted {
- return c.state.Mountpoint, nil
- }
-
- mountLabel := label
- if label == "" {
- mountLabel = c.config.MountLabel
- }
- mountPoint, err := c.runtime.store.Mount(c.ID(), mountLabel)
- if err != nil {
+ if err := c.mountStorage(); err != nil {
return "", err
}
- c.state.Mountpoint = mountPoint
- c.state.Mounted = true
- if err := c.save(); err != nil {
- return "", err
- }
-
- return mountPoint, nil
+ return c.state.Mountpoint, nil
}
// Unmount unmounts a container's filesystem on the host
@@ -416,6 +400,11 @@ func (c *Container) Unmount() error {
return errors.Wrapf(ErrCtrStateInvalid, "cannot remove storage for container %s as it is running or paused", c.ID())
}
+ // Check if we have active exec sessions
+ if len(c.state.ExecSessions) != 0 {
+ return errors.Wrapf(ErrCtrStateInvalid, "container %s has active exec sessions, refusing to clean up", c.ID())
+ }
+
return c.cleanupStorage()
}