mount: support FUSE helper#3765
Conversation
|
Build succeeded.
|
54a33ee to
a6dd6aa
Compare
|
Build succeeded.
|
a6dd6aa to
0469cac
Compare
|
Build succeeded.
|
0469cac to
e9c211f
Compare
Codecov Report
@@ Coverage Diff @@
## master #3765 +/- ##
==========================================
- Coverage 42.42% 42.35% -0.08%
==========================================
Files 130 130
Lines 14710 14735 +25
==========================================
Hits 6241 6241
- Misses 7548 7573 +25
Partials 921 921
Continue to review full report at Codecov.
|
|
Build succeeded.
|
Requires: * containerd/containerd#3765 * containers/fuse-overlayfs#133 --- Older commits were imported from containerd with the following commands: git filter-branch --prune-empty --subdirectory-filter snapshots/overlay --msg-filter 'cat; echo; echo This commit was imported from https://github.com/containerd/containerd/commit/${GIT_COMMIT}' master git tag --list | xargs git tag -d Signed-off-by: Akihiro Suda <[email protected]>
There was a problem hiding this comment.
I don't think this is generic enough. The options should probably just be the arguments.
There was a problem hiding this comment.
Putting all args to Options is incompatible with mount(8) convention: http://man7.org/linux/man-pages/man8/mount.8.html#EXTERNAL_HELPERS
|
We are trying to come up with a generic way to handle resources (specifically mounts and fuse processes) for 1.4. However, for these binaries it seems we could potentially make these pluggable on their own. A few questions I have since I am not as familiar with FUSE.
|
|
The interface is intended to be compatible with the external helper convention described in
Mostly yes, but some FUSE might want to register clean up shell command
Yes, I can rewrite the PR to use
Anywhere, in the daemon's mount namespace? |
|
Calling |
|
Thanks for the link, if
How would this be registered? The plan for the new resource management proposal is that they would have the equivalent of mount and unmount. In this implementation though, there would have to be something else doing all this.
I'm trying to think of this from a plugin perspective, if this was functionality we configured in the daemon, would that configuration need to be passed down to the shim. |
I was thinking that |
I don't think that is a road we want to go down. If these mounts require additional behavior we should focus on defining that as a register-able plugin interface rather than adding hooks to existing types. How much of a requirement is that to get this PR useable for what you are doing? I would really like to be able to support this but want to know if I should focus more on getting that plugin stuff working. |
|
umountcmd stuff is just theoretical and not needed for most FUSE fs including fuse-overlayfs |
e9c211f to
7ef3c7a
Compare
|
Updated PR. Now
Can it be follow-up PR when we face real usecase? Anyway, |
|
Build succeeded.
|
|
cc @hinshun |
|
Thanks @AkihiroSuda. I think one issue I have with this method is that we prefer not to have duplicate FUSE drivers for a same snapshot, without doing special deduplication on the FUSE mount helper. If multiple containers share a layer, ideally there is a single FUSE driver along with the overlay mount for other layers (FUSE and non-FUSE). @dmcgowan FYI, I described FUSE with context specific for containerd here: https://github.com/hinshun/hellofs#fuse-overview As well as a changeset for |
|
This PR is for non-Go fuse binaries, especially For FUSE filesystems written in Go, an additional PR would be needed. |
|
@dmcgowan Can we move this forward? |
|
Need more time to review this. Will update comment later. |
7ef3c7a to
cbf52e6
Compare
|
rebased |
|
Build succeeded.
|
When m.Type starts with either `fuse.` or `fuse3`, the mount helper binary `mount.fuse` or `mount.fuse3` is executed. Signed-off-by: Akihiro Suda <[email protected]>
cbf52e6 to
e739314
Compare
|
updated PR to use |
|
Build succeeded.
|
The writeback=0 workaround should no longer be needed: containerd/containerd#3765 (comment) Signed-off-by: Akihiro Suda <[email protected]>
When
m.Typestarts with eitherfuse.orfuse3, the mount helper binarymount.fuseormount.fuse3is executed.This is expected to be used by
fuse-overlayfsplugin: https://github.com/AkihiroSuda/containerd-fuse-overlayfsMotivation
The purpose of the containerd
fuse-overlayfssnapshotter plugin is to provide OverlayFS functionality for rootless mode without depending on the Ubuntu/Debian kernel patch.Although
fuse-overlayfsprovides shiftfs functionality and supports CRFS plugin, these functionalities are not planned to be supported by the containerdfuse-overlayfssnapshotter plugin. (EDIT: shiftfs functionality using fuse-overlayfs snapshotter is being covered in #3885)