lkml.org 
[lkml]   [2010]   [May]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/8] buffer: make invalidate_bdev() drain all percpu LRU add caches
    Date
    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: Tejun Heo <tj@kernel.org>
    ---
    fs/buffer.c | 1 +
    1 files changed, 1 insertions(+), 0 deletions(-)

    diff --git a/fs/buffer.c b/fs/buffer.c
    index c9c266d..08e422d 100644
    --- a/fs/buffer.c
    +++ b/fs/buffer.c
    @@ -275,6 +275,7 @@ void invalidate_bdev(struct block_device *bdev)
    return;

    invalidate_bh_lrus();
    + lru_add_drain_all(); /* make sure all lru add caches are flushed */
    invalidate_mapping_pages(mapping, 0, -1);
    }
    EXPORT_SYMBOL(invalidate_bdev);
    --
    1.6.4.2


    \
     
     \ /
      Last update: 2010-05-15 20:13    [W:3.118 / U:0.788 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site