Signed-off-by: John Howard <jhoward@microsoft.com>
John Howard authored on 2015/04/25 04:35:51... | ... |
@@ -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 |
+} |