瀏覽代碼

Add error when running overlay over btrfs.

Docker-DCO-1.1-Signed-off-by: Jessica Frazelle <jess@docker.com> (github: jfrazelle)
Jessica Frazelle 10 年之前
父節點
當前提交
32f1025b22
共有 1 個文件被更改,包括 15 次插入0 次删除
  1. 15 0
      daemon/graphdriver/overlay/overlay.go

+ 15 - 0
daemon/graphdriver/overlay/overlay.go

@@ -99,6 +99,21 @@ func Init(home string, options []string) (graphdriver.Driver, error) {
 		return nil, graphdriver.ErrNotSupported
 		return nil, graphdriver.ErrNotSupported
 	}
 	}
 
 
+	// check if they are running over btrfs
+	var buf syscall.Statfs_t
+	if err := syscall.Statfs(path.Dir(home), &buf); err != nil {
+		return nil, err
+	}
+
+	switch graphdriver.FsMagic(buf.Type) {
+	case graphdriver.FsMagicBtrfs:
+		log.Error("'overlay' is not supported over btrfs.")
+		return nil, graphdriver.ErrIncompatibleFS
+	case graphdriver.FsMagicAufs:
+		log.Error("'overlay' is not supported over aufs.")
+		return nil, graphdriver.ErrIncompatibleFS
+	}
+
 	// Create the driver home dir
 	// Create the driver home dir
 	if err := os.MkdirAll(home, 0755); err != nil && !os.IsExist(err) {
 	if err := os.MkdirAll(home, 0755); err != nil && !os.IsExist(err) {
 		return nil, err
 		return nil, err