On Thu, May 2, 2019 at 1:21 PM Amir Goldstein <amir73il@xxxxxxxxx> wrote: > > 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. I wonder whether userfaultfd can but used for that use-case too? -- Thanks, //richard