github.com/psychoss/docker@v1.9.0/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  }