On Wed, 10 Nov 2021 at 04:43, Hao Peng <flyingpenghao@xxxxxxxxx> wrote: > > On Wed, Sep 8, 2021 at 5:27 PM Hao Peng <flyingpenghao@xxxxxxxxx> wrote: > > > > On Wed, Sep 8, 2021 at 5:08 PM Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > > > > > > On Wed, 8 Sept 2021 at 04:25, Hao Peng <flyingpenghao@xxxxxxxxx> wrote: > > > > > > > > On Tue, Sep 7, 2021 at 5:34 PM Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > > > > > > > > > > On Mon, 6 Sept 2021 at 14:36, Hao Peng <flyingpenghao@xxxxxxxxx> wrote: > > > > > > > > > > > > For a simple read-only file system, as long as the connection > > > > > > is not broken, the recovery of the user-mode read-only file > > > > > > system can be realized by putting the request of the processing > > > > > > list back into the pending list. > > > > > > > > > > Thanks for the patch. > > > > > > > > > > Do you have example userspace code for this? > > > > > > > > > Under development. When the fuse user-mode file system process is abnormal, > > > > the process does not terminate (/dev/fuse will not be closed), enter > > > > the reset procedure, > > > > and will not open /dev/fuse again during the reinitialization. > > > > Of course, this can only solve part of the abnormal problem. > > > > > > Yes, that's what I'm mainly worried about. Replaying the few > > > currently pending requests is easy, but does that really help in real > > > situations? > > > > > > Much more information is needed about what you are trying to achieve > > > and how, as well as a working userspace implementation to be able to > > > judge this patch. > > > > > I will provide a simple example in a few days. The effect achieved is that the > > user process will not perceive the abnormal restart of the read-only file system > > process based on fuse. > > > > > Thanks, > > > Miklos > Hi,I have implemented a small test program to illustrate this new feature. > After downloading and compiling from > https://github.com/flying-122/libfuse/tree/flying > #gcc -o testfile testfile.c -D_GNU_SOURCE > #./example/passthrough_ll -o debug -s /mnt3 > #./testfile (on another console) > #ps aux | grep pass > #root 34889 0.0 0.0 8848 864 pts/2 S+ 13:10 0:00 > ./example/passthrough_ll -o debug -s /mnt3 > #root 34896 0.0 0.0 9880 128 pts/2 S+ 13:10 0:00 > ./example/passthrough_ll -o debug -s /mnt3 > #root 34913 0.0 0.0 12112 1060 pts/1 S+ 13:10 0:00 > grep --color=auto pass > // kill child process > #kill 34896 > You will see that ./testfile continues to execute without noticing the > abnormal restart of the fuse file system. This is a very good first example demonstrating the limits of the recovery. The only state saved is the actual device file descriptor and the result of the INIT negotiation. It works if there are a fixed number of files, e.g. a read only filesystem, where the files can be enumerated (i.e. a file or directory can be found based on a single 64bit index) Is this your use case? Are you ever planning to extend this to read-write filesystems? Thanks, Miklos