The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/1968

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===

From f43557585c709639f550ae9763a2a814c29bfb7c Mon Sep 17 00:00:00 2001
From: Tycho Andersen <tycho.ander...@canonical.com>
Date: Thu, 28 Apr 2016 08:41:42 -0600
Subject: [PATCH 1/3] don't fail early when removing disks

We should try to unmount /everything/, no matter what.

Closes #1964

Signed-off-by: Tycho Andersen <tycho.ander...@canonical.com>
---
 lxd/container_lxc.go | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go
index 70f483f..009dac1 100644
--- a/lxd/container_lxc.go
+++ b/lxd/container_lxc.go
@@ -4005,9 +4005,10 @@ func (c *containerLXC) removeDiskDevices() error {
                _ = syscall.Unmount(filepath.Join(c.DevicesPath(), f.Name()), 
syscall.MNT_DETACH)
 
                // Remove the entry
-               err := os.Remove(filepath.Join(c.DevicesPath(), f.Name()))
+               diskPath := filepath.Join(c.DevicesPath(), f.Name())
+               err := os.Remove(diskPath)
                if err != nil {
-                       return err
+                       shared.Log.Error("Failed to remove disk device path", 
log.Ctx{"err": err, "path": diskPath})
                }
        }
 

From 9f95110b41f118bf81fb81fa72e26e56359f329a Mon Sep 17 00:00:00 2001
From: Tycho Andersen <tycho.ander...@canonical.com>
Date: Thu, 28 Apr 2016 11:34:06 -0600
Subject: [PATCH 2/3] devices cleanup: don't recursively delete devices

the remove{Unix,Char}Devices when successful should leave this directory
empty, and when they're not succesful the recursiveness has the potential
to delete external data if things aren't unmounted correctly.

Signed-off-by: Tycho Andersen <tycho.ander...@canonical.com>
---
 lxd/container_lxc.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go
index 009dac1..ffcd6fe 100644
--- a/lxd/container_lxc.go
+++ b/lxd/container_lxc.go
@@ -1773,7 +1773,7 @@ func (c *containerLXC) cleanup() {
        SeccompDeleteProfile(c)
 
        // Remove the devices path
-       os.RemoveAll(c.DevicesPath())
+       os.Remove(c.DevicesPath())
 
        // Remove the shmounts path
        os.RemoveAll(shared.VarPath("shmounts", c.Name()))

From 52d8c8bddf1987e1baf0af7ccdc928f199e118b6 Mon Sep 17 00:00:00 2001
From: Tycho Andersen <tycho.ander...@canonical.com>
Date: Thu, 28 Apr 2016 11:51:24 -0600
Subject: [PATCH 3/3] as with disk devices, don't fail when some unix devices
 fail to be deleted

Signed-off-by: Tycho Andersen <tycho.ander...@canonical.com>
---
 lxd/container_lxc.go | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go
index ffcd6fe..5ec9e8e 100644
--- a/lxd/container_lxc.go
+++ b/lxd/container_lxc.go
@@ -3555,9 +3555,10 @@ func (c *containerLXC) removeUnixDevices() error {
                }
 
                // Remove the entry
-               err := os.Remove(filepath.Join(c.DevicesPath(), f.Name()))
+               devicePath := filepath.Join(c.DevicesPath(), f.Name())
+               err := os.Remove(devicePath)
                if err != nil {
-                       return err
+                       shared.Log.Error("failed removing unix device", 
log.Ctx{"err": err, "path": devicePath})
                }
        }
 
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to