[lxc-devel] [lxd/master] Bugfixes

stgraber on Github lxc-bot at linuxcontainers.org
Thu Feb 9 01:20:16 UTC 2017


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20170209/d3e58103/attachment.bin>
-------------- next part --------------
From 9b3a84583979587386e3df589b8eb7b4ee405ccf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 8 Feb 2017 19:02:18 -0500
Subject: [PATCH 1/5] network: Skip ip6tables clear on non-ipv6 hosts
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #2842

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/networks_iptables.go | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lxd/networks_iptables.go b/lxd/networks_iptables.go
index 1b1ff7d..fb2585e 100644
--- a/lxd/networks_iptables.go
+++ b/lxd/networks_iptables.go
@@ -41,6 +41,11 @@ func networkIptablesPrepend(protocol string, netName string, table string, chain
 }
 
 func networkIptablesClear(protocol string, netName string, table string) error {
+	// Detect kernels that lack IPv6 support
+	if !shared.PathExists("/proc/sys/net/ipv6") && protocol == "ipv6" {
+		return nil
+	}
+
 	cmd := "iptables"
 	if protocol == "ipv6" {
 		cmd = "ip6tables"

From 91a607365786383f9d3e9dde38066e05f31518c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 8 Feb 2017 19:37:45 -0500
Subject: [PATCH 2/5] Disable IPv6 on host side veth when bridged
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #2845

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/container_lxc.go | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go
index dbfbb52..717d5d6 100644
--- a/lxd/container_lxc.go
+++ b/lxd/container_lxc.go
@@ -5323,6 +5323,11 @@ func (c *containerLXC) createNetworkDevice(name string, m types.Device) (string,
 				deviceRemoveInterface(n2)
 				return "", fmt.Errorf("Failed to add interface to bridge: %s", err)
 			}
+
+			// Attempt to disable IPv6 on the host side interface
+			if shared.PathExists(fmt.Sprintf("/proc/sys/net/ipv6/conf/%s/disable_ipv6", n1)) {
+				ioutil.WriteFile(fmt.Sprintf("/proc/sys/net/ipv6/conf/%s/disable_ipv6", n1), []byte("1"), 0644)
+			}
 		}
 
 		dev = n2

From 074990d14cf2fa7319cf79a681787f30bbe666d9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 8 Feb 2017 19:50:04 -0500
Subject: [PATCH 3/5] tests: Switch to use gofmt instead of "go fmt"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 test/suites/static_analysis.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/suites/static_analysis.sh b/test/suites/static_analysis.sh
index 4d2608c..878bce7 100644
--- a/test/suites/static_analysis.sh
+++ b/test/suites/static_analysis.sh
@@ -62,7 +62,7 @@ test_static_analysis() {
 
     # go fmt
     git add -u :/
-    go fmt ./...
+    gofmt -w -s ./
     git diff --exit-code
 
     # make sure the .pot is updated

From e7b0a3e1ce6680b6ff3b613477c390110d9f4474 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 8 Feb 2017 19:51:41 -0500
Subject: [PATCH 4/5] db: Rely on CASCADE
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #2844

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/db_certificates.go | 11 +++++------
 lxd/db_containers.go   | 16 ++--------------
 lxd/db_images.go       |  8 +-------
 lxd/db_networks.go     | 16 ++--------------
 lxd/db_profiles.go     | 20 ++------------------
 5 files changed, 12 insertions(+), 59 deletions(-)

diff --git a/lxd/db_certificates.go b/lxd/db_certificates.go
index 09baed4..1f0c0b2 100644
--- a/lxd/db_certificates.go
+++ b/lxd/db_certificates.go
@@ -110,13 +110,12 @@ func dbCertSave(db *sql.DB, cert *dbCertInfo) error {
 
 // dbCertDelete deletes a certificate from the db.
 func dbCertDelete(db *sql.DB, fingerprint string) error {
-	_, err := dbExec(
-		db,
-		"DELETE FROM certificates WHERE fingerprint=?",
-		fingerprint,
-	)
+	_, err := dbExec(db, "DELETE FROM certificates WHERE fingerprint=?", fingerprint)
+	if err != nil {
+		return err
+	}
 
-	return err
+	return nil
 }
 
 func dbCertUpdate(db *sql.DB, fingerprint string, certName string, certType int) error {
diff --git a/lxd/db_containers.go b/lxd/db_containers.go
index 74aacbf..d090178 100644
--- a/lxd/db_containers.go
+++ b/lxd/db_containers.go
@@ -24,24 +24,12 @@ func dbContainerRemove(db *sql.DB, name string) error {
 		return err
 	}
 
-	tx, err := dbBegin(db)
+	_, err = dbExec(db, "DELETE FROM containers WHERE id=?", id)
 	if err != nil {
 		return err
 	}
 
-	err = dbContainerConfigClear(tx, id)
-	if err != nil {
-		tx.Rollback()
-		return err
-	}
-
-	_, err = tx.Exec("DELETE FROM containers WHERE id=?", id)
-	if err != nil {
-		tx.Rollback()
-		return err
-	}
-
-	return txCommit(tx)
+	return nil
 }
 
 func dbContainerName(db *sql.DB, id int) (string, error) {
diff --git a/lxd/db_images.go b/lxd/db_images.go
index 4672be0..081f1a3 100644
--- a/lxd/db_images.go
+++ b/lxd/db_images.go
@@ -243,17 +243,11 @@ func dbImageGet(db *sql.DB, fingerprint string, public bool, strictMatching bool
 }
 
 func dbImageDelete(db *sql.DB, id int) error {
-	tx, err := dbBegin(db)
+	_, err := dbExec(db, "DELETE FROM images WHERE id=?", id)
 	if err != nil {
 		return err
 	}
 
-	_, _ = tx.Exec("DELETE FROM images WHERE id=?", id)
-
-	if err := txCommit(tx); err != nil {
-		return err
-	}
-
 	return nil
 }
 
diff --git a/lxd/db_networks.go b/lxd/db_networks.go
index 6ddaa6d..3040617 100644
--- a/lxd/db_networks.go
+++ b/lxd/db_networks.go
@@ -232,24 +232,12 @@ func dbNetworkDelete(db *sql.DB, name string) error {
 		return err
 	}
 
-	tx, err := dbBegin(db)
-	if err != nil {
-		return err
-	}
-
-	_, err = tx.Exec("DELETE FROM networks WHERE id=?", id)
-	if err != nil {
-		tx.Rollback()
-		return err
-	}
-
-	err = dbNetworkConfigClear(tx, id)
+	_, err = dbExec(db, "DELETE FROM networks WHERE id=?", id)
 	if err != nil {
-		tx.Rollback()
 		return err
 	}
 
-	return txCommit(tx)
+	return nil
 }
 
 func dbNetworkRename(db *sql.DB, oldName string, newName string) error {
diff --git a/lxd/db_profiles.go b/lxd/db_profiles.go
index b05bdf0..cfddf87 100644
--- a/lxd/db_profiles.go
+++ b/lxd/db_profiles.go
@@ -189,28 +189,12 @@ func dbProfileDelete(db *sql.DB, name string) error {
 		return err
 	}
 
-	tx, err := dbBegin(db)
-	if err != nil {
-		return err
-	}
-
-	_, err = tx.Exec("DELETE FROM profiles WHERE id=?", id)
+	_, err = dbExec(db, "DELETE FROM profiles WHERE id=?", id)
 	if err != nil {
-		tx.Rollback()
 		return err
 	}
 
-	err = dbProfileConfigClear(tx, id)
-	if err != nil {
-		return err
-	}
-
-	_, err = tx.Exec("DELETE FROM containers_profiles WHERE profile_id=?", id)
-	if err != nil {
-		return err
-	}
-
-	return txCommit(tx)
+	return nil
 }
 
 func dbProfileUpdate(db *sql.DB, name string, newName string) error {

From 3554e493098c6f8487481b70640f424d12a40034 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 8 Feb 2017 20:17:21 -0500
Subject: [PATCH 5/5] tests: Avoid a zfs race
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 test/backends/zfs.sh | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/test/backends/zfs.sh b/test/backends/zfs.sh
index 41013fe..b22c717 100644
--- a/test/backends/zfs.sh
+++ b/test/backends/zfs.sh
@@ -16,6 +16,10 @@ zfs_setup() {
   # prefix lxdtest- here, as zfs pools must start with a letter, but tempdir
   # won't necessarily generate one that does.
   zpool create "lxdtest-$(basename "${LXD_DIR}")" "${LXD_DIR}/zfspool" -m none
+
+  # Avoid a zfs bug in "-p" handling during concurent create
+  zfs create -o mountpoint=none "lxdtest-$(basename "${LXD_DIR}")/containers"
+  zfs create -o mountpoint=none "lxdtest-$(basename "${LXD_DIR}")/images"
 }
 
 zfs_configure() {


More information about the lxc-devel mailing list