• Kirill Smelkov's avatar
    fuse: Fix InodeRetrieveCache to retrieve data in chunks · 58dcd77a
    Kirill Smelkov authored
    It turned out that:
    
    1. Linux kernel cannot send data in chunks bigger than what was
       configured as MaxWrite on init, and
    
    2. if we ask for more, and that more, after capping to kernel write
       maxium, is more than configured MaxWrite, the kernel will simply drop
       NOTIFY_REPLY message. This, hopefully, will be fixed
    
    	https://marc.info/?l=linux-fsdevel&m=155000277921155&w=2
    
       but we cannot count on this fix to be present on older kernels, and
       even if it is there, we still won't get more than MaxWrite data.
    
    -> Rework InodeRetrieveCache to retrieve the data in chunks.
    
    NOTE1: we do not load users with this FUSE exchange details and instead
    of returning less content than requested, try to retrieve it all.
    
    NOTE2: without changes to fuse/server.go, added test will get stuck (see
    details in above link to linux-fsdevel patch).
    58dcd77a
server.go 20 KB