lkml.org 
[lkml]   [2009]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 10/11] writeback: splice dirty inode entries to default bdi on bdi_destroy()
    On Tue 15-09-09 20:16:56, Jens Axboe wrote:
    > 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.
    ^^^ hanging

    > So just splice our entries to the default bdi since that one will
    > always persist.
    BTW: Why can't we make sure all inodes on the BDI are clean when we
    destroy it? Common sence would suggest that we better should be able to do
    it :).
    Maybe it's because most users of private BDI do not call bdi_unregister
    but rather directly bdi_destroy? Is this correct behavior?

    Honza

    > 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
    >
    --
    Jan Kara <jack@suse.cz>
    SUSE Labs, CR


    \
     
     \ /
      Last update: 2009-09-16 15:15    [W:0.032 / U:30.176 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site