diff --git a/daemon/graphdriver/zfs/zfs.go b/daemon/graphdriver/zfs/zfs.go index 777279b5d0..89543a71cf 100644 --- a/daemon/graphdriver/zfs/zfs.go +++ b/daemon/graphdriver/zfs/zfs.go @@ -212,7 +212,7 @@ func (d *Driver) ZfsPath(id string) string { } func (d *Driver) MountPath(id string) string { - return path.Join(d.options.mountPath, "graph", id) + return path.Join(d.options.mountPath, "graph", getMountpoint(id)) } func (d *Driver) Create(id string, parent string) error { diff --git a/daemon/graphdriver/zfs/zfs_freebsd.go b/daemon/graphdriver/zfs/zfs_freebsd.go index 6afdcf103f..a7e28b1690 100644 --- a/daemon/graphdriver/zfs/zfs_freebsd.go +++ b/daemon/graphdriver/zfs/zfs_freebsd.go @@ -2,6 +2,7 @@ package zfs import ( "fmt" + "strings" "syscall" log "github.com/Sirupsen/logrus" @@ -22,3 +23,16 @@ func checkRootdirFs(rootdir string) error { return nil } + +func getMountpoint(id string) string { + maxlen := 12 + + // we need to preserve filesystem suffix + suffix := strings.SplitN(id, "-", 2) + + if len(suffix) > 1 { + return id[:maxlen] + "-" + suffix[1] + } + + return id[:maxlen] +} diff --git a/daemon/graphdriver/zfs/zfs_linux.go b/daemon/graphdriver/zfs/zfs_linux.go index ee9fadf06f..f840ed54bf 100644 --- a/daemon/graphdriver/zfs/zfs_linux.go +++ b/daemon/graphdriver/zfs/zfs_linux.go @@ -21,3 +21,7 @@ func checkRootdirFs(rootdir string) error { return nil } + +func getMountpoint(id string) string { + return id +} diff --git a/daemon/graphdriver/zfs/zfs_unsupported.go b/daemon/graphdriver/zfs/zfs_unsupported.go index c1a0c73d46..643b169bc5 100644 --- a/daemon/graphdriver/zfs/zfs_unsupported.go +++ b/daemon/graphdriver/zfs/zfs_unsupported.go @@ -5,3 +5,7 @@ package zfs func checkRootdirFs(rootdir string) error { return nil } + +func getMountpoint(id string) string { + return id +}