mirror of
https://github.com/clearlinux/docker.git
synced 2026-08-19 04:07:34 +00:00
Turn IPC unmount errors into warnings.
And do not try to unmount empty paths. Because nobody should be woken up in the middle of the night for them. Signed-off-by: David Calavera <david.calavera@gmail.com> (cherry picked from commit a54d5932e3a644317c77d59bc5aee562841d5c20)
This commit is contained in:
committed by
Tibor Vass
parent
19f3bc00ee
commit
08091ba9fb
+1
-3
@@ -333,9 +333,7 @@ func (streamConfig *streamConfig) StderrPipe() io.ReadCloser {
|
||||
func (container *Container) cleanup() {
|
||||
container.releaseNetwork()
|
||||
|
||||
if err := container.unmountIpcMounts(detachMounted); err != nil {
|
||||
logrus.Errorf("%s: Failed to umount ipc filesystems: %v", container.ID, err)
|
||||
}
|
||||
container.unmountIpcMounts(detachMounted)
|
||||
|
||||
if err := container.Unmount(); err != nil {
|
||||
logrus.Errorf("%s: Failed to umount filesystem: %v", container.ID, err)
|
||||
|
||||
+11
-15
@@ -1456,22 +1456,21 @@ func (container *Container) setupIpcDirs() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (container *Container) unmountIpcMounts(unmount func(pth string) error) error {
|
||||
func (container *Container) unmountIpcMounts(unmount func(pth string) error) {
|
||||
if container.hostConfig.IpcMode.IsContainer() || container.hostConfig.IpcMode.IsHost() {
|
||||
return nil
|
||||
return
|
||||
}
|
||||
|
||||
var errors []string
|
||||
var warnings []string
|
||||
|
||||
if !container.hasMountFor("/dev/shm") {
|
||||
shmPath, err := container.shmPath()
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
errors = append(errors, err.Error())
|
||||
} else {
|
||||
warnings = append(warnings, err.Error())
|
||||
} else if shmPath != "" {
|
||||
if err := unmount(shmPath); err != nil {
|
||||
logrus.Errorf("failed to umount %s: %v", shmPath, err)
|
||||
errors = append(errors, err.Error())
|
||||
warnings = append(warnings, fmt.Sprintf("failed to umount %s: %v", shmPath, err))
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1481,20 +1480,17 @@ func (container *Container) unmountIpcMounts(unmount func(pth string) error) err
|
||||
mqueuePath, err := container.mqueuePath()
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
errors = append(errors, err.Error())
|
||||
} else {
|
||||
warnings = append(warnings, err.Error())
|
||||
} else if mqueuePath != "" {
|
||||
if err := unmount(mqueuePath); err != nil {
|
||||
logrus.Errorf("failed to umount %s: %v", mqueuePath, err)
|
||||
errors = append(errors, err.Error())
|
||||
warnings = append(warnings, fmt.Sprintf("failed to umount %s: %v", mqueuePath, err))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(errors) > 0 {
|
||||
return fmt.Errorf("failed to cleanup ipc mounts:\n%v", strings.Join(errors, "\n"))
|
||||
if len(warnings) > 0 {
|
||||
logrus.Warnf("failed to cleanup ipc mounts:\n%v", strings.Join(warnings, "\n"))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (container *Container) ipcMounts() []execdriver.Mount {
|
||||
|
||||
@@ -183,8 +183,7 @@ func (container *Container) removeMountPoints(_ bool) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (container *Container) unmountIpcMounts(unmount func(pth string) error) error {
|
||||
return nil
|
||||
func (container *Container) unmountIpcMounts(unmount func(pth string) error) {
|
||||
}
|
||||
|
||||
func detachMounted(path string) error {
|
||||
|
||||
+2
-3
@@ -223,9 +223,8 @@ func (daemon *Daemon) Register(container *Container) error {
|
||||
}
|
||||
daemon.execDriver.Terminate(cmd)
|
||||
|
||||
if err := container.unmountIpcMounts(mount.Unmount); err != nil {
|
||||
logrus.Errorf("%s: Failed to umount ipc filesystems: %v", container.ID, err)
|
||||
}
|
||||
container.unmountIpcMounts(mount.Unmount)
|
||||
|
||||
if err := container.Unmount(); err != nil {
|
||||
logrus.Debugf("unmount error %s", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user