Re: [PATCH 04/12] writeback: switch to per-bdi threads forflushing data

From: Jens Axboe
Date: Tue May 26 2009 - 04:57:00 EST


On Mon, May 25 2009, Jan Kara wrote:
> > +static void bdi_kupdated(struct backing_dev_info *bdi)
> > +{
> > + unsigned long oldest_jif;
> > + long nr_to_write;
> > + struct writeback_control wbc = {
> > + .bdi = bdi,
> > + .sync_mode = WB_SYNC_NONE,
> > + .older_than_this = &oldest_jif,
> > + .nr_to_write = 0,
> > + .for_kupdate = 1,
> > + .range_cyclic = 1,
> > + };
> > +
> > + sync_supers();
> Hmm, so each BDI flusher thread is going to sync all the superblocks?
> Isn't there a better way? I suppose we *should* be able to somehow go
> from a BDI to a superblock (or maybe a list of those) so that we can write
> per-fs metadata not bound to inodes.

I just moved the sync_supers() to the bdi_forker_task(). That makes it
global at the same interval of wakeups, instead of doing in the bdi
threads. It would be nice to sync locally instead, but that's something
that can wait for later (if ever).

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/