containerd / containerd/continuity
TestUsage broken on ZFS
- Dominant language
- Go
- Stars
- 153
- Forks
- 74
- PR merge metrics
- No merged PRs in 30d
Description
When I run `TestUsage` in the `fs` package with a temp dir on a ZFS mount, it fails like this:
```
$ TMPDIR=/testpool/tmp go test ./fs -v -run TestUsage
=== RUN TestUsage
=== RUN TestUsage/SingleSmallFile
=== PAUSE TestUsage/SingleSmallFile
=== RUN TestUsage/MultipleSmallFile
=== PAUSE TestUsage/MultipleSmallFile
=== RUN TestUsage/BiggerFiles
=== PAUSE TestUsage/BiggerFiles
=== RUN TestUsage/SparseFiles
=== PAUSE TestUsage/SparseFiles
=== RUN TestUsage/Hardlinks
=== PAUSE TestUsage/Hardlinks
=== RUN TestUsage/HardlinkSparefile
=== PAUSE TestUsage/HardlinkSparefile
=== CONT TestUsage/SingleSmallFile
du_test.go:129: Wrong usage size 1536, expected 132096
=== CONT TestUsage/HardlinkSparefile
=== CONT TestUsage/SparseFiles
du_test.go:129: Wrong usage size 2560, expected 525312
=== CONT TestUsage/MultipleSmallFile
=== CONT TestUsage/Hardlinks
=== CONT TestUsage/BiggerFiles
=== CONT TestUsage/HardlinkSparefile
du_test.go:129: Wrong usage size 1536, expected 263168
=== CONT TestUsage/MultipleSmallFile
du_test.go:129: Wrong usage size 2048, expected 263168
=== CONT TestUsage/Hardlinks
du_test.go:129: Wrong usage size 1536, expected 132096
=== CONT TestUsage/BiggerFiles
du_test.go:129: Wrong usage size 2560, expected 394240
--- FAIL: TestUsage (0.00s)
--- FAIL: TestUsage/SingleSmallFile (0.00s)
--- FAIL: TestUsage/SparseFiles (0.00s)
--- FAIL: TestUsage/Hardlinks (0.00s)
--- FAIL: TestUsage/BiggerFiles (0.00s)
--- FAIL: TestUsage/HardlinkSparefile (0.00s)
--- FAIL: TestUsage/MultipleSmallFile (0.00s)
FAIL
FAIL github.com/containerd/continuity/fs 0.006s
FAIL
```
If I add a sleep before `DiskUsage` is called, I get slightly different but still-failing results:
```
$ TMPDIR=/testpool/tmp go test ./fs -v -run TestUsage
=== RUN TestUsage
=== RUN TestUsage/SingleSmallFile
=== PAUSE TestUsage/SingleSmallFile
=== RUN TestUsage/MultipleSmallFile
=== PAUSE TestUsage/MultipleSmallFile
=== RUN TestUsage/BiggerFiles
=== PAUSE TestUsage/BiggerFiles
=== RUN TestUsage/SparseFiles
=== PAUSE TestUsage/SparseFiles
=== RUN TestUsage/Hardlinks
=== PAUSE TestUsage/Hardlinks
=== RUN TestUsage/HardlinkSparefile
=== PAUSE TestUsage/HardlinkSparefile
=== CONT TestUsage/SingleSmallFile
=== CONT TestUsage/HardlinkSparefile
=== CONT TestUsage/Hardlinks
=== CONT TestUsage/SparseFiles
=== CONT TestUsage/SingleSmallFile
du_test.go:132: Wrong usage size 2048, expected 132096
=== CONT TestUsage/HardlinkSparefile
du_test.go:132: Wrong usage size 266752, expected 263168
=== CONT TestUsage/BiggerFiles
=== CONT TestUsage/MultipleSmallFile
=== CONT TestUsage/Hardlinks
du_test.go:132: Wrong usage size 62976, expected 132096
=== CONT TestUsage/SparseFiles
du_test.go:132: Wrong usage size 399360, expected 525312
=== CONT TestUsage/BiggerFiles
du_test.go:132: Wrong usage size 55296, expected 394240
=== CONT TestUsage/MultipleSmallFile
du_test.go:132: Wrong usage size 3072, expected 263168
--- FAIL: TestUsage (0.00s)
--- FAIL: TestUsage/SingleSmallFile (5.00s)
--- FAIL: TestUsage/HardlinkSparefile (5.00s)
--- FAIL: TestUsage/Hardlinks (5.00s)
--- FAIL: TestUsage/SparseFiles (5.00s)
--- FAIL: TestUsage/BiggerFiles (5.00s)
--- FAIL: TestUsage/MultipleSmallFile (5.00s)
FAIL
FAIL github.com/containerd/continuity/fs 10.005s
FAIL
```
It looks like the `DiskUsage` function is working correctly, but the expected size calculation doesn't hold for how ZFS manages its blocks. This occurs both with OpenZFS on Ubuntu 16.04 and on FreeBSD 12.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.