Re: [PATCH 1/3 v2] mm: Stop background writeback if there is other work queued for the thread

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Aug 08, 2010 at 12:12:30PM +0800, Dave Chinner wrote:
> On Thu, Aug 05, 2010 at 04:45:35PM -0700, Andrew Morton wrote:
> > On Thu,  5 Aug 2010 20:53:17 +0200
> > Jan Kara <jack@xxxxxxx> wrote:
> > > ---
> > >  fs/fs-writeback.c |    8 ++++++++
> > >  1 files changed, 8 insertions(+), 0 deletions(-)
> > > 
> > > diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
> > > index d5be169..542471e 100644
> > > --- a/fs/fs-writeback.c
> > > +++ b/fs/fs-writeback.c
> > > @@ -633,6 +633,14 @@ static long wb_writeback(struct bdi_writeback *wb,
> > >  			break;
> > >  
> > >  		/*
> > > +		 * Background writeout and kupdate-style writeback are
> > > +		 * easily livelockable. Stop them if there is other work
> > > +		 * to do so that e.g. sync can proceed.
> > > +		 */
> > > +		if ((work->for_background || work->for_kupdate) &&
> > > +		    !list_empty(&wb->bdi->work_list))
> > > +			break;
> > > +		/*
> > 
> > So what happens if an application sits in a loop doing write&fsync to a
> > file?  The vm's call for help gets ignored and your data doesn't get
> > written back for three days??
> 
> To avoid the possibility of any such occurrence, perhaps requeuing
> the work rather than cancelling it would be better? i.e. stop, put
> it behind whatever work just came in and so when the new work
> completes, we restart the background/expiry based writeback?

That would be better. Ie. add a flag BDI_background_writeback to
indicate the background work should be started after finishing with
the queued works. bdi_start_background_writeback() can be modified to
simply set the bit and wake up the flusher thread.

Thanks,
Fengguang
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux