• Mikulas Patocka's avatar
    dm bufio: check new buffer allocation watermark every 30 seconds · 390020ad
    Mikulas Patocka authored
    dm-bufio checks a watermark when it allocates a new buffer in
    __bufio_new().  However, it doesn't check the watermark when the user
    changes /sys/module/dm_bufio/parameters/max_cache_size_bytes.
    
    This may result in a problem - if the watermark is high enough so that
    all possible buffers are allocated and if the user lowers the value of
    "max_cache_size_bytes", the watermark will never be checked against the
    new value because no new buffer would be allocated.
    
    To fix this, change __evict_old_buffers() so that it checks the
    watermark.  __evict_old_buffers() is called every 30 seconds, so if the
    user reduces "max_cache_size_bytes", dm-bufio will react to this change
    within 30 seconds and decrease memory consumption.
    
    Depends-on: 1b0fb5a5 ("dm bufio: avoid a possible ABBA deadlock")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    390020ad
dm-bufio.c 47.5 KB