瀏覽代碼

Merge pull request #43 from alexlarsson/dm-plugin-use-root-subdir

devmapper: Use a "root" subdirectory in the devmapper volume
Victor Vieux 11 年之前
父節點
當前提交
5a4113140e
共有 1 個文件被更改,包括 22 次插入2 次删除
  1. 22 2
      graphdriver/devmapper/driver.go

+ 22 - 2
graphdriver/devmapper/driver.go

@@ -3,6 +3,7 @@ package devmapper
 import (
 	"fmt"
 	"github.com/dotcloud/docker/graphdriver"
+	"io/ioutil"
 	"os"
 	"path"
 )
@@ -57,7 +58,26 @@ func (d *Driver) Cleanup() error {
 }
 
 func (d *Driver) Create(id string, parent string) error {
-	return d.DeviceSet.AddDevice(id, parent)
+	if err := d.DeviceSet.AddDevice(id, parent); err != nil {
+		return err
+	}
+
+	mp := path.Join(d.home, "mnt", id)
+	if err := d.mount(id, mp); err != nil {
+		return err
+	}
+
+	if err := os.MkdirAll(path.Join(mp, "rootfs"), 0755); err != nil && !os.IsExist(err) {
+		return err
+	}
+
+	// Create an "id" file with the container/image id in it to help reconscruct this in case
+	// of later problems
+	if err := ioutil.WriteFile(path.Join(mp, "id"), []byte(id), 0600); err != nil {
+		return err
+	}
+
+	return nil
 }
 
 func (d *Driver) Remove(id string) error {
@@ -73,7 +93,7 @@ func (d *Driver) Get(id string) (string, error) {
 	if err := d.mount(id, mp); err != nil {
 		return "", err
 	}
-	return mp, nil
+	return path.Join(mp, "rootfs"), nil
 }
 
 func (d *Driver) mount(id, mountPoint string) error {