lkml.org 
[lkml]   [2009]   [Sep]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/11] writeback: splice dirty inode entries to default bdi on bdi_destroy()
    Date
    We cannot safely ensure that the inodes are all gone at this point
    in time, and we must not destroy this bdi with inodes having off it.
    So just splice our entries to the default bdi since that one will
    always persist.

    Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
    ---
    mm/backing-dev.c | 14 +++++++++++++-
    1 files changed, 13 insertions(+), 1 deletions(-)

    diff --git a/mm/backing-dev.c b/mm/backing-dev.c
    index fd93566..3d3accb 100644
    --- a/mm/backing-dev.c
    +++ b/mm/backing-dev.c
    @@ -668,7 +668,19 @@ void bdi_destroy(struct backing_dev_info *bdi)
    {
    int i;

    - WARN_ON(bdi_has_dirty_io(bdi));
    + /*
    + * Splice our entries to the default_backing_dev_info, if this
    + * bdi disappears
    + */
    + if (bdi_has_dirty_io(bdi)) {
    + struct bdi_writeback *dst = &default_backing_dev_info.wb;
    +
    + spin_lock(&inode_lock);
    + list_splice(&bdi->wb.b_dirty, &dst->b_dirty);
    + list_splice(&bdi->wb.b_io, &dst->b_io);
    + list_splice(&bdi->wb.b_more_io, &dst->b_more_io);
    + spin_unlock(&inode_lock);
    + }

    bdi_unregister(bdi);

    --
    1.6.4.1.207.g68ea


    \
     
     \ /
      Last update: 2009-09-15 20:23    [W:0.020 / U:30.812 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site