Signed-off-by: John Howard <jhoward@microsoft.com>
| ... | ... |
@@ -4,7 +4,7 @@ import ( |
| 4 | 4 |
"errors" |
| 5 | 5 |
"fmt" |
| 6 | 6 |
"os" |
| 7 |
- "path" |
|
| 7 |
+ "path/filepath" |
|
| 8 | 8 |
"strings" |
| 9 | 9 |
|
| 10 | 10 |
"github.com/Sirupsen/logrus" |
| ... | ... |
@@ -14,60 +14,17 @@ import ( |
| 14 | 14 |
type FsMagic uint32 |
| 15 | 15 |
|
| 16 | 16 |
const ( |
| 17 |
- FsMagicAufs = FsMagic(0x61756673) |
|
| 18 |
- FsMagicBtrfs = FsMagic(0x9123683E) |
|
| 19 |
- FsMagicCramfs = FsMagic(0x28cd3d45) |
|
| 20 |
- FsMagicExtfs = FsMagic(0x0000EF53) |
|
| 21 |
- FsMagicF2fs = FsMagic(0xF2F52010) |
|
| 22 |
- FsMagicJffs2Fs = FsMagic(0x000072b6) |
|
| 23 |
- FsMagicJfs = FsMagic(0x3153464a) |
|
| 24 |
- FsMagicNfsFs = FsMagic(0x00006969) |
|
| 25 |
- FsMagicRamFs = FsMagic(0x858458f6) |
|
| 26 |
- FsMagicReiserFs = FsMagic(0x52654973) |
|
| 27 |
- FsMagicSmbFs = FsMagic(0x0000517B) |
|
| 28 |
- FsMagicSquashFs = FsMagic(0x73717368) |
|
| 29 |
- FsMagicTmpFs = FsMagic(0x01021994) |
|
| 30 | 17 |
FsMagicUnsupported = FsMagic(0x00000000) |
| 31 |
- FsMagicXfs = FsMagic(0x58465342) |
|
| 32 |
- FsMagicZfs = FsMagic(0x2fc12fc1) |
|
| 33 | 18 |
) |
| 34 | 19 |
|
| 35 | 20 |
var ( |
| 36 | 21 |
DefaultDriver string |
| 37 | 22 |
// All registred drivers |
| 38 | 23 |
drivers map[string]InitFunc |
| 39 |
- // Slice of drivers that should be used in an order |
|
| 40 |
- priority = []string{
|
|
| 41 |
- "aufs", |
|
| 42 |
- "btrfs", |
|
| 43 |
- "zfs", |
|
| 44 |
- "devicemapper", |
|
| 45 |
- "overlay", |
|
| 46 |
- "vfs", |
|
| 47 |
- } |
|
| 48 | 24 |
|
| 49 | 25 |
ErrNotSupported = errors.New("driver not supported")
|
| 50 | 26 |
ErrPrerequisites = errors.New("prerequisites for driver not satisfied (wrong filesystem?)")
|
| 51 | 27 |
ErrIncompatibleFS = fmt.Errorf("backing file system is unsupported for this graph driver")
|
| 52 |
- |
|
| 53 |
- FsNames = map[FsMagic]string{
|
|
| 54 |
- FsMagicAufs: "aufs", |
|
| 55 |
- FsMagicBtrfs: "btrfs", |
|
| 56 |
- FsMagicCramfs: "cramfs", |
|
| 57 |
- FsMagicExtfs: "extfs", |
|
| 58 |
- FsMagicF2fs: "f2fs", |
|
| 59 |
- FsMagicJffs2Fs: "jffs2", |
|
| 60 |
- FsMagicJfs: "jfs", |
|
| 61 |
- FsMagicNfsFs: "nfs", |
|
| 62 |
- FsMagicRamFs: "ramfs", |
|
| 63 |
- FsMagicReiserFs: "reiserfs", |
|
| 64 |
- FsMagicSmbFs: "smb", |
|
| 65 |
- FsMagicSquashFs: "squashfs", |
|
| 66 |
- FsMagicTmpFs: "tmpfs", |
|
| 67 |
- FsMagicUnsupported: "unsupported", |
|
| 68 |
- FsMagicXfs: "xfs", |
|
| 69 |
- FsMagicZfs: "zfs", |
|
| 70 |
- } |
|
| 71 | 28 |
) |
| 72 | 29 |
|
| 73 | 30 |
type InitFunc func(root string, options []string) (Driver, error) |
| ... | ... |
@@ -139,7 +96,7 @@ func Register(name string, initFunc InitFunc) error {
|
| 139 | 139 |
|
| 140 | 140 |
func GetDriver(name, home string, options []string) (Driver, error) {
|
| 141 | 141 |
if initFunc, exists := drivers[name]; exists {
|
| 142 |
- return initFunc(path.Join(home, name), options) |
|
| 142 |
+ return initFunc(filepath.Join(home, name), options) |
|
| 143 | 143 |
} |
| 144 | 144 |
return nil, ErrNotSupported |
| 145 | 145 |
} |
| ... | ... |
@@ -210,7 +167,7 @@ func New(root string, options []string) (driver Driver, err error) {
|
| 210 | 210 |
func scanPriorDrivers(root string) []string {
|
| 211 | 211 |
priorDrivers := []string{}
|
| 212 | 212 |
for driver := range drivers {
|
| 213 |
- p := path.Join(root, driver) |
|
| 213 |
+ p := filepath.Join(root, driver) |
|
| 214 | 214 |
if _, err := os.Stat(p); err == nil {
|
| 215 | 215 |
priorDrivers = append(priorDrivers, driver) |
| 216 | 216 |
} |
| ... | ... |
@@ -222,7 +179,7 @@ func checkPriorDriver(name, root string) error {
|
| 222 | 222 |
priorDrivers := []string{}
|
| 223 | 223 |
for _, prior := range scanPriorDrivers(root) {
|
| 224 | 224 |
if prior != name && prior != "vfs" {
|
| 225 |
- if _, err := os.Stat(path.Join(root, prior)); err == nil {
|
|
| 225 |
+ if _, err := os.Stat(filepath.Join(root, prior)); err == nil {
|
|
| 226 | 226 |
priorDrivers = append(priorDrivers, prior) |
| 227 | 227 |
} |
| 228 | 228 |
} |
| ... | ... |
@@ -1,13 +1,64 @@ |
| 1 |
+// +build linux |
|
| 2 |
+ |
|
| 1 | 3 |
package graphdriver |
| 2 | 4 |
|
| 3 | 5 |
import ( |
| 4 |
- "path" |
|
| 6 |
+ "path/filepath" |
|
| 5 | 7 |
"syscall" |
| 6 | 8 |
) |
| 7 | 9 |
|
| 10 |
+const ( |
|
| 11 |
+ FsMagicAufs = FsMagic(0x61756673) |
|
| 12 |
+ FsMagicBtrfs = FsMagic(0x9123683E) |
|
| 13 |
+ FsMagicCramfs = FsMagic(0x28cd3d45) |
|
| 14 |
+ FsMagicExtfs = FsMagic(0x0000EF53) |
|
| 15 |
+ FsMagicF2fs = FsMagic(0xF2F52010) |
|
| 16 |
+ FsMagicJffs2Fs = FsMagic(0x000072b6) |
|
| 17 |
+ FsMagicJfs = FsMagic(0x3153464a) |
|
| 18 |
+ FsMagicNfsFs = FsMagic(0x00006969) |
|
| 19 |
+ FsMagicRamFs = FsMagic(0x858458f6) |
|
| 20 |
+ FsMagicReiserFs = FsMagic(0x52654973) |
|
| 21 |
+ FsMagicSmbFs = FsMagic(0x0000517B) |
|
| 22 |
+ FsMagicSquashFs = FsMagic(0x73717368) |
|
| 23 |
+ FsMagicTmpFs = FsMagic(0x01021994) |
|
| 24 |
+ FsMagicXfs = FsMagic(0x58465342) |
|
| 25 |
+ FsMagicZfs = FsMagic(0x2fc12fc1) |
|
| 26 |
+) |
|
| 27 |
+ |
|
| 28 |
+var ( |
|
| 29 |
+ // Slice of drivers that should be used in an order |
|
| 30 |
+ priority = []string{
|
|
| 31 |
+ "aufs", |
|
| 32 |
+ "btrfs", |
|
| 33 |
+ "zfs", |
|
| 34 |
+ "devicemapper", |
|
| 35 |
+ "overlay", |
|
| 36 |
+ "vfs", |
|
| 37 |
+ } |
|
| 38 |
+ |
|
| 39 |
+ FsNames = map[FsMagic]string{
|
|
| 40 |
+ FsMagicAufs: "aufs", |
|
| 41 |
+ FsMagicBtrfs: "btrfs", |
|
| 42 |
+ FsMagicCramfs: "cramfs", |
|
| 43 |
+ FsMagicExtfs: "extfs", |
|
| 44 |
+ FsMagicF2fs: "f2fs", |
|
| 45 |
+ FsMagicJffs2Fs: "jffs2", |
|
| 46 |
+ FsMagicJfs: "jfs", |
|
| 47 |
+ FsMagicNfsFs: "nfs", |
|
| 48 |
+ FsMagicRamFs: "ramfs", |
|
| 49 |
+ FsMagicReiserFs: "reiserfs", |
|
| 50 |
+ FsMagicSmbFs: "smb", |
|
| 51 |
+ FsMagicSquashFs: "squashfs", |
|
| 52 |
+ FsMagicTmpFs: "tmpfs", |
|
| 53 |
+ FsMagicUnsupported: "unsupported", |
|
| 54 |
+ FsMagicXfs: "xfs", |
|
| 55 |
+ FsMagicZfs: "zfs", |
|
| 56 |
+ } |
|
| 57 |
+) |
|
| 58 |
+ |
|
| 8 | 59 |
func GetFSMagic(rootpath string) (FsMagic, error) {
|
| 9 | 60 |
var buf syscall.Statfs_t |
| 10 |
- if err := syscall.Statfs(path.Dir(rootpath), &buf); err != nil {
|
|
| 61 |
+ if err := syscall.Statfs(filepath.Dir(rootpath), &buf); err != nil {
|
|
| 11 | 62 |
return 0, err |
| 12 | 63 |
} |
| 13 | 64 |
return FsMagic(buf.Type), nil |
| ... | ... |
@@ -1,7 +1,14 @@ |
| 1 |
-// +build !linux |
|
| 1 |
+// +build !linux,!windows |
|
| 2 | 2 |
|
| 3 | 3 |
package graphdriver |
| 4 | 4 |
|
| 5 |
+var ( |
|
| 6 |
+ // Slice of drivers that should be used in an order |
|
| 7 |
+ priority = []string{
|
|
| 8 |
+ "unsupported", |
|
| 9 |
+ } |
|
| 10 |
+) |
|
| 11 |
+ |
|
| 5 | 12 |
func GetFSMagic(rootpath string) (FsMagic, error) {
|
| 6 | 13 |
return FsMagicUnsupported, nil |
| 7 | 14 |
} |
| 8 | 15 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,26 @@ |
| 0 |
+package graphdriver |
|
| 1 |
+ |
|
| 2 |
+type DiffDiskDriver interface {
|
|
| 3 |
+ Driver |
|
| 4 |
+ CopyDiff(id, sourceId string) error |
|
| 5 |
+} |
|
| 6 |
+ |
|
| 7 |
+const ( |
|
| 8 |
+ FsMagicWindows = FsMagic(0xa1b1830f) |
|
| 9 |
+) |
|
| 10 |
+ |
|
| 11 |
+var ( |
|
| 12 |
+ // Slice of drivers that should be used in an order |
|
| 13 |
+ priority = []string{
|
|
| 14 |
+ "windows", |
|
| 15 |
+ } |
|
| 16 |
+ |
|
| 17 |
+ FsNames = map[FsMagic]string{
|
|
| 18 |
+ FsMagicWindows: "windows", |
|
| 19 |
+ FsMagicUnsupported: "unsupported", |
|
| 20 |
+ } |
|
| 21 |
+) |
|
| 22 |
+ |
|
| 23 |
+func GetFSMagic(rootpath string) (FsMagic, error) {
|
|
| 24 |
+ return FsMagicWindows, nil |
|
| 25 |
+} |