forked from TrueCloudLab/restic
32 lines
1.1 KiB
Text
32 lines
1.1 KiB
Text
seqdiag {
|
|
app;
|
|
fuse [label="bazil.org/fuse"];
|
|
fusermount;
|
|
kernel;
|
|
mounts;
|
|
|
|
app;
|
|
fuse [label="bazil.org/fuse"];
|
|
fusermount;
|
|
kernel;
|
|
mounts;
|
|
|
|
app -> fuse [label="Mount"];
|
|
fuse -> fusermount [label="spawn, pass socketpair fd"];
|
|
fusermount -> kernel [label="open /dev/fuse"];
|
|
fusermount -> kernel [label="mount(2)"];
|
|
kernel ->> mounts [label="mount is visible"];
|
|
fusermount <-- kernel [label="mount(2) returns"];
|
|
fuse <<-- fusermount [diagonal, label="exit, receive /dev/fuse fd", leftnote="on Linux, successful exit here\nmeans the mount has happened,\nthough InitRequest might not have yet"];
|
|
app <-- fuse [label="Mount returns\nConn.Ready is already closed"];
|
|
|
|
app -> fuse [label="fs.Serve"];
|
|
fuse => kernel [label="read /dev/fuse fd", note="starts with InitRequest"];
|
|
fuse -> app [label="Init"];
|
|
fuse <-- app [color=red];
|
|
fuse -> kernel [label="write /dev/fuse fd", color=red];
|
|
kernel -> kernel [label="set connection\nstate to error", color=red];
|
|
fuse <-- kernel;
|
|
... conn.MountError == nil, so it is still mounted ...
|
|
... call conn.Close to clean up ...
|
|
}
|