Hi,
FUSE based userspace filesystem process can be killed accidentally. If
it happens, the connection to kernel/fuse will be destroyed ending up
with a residual mountpoint. All following requests will be rejected.
If userspace is capable to hold the *fd* returned by opening `/dev/fuse`
and it's somewhat stateless or the internal state can be recovered
somehow, even the process dies, we can still keep the fuse connection.
It gives us an opportunity to do failover.
The philosophy doing this is simple, just a control file(perhaps named
as "resend" to `/sys/fs/fuse/connections/<id>/resend`). By writing
arbitrary string into this file, fuse will move all the requests waiting
for answers from Processing queue back to the Pending queue and resend
those requests to userspace.
After this, the recovered userspace process can continue processing
those requests, which is transparent to end-users.
Any thoughts about this idea?
I can send a RFC patch if necessary to make this discussion progress. :-)
Thanks,
Changwei