On Mon, 2009-05-18 at 14:19 +0200, Jens Axboe wrote: > Hi, > > This is the fourth version of this patchset. Chances since v3: > > - Dropped a prep patch, it has been included in mainline since. > > - Add a work-to-do list to the bdi. This is struct bdi_work. Each > wb thread will notice and execute work on bdi->work_list. The arguments > are which sb (or NULL for all) to flush and how many pages to flush. > > - Fix a bug where not all bdi's would end up on the bdi_list, so potentially > some data would not be flushed. > > - Make wb_kupdated() pass on wbc->older_than_this so we maintain the same > behaviour for kupdated flushes. > > - Have the wb thread flush first before sleeping, to avoid losing the > first flush on lazy register. > > - Rebase to newer kernels. Jens, Applied V4 to 2.6.30-rc6 and got some confliction reports. ----------patch-2---------- patching file fs/buffer.c patching file fs/fs-writeback.c patching file fs/ntfs/super.c patching file fs/sync.c patching file include/linux/backing-dev.h patching file include/linux/fs.h patching file include/linux/writeback.h patching file mm/backing-dev.c patching file mm/page-writeback.c Hunk #5 FAILED at 666. 1 out of 6 hunks FAILED -- saving rejects to file mm/page-writeback.c.rej patching file mm/vmscan.c ----------patch-3---------- patching file fs/fs-writeback.c patching file include/linux/writeback.h patching file mm/Makefile patching file mm/pdflush.c ----------patch-4---------- patching file fs/fs-writeback.c patching file include/linux/backing-dev.h patching file mm/backing-dev.c ----------patch-5---------- patching file fs/fs-writeback.c patching file include/linux/backing-dev.h patching file include/linux/fs.h patching file mm/backing-dev.c patching file mm/page-writeback.c Hunk #1 succeeded at 708 with fuzz 2 (offset 41 lines). Hunk #2 FAILED at 716. 1 out of 2 hunks FAILED -- saving rejects to file mm/page-writeback.c.rej Then, I manually fixed the conflictions, but compilation reports errors. Your patches seem not clean. CC fs/exec.o mm/page-writeback.c: In function 'background_writeout': mm/page-writeback.c:695: error: 'MAX_WRITEBACK_PAGES' undeclared (first use in this function) mm/page-writeback.c:695: error: (Each undeclared identifier is reported only once mm/page-writeback.c:695: error: for each function it appears in.) mm/page-writeback.c: In function 'wb_kupdate': mm/page-writeback.c:769: error: 'MAX_WRITEBACK_PAGES' undeclared (first use in this function) mm/page-writeback.c: In function 'wb_timer_fn': mm/page-writeback.c:802: error: implicit declaration of function 'pdflush_operation' make[1]: *** [mm/page-writeback.o] Error 1 make[1]: *** Waiting for unfinished jobs.... CC fs/pipe.o Yanmin > > - Little fixes here and there. > > So generally not a lot of changes, the major one is using the ->work_list > and getting rid of writeback_acquire()/writeback_release(). This fixes > the concern Jan Kara had about missing sync/WB_SYNC_ALL, if writeback > was already in progress. > > I've run a few benchmarks today: > > 1) Large file writes from a single process > 2) Random file writes from multiple (16) processes. -- 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