mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
a450a575a6
This commit is a set of fixes and improvement for zfs graph driver, in particular: 1. Remove mount point after umount in `Get()` error path, as well as in `Put()` (with `MNT_DETACH` flag). This should solve "failed to remove root filesystem for <ID> .... dataset is busy" error reported in Moby issue 35642. To reproduce the issue: - start dockerd with zfs - docker run -d --name c1 --rm busybox top - docker run -d --name c2 --rm busybox top - docker stop c1 - docker rm c1 Output when the bug is present: ``` Error response from daemon: driver "zfs" failed to remove root filesystem for XXX : exit status 1: "/sbin/zfs zfs destroy -r scratch/docker/YYY" => cannot destroy 'scratch/docker/YYY': dataset is busy ``` Output when the bug is fixed: ``` Error: No such container: c1 ``` (as the container has been successfully autoremoved on stop) 2. Fix/improve error handling in `Get()` -- do not try to umount if `refcount` > 0 3. Simplifies unmount in `Get()`. Specifically, remove call to `graphdriver.Mounted()` (which checks if fs is mounted using `statfs()` and check for fs type) and `mount.Unmount()` (which parses `/proc/self/mountinfo`). Calling `unix.Unmount()` is simple and sufficient. 4. Add unmounting of driver's home to `Cleanup()`. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com> |
||
---|---|---|
.. | ||
MAINTAINERS | ||
zfs.go | ||
zfs_freebsd.go | ||
zfs_linux.go | ||
zfs_test.go | ||
zfs_unsupported.go |