libfuse / pyfuse3

Python 3 bindings for libfuse 3 with asynchronous API (Trio compatible)
https://pyfuse3.readthedocs.io/
Other
162 stars 48 forks source link

passthrough example for ext fs #96

Open kuchling opened 7 months ago

kuchling commented 7 months ago

Ext filesystem compatibility checked by https://github.com/zfsonlinux/fstest.git. I don't know how good this testsuit is, but i also found no better or new one. Could be merged, i have only tested with ext4 as source fs. This testsuit has a lot of testcases.

Nikratio commented 7 months ago

Thanks! Could you elaborate on the differences to the existing passthroughfs.py? Might there be a way to merge the changes in there instead?

kuchling commented 7 months ago

Thanks! Could you elaborate on the differences to the existing passthroughfs.py? Might there be a way to merge the changes in there instead?

Ext filesystem compatibility checked by https://github.com/zfsonlinux/fstest.git. I don't know how good this testsuit is, but i also found no better or new one. Could be merged, i have only tested with ext4 as source fs. This testsuit has a lot of testcases.

create syscal didn't set mode and ownership
chown syscal with no change of uid gid should mofify ctime on ext fs (seems to be different on other filesystems)
allow_other, dev, suid was set within options to run all testcases
Nikratio commented 7 months ago

Thanks! Could you elaborate on the differences to the existing passthroughfs.py? Might there be a way to merge the changes in there instead?

Ext filesystem compatibility checked by https://github.com/zfsonlinux/fstest.git.

To rephrase, the difference between the existing passthroughfs.py and your ext_passthroughfs.py is that the latter passes the fstest, and the former does not?

If so, what would it take to modify passthroughfs.py to pass the test? Why do we need a new filesystem?

kuchling commented 7 months ago

I do not need a new fs, it was choosen to not break other stuff and because different lower fs have different behavoir see second change, regarding time. The only relevant change for passthroughps.py in general in my opinion is to correct the create syscall as stated to fix owner and mode. Why the testsuite? It was to get maximum compatiblility with the original fs, means if passthroughfs.py will be used to intercept some things (every ones one fun and idea) it should behave as good as possible to the original fs.

Nikratio commented 7 months ago

I do not need a new fs, it was choosen to not break other stuff and because different lower fs have different behavoir see second change, regarding time.

I do not see any changes, I just see one large new file being added.

Could you please modify passthroughfs.py instead of adding a new file?