Skip to content
  • David Howells's avatar
    CacheFiles: Provide read-and-reset release counters for cachefilesd · a5b3a80b
    David Howells authored
    
    
    Provide read-and-reset objects- and blocks-released counters for cachefilesd
    to use to work out whether there's anything new that can be culled.
    
    One of the problems cachefilesd has is that if all the objects in the cache
    are pinned by inodes lying dormant in the kernel inode cache, there isn't
    anything for it to cull.  In such a case, it just spins around walking the
    filesystem tree and scanning for something to cull.  This eats up a lot of
    CPU time.
    
    By telling cachefilesd if there have been any releases, the daemon can
    sleep until there is the possibility of something to do.
    
    cachefilesd finds this information by the following means:
    
     (1) When the control fd is read, the kernel presents a list of values of
         interest.  "freleased=N" and "breleased=N" are added to this list to
         indicate the number of files released and number of blocks released
         since the last read call.  At this point the counters are reset.
    
     (2) POLLIN is signalled if the number of files released becomes greater
         than 0.
    
    Note that by 'released' it just means that the kernel has released its
    interest in those files for the moment, not necessarily that the files
    should be deleted from the cache.
    
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    a5b3a80b