On Thu, May 2, 2019 at 12:04 AM <ezemtsov@xxxxxxxxxx> wrote: > > Hi All, > > Please take a look at Incremental FS. > > Incremental FS is special-purpose Linux virtual file system that allows > execution of a program while its binary and resource files are still being > lazily downloaded over the network, USB etc. It is focused on incremental > delivery for a small number (under 100) of big files (more than 10 megabytes each). > Incremental FS doesn’t allow direct writes into files and, once loaded, file > content never changes. Incremental FS doesn’t use a block device, instead it > saves data into a backing file located on a regular file-system. > > What’s it for? > > It allows running big Android apps before their binaries and resources are > fully loaded to an Android device. If an app reads something not loaded yet, > it needs to wait for the data block to be fetched, but in most cases hot blocks > can be loaded in advance and apps can run smoothly and almost instantly. This sounds very useful. Why does it have to be a new special-purpose Linux virtual file? Why not FUSE, which is meant for this purpose? Those are things that you should explain when you are proposing a new filesystem, but I will answer for you - because FUSE page fault will incur high latency also after blocks are locally available in your backend store. Right? How about fscache support for FUSE then? You can even write your own fscache backend if the existing ones don't fit your needs for some reason. Do you know of the project https://vfsforgit.org/? Not exactly the same use case but very similar. There is ongoing work on a Linux port developed by GitHub.com: https://github.com/github/libprojfs Piling logic into the kernel is not the answer. Adding the missing interfaces to the kernel is the answer. Thanks, Amir.