github.com/endocode/docker@v1.4.2-0.20160113120958-46eb4700391e/daemon/graphdriver/driver_linux.go (about) 1 // +build linux 2 3 package graphdriver 4 5 import ( 6 "path/filepath" 7 "syscall" 8 ) 9 10 const ( 11 // FsMagicAufs filesystem id for Aufs 12 FsMagicAufs = FsMagic(0x61756673) 13 // FsMagicBtrfs filesystem id for Btrfs 14 FsMagicBtrfs = FsMagic(0x9123683E) 15 // FsMagicCramfs filesystem id for Cramfs 16 FsMagicCramfs = FsMagic(0x28cd3d45) 17 // FsMagicExtfs filesystem id for Extfs 18 FsMagicExtfs = FsMagic(0x0000EF53) 19 // FsMagicF2fs filesystem id for F2fs 20 FsMagicF2fs = FsMagic(0xF2F52010) 21 // FsMagicJffs2Fs filesystem if for Jffs2Fs 22 FsMagicJffs2Fs = FsMagic(0x000072b6) 23 // FsMagicJfs filesystem id for Jfs 24 FsMagicJfs = FsMagic(0x3153464a) 25 // FsMagicNfsFs filesystem id for NfsFs 26 FsMagicNfsFs = FsMagic(0x00006969) 27 // FsMagicRAMFs filesystem id for RamFs 28 FsMagicRAMFs = FsMagic(0x858458f6) 29 // FsMagicReiserFs filesystem id for ReiserFs 30 FsMagicReiserFs = FsMagic(0x52654973) 31 // FsMagicSmbFs filesystem id for SmbFs 32 FsMagicSmbFs = FsMagic(0x0000517B) 33 // FsMagicSquashFs filesystem id for SquashFs 34 FsMagicSquashFs = FsMagic(0x73717368) 35 // FsMagicTmpFs filesystem id for TmpFs 36 FsMagicTmpFs = FsMagic(0x01021994) 37 // FsMagicVxFS filesystem id for VxFs 38 FsMagicVxFS = FsMagic(0xa501fcf5) 39 // FsMagicXfs filesystem id for Xfs 40 FsMagicXfs = FsMagic(0x58465342) 41 // FsMagicZfs filesystem id for Zfs 42 FsMagicZfs = FsMagic(0x2fc12fc1) 43 ) 44 45 var ( 46 // Slice of drivers that should be used in an order 47 priority = []string{ 48 "aufs", 49 "btrfs", 50 "zfs", 51 "devicemapper", 52 "overlay", 53 "vfs", 54 } 55 56 // FsNames maps filesystem id to name of the filesystem. 57 FsNames = map[FsMagic]string{ 58 FsMagicAufs: "aufs", 59 FsMagicBtrfs: "btrfs", 60 FsMagicCramfs: "cramfs", 61 FsMagicExtfs: "extfs", 62 FsMagicF2fs: "f2fs", 63 FsMagicJffs2Fs: "jffs2", 64 FsMagicJfs: "jfs", 65 FsMagicNfsFs: "nfs", 66 FsMagicRAMFs: "ramfs", 67 FsMagicReiserFs: "reiserfs", 68 FsMagicSmbFs: "smb", 69 FsMagicSquashFs: "squashfs", 70 FsMagicTmpFs: "tmpfs", 71 FsMagicUnsupported: "unsupported", 72 FsMagicVxFS: "vxfs", 73 FsMagicXfs: "xfs", 74 FsMagicZfs: "zfs", 75 } 76 ) 77 78 // GetFSMagic returns the filesystem id given the path. 79 func GetFSMagic(rootpath string) (FsMagic, error) { 80 var buf syscall.Statfs_t 81 if err := syscall.Statfs(filepath.Dir(rootpath), &buf); err != nil { 82 return 0, err 83 } 84 return FsMagic(buf.Type), nil 85 }