From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Chinner Subject: Re: [PATCH 13/17] writeback: remove writeback_control.more_io Date: Fri, 13 May 2011 09:04:32 +1000 Message-ID: <20110512230432.GL19446@dastard> References: <20110512135706.937596128@intel.com> <20110512140032.289087832@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Andrew Morton , Jan Kara , Mel Gorman , Minchan Kim , Christoph Hellwig , linux-fsdevel@vger.kernel.org, LKML To: Wu Fengguang Return-path: Content-Disposition: inline In-Reply-To: <20110512140032.289087832@intel.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org On Thu, May 12, 2011 at 09:57:19PM +0800, Wu Fengguang wrote: > When wbc.more_io was first introduced, it indicates whether there are > at least one superblock whose s_more_io contains more IO work. Now with > the per-bdi writeback, it can be replaced with a simple b_more_io test. > > Acked-by: Jan Kara > Acked-by: Mel Gorman > CC: Minchan Kim > Signed-off-by: Wu Fengguang > --- > fs/fs-writeback.c | 9 ++------- > include/linux/writeback.h | 1 - > include/trace/events/ext4.h | 6 ++---- > include/trace/events/writeback.h | 5 +---- > 4 files changed, 5 insertions(+), 16 deletions(-) > > --- linux-next.orig/fs/fs-writeback.c 2011-05-05 23:30:30.000000000 +0800 > +++ linux-next/fs/fs-writeback.c 2011-05-05 23:30:33.000000000 +0800 > @@ -560,12 +560,8 @@ static int writeback_sb_inodes(struct su > iput(inode); > cond_resched(); > spin_lock(&wb->list_lock); > - if (wbc->nr_to_write <= 0) { > - wbc->more_io = 1; > + if (wbc->nr_to_write <= 0) > return 1; > - } > - if (!list_empty(&wb->b_more_io)) > - wbc->more_io = 1; > } > /* b_io is empty */ > return 1; > @@ -707,7 +703,6 @@ static long wb_writeback(struct bdi_writ > wbc.older_than_this = &oldest_jif; > } > > - wbc.more_io = 0; > wbc.nr_to_write = write_chunk; > wbc.pages_skipped = 0; > wbc.inodes_cleaned = 0; > @@ -755,7 +750,7 @@ retry: > /* > * No more inodes for IO, bail > */ > - if (!wbc.more_io) > + if (list_empty(&wb->b_more_io)) > break; We're not holding the wb->list_lock here, so we need to be careful here. I think this is safe given that there shuold only be one flusher thread operating on the list, but when we expand to multiple flusher threads per-bdi, this coul dbe a nasty landmine. A comment is probably in order explaining why this is safe to check unlocked right now... Cheers, Dave. -- Dave Chinner david@fromorbit.com