• Tejun Heo's avatar
    buffer: make invalidate_bdev() drain all percpu LRU add caches · fa4b9074
    Tejun Heo authored
    invalidate_bdev() should release all page cache pages which are clean
    and not being used; however, if some pages are still in the percpu LRU
    add caches on other cpus, those pages are considered in used and don't
    get released.  Fix it by calling lru_add_drain_all() before trying to
    invalidate pages.
    
    This problem was discovered while testing block automatic native
    capacity unlocking.  Null pages which were read before automatic
    unlocking didn't get released by invalidate_bdev() and ended up
    interfering with partition scan after unlocking.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    fa4b9074
buffer.c 88.6 KB