1234567891011121314151617181920212223242526272829303132333435363738 |
- package zfs
- import (
- "fmt"
- "strings"
- "syscall"
- "github.com/Sirupsen/logrus"
- "github.com/docker/docker/daemon/graphdriver"
- )
- func checkRootdirFs(rootdir string) error {
- var buf syscall.Statfs_t
- if err := syscall.Statfs(rootdir, &buf); err != nil {
- return fmt.Errorf("Failed to access '%s': %s", rootdir, err)
- }
- // on FreeBSD buf.Fstypename contains ['z', 'f', 's', 0 ... ]
- if (buf.Fstypename[0] != 122) || (buf.Fstypename[1] != 102) || (buf.Fstypename[2] != 115) || (buf.Fstypename[3] != 0) {
- logrus.Debugf("[zfs] no zfs dataset found for rootdir '%s'", rootdir)
- return graphdriver.ErrPrerequisites
- }
- 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]
- }
|