Skip to content

writeback fixes and cleanups for 2.6.40 (v4)

Wu Fengguang linux-fsdevel lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest18 patches 6 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/18writeback: introduce .tagged_writepages for the WB_SYNC_NONE sync stagefs/ext4/inode.c fs/fs-writeback.c include/linux/writeback.h +1 more+14 -120 replies
2/18writeback: update dirtied_when for synced inode to prevent livelockfs/fs-writeback.c+9 -00 replies
3/18writeback: introduce writeback_control.inodes_cleanedfs/fs-writeback.c include/linux/writeback.h+5 -00 replies
4/18writeback: try more writeback as long as something was writtenfs/fs-writeback.c+8 -80 replies
5/18writeback: the kupdate expire timestamp should be a moving targetfs/fs-writeback.c+6 -50 replies
6/18writeback: sync expired inodes first in background writebackfs/fs-writeback.c+15 -15 replies
7/18writeback: refill b_io iff emptyfs/fs-writeback.c+3 -20 replies
8/18writeback: split inode_wb_list_lock into bdi_writeback.list_lockfs/block_dev.c fs/fs-writeback.c fs/inode.c +5 more+85 -680 replies
9/18writeback: elevate queue_io() into wb_writeback()fs/fs-writeback.c+12 -170 replies
10/18writeback: avoid extra sync work at enqueue timefs/fs-writeback.c include/linux/writeback.h+3 -160 replies
11/18writeback: add bdi_dirty_limit() kernel-docmm/page-writeback.c+9 -20 replies
12/18writeback: skip balance_dirty_pages() for in-memory fsmm/page-writeback.c+4 -60 replies
13/18writeback: remove writeback_control.more_iofs/fs-writeback.c include/linux/writeback.h include/trace/events/ext4.h +1 more+5 -160 replies
14/18writeback: remove .nonblocking and .encountered_congestionfs/nfs/write.c fs/xfs/linux-2.6/xfs_aops.c include/linux/writeback.h +1 more+4 -90 replies
15/18writeback: trace event writeback_single_inodefs/fs-writeback.c include/trace/events/writeback.h+74 -00 replies
16/18writeback: trace event writeback_queue_iofs/fs-writeback.c include/trace/events/writeback.h+35 -40 replies
17/18writeback: make writeback_control.nr_to_write straightfs/btrfs/extent_io.c fs/fs-writeback.c include/linux/writeback.h +3 more+147 -1250 replies
18/18writeback: rearrange the wb_writeback() loopfs/fs-writeback.c+31 -270 replies

Reviews trailers per patch

14 of 18 patches have a Reviewed-by or Acked-by.

PatchJan KaraMel GormanRik van RielPeter ZijlstraMinchan KimChristoph HellwigDave Chinner
1/18A-b
2/18R-b
3/18A-b A-b
4/18A-b
5/18A-b A-b
6/18A-b A-b A-b
7/18A-b
8/18
9/18A-b
10/18A-b
11/18A-b A-b
12/18A-b A-b R-b
13/18A-b A-b R-b
14/18R-b Proposed-by
15/18
16/18
17/18A-b Proposed-by
18/18Proposed-by

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 7 reviewers.

Read the v1 thread

Cover letter [PATCH 00/18] writeback fixes and cleanups for 2.6.40 (v4)

Andrew,

The first 10 patches are already in -mm tree, with updates:

- remove "writeback: pass writeback_control down to move_expired_inodes()", and resolve the resulting merge conflicts in other patches.
- move ahead the sync livelock prevention patches (01, 02) so that (04) won't livelock sync
- merge the three -mm fixes to (08)
- fixed changelog of (01)
- rename .for_sync to .tagged_writepages

[PATCH 01/18] writeback: introduce .tagged_writepages for the WB_SYNC_NONE sync stage [PATCH 02/18] writeback: update dirtied_when for synced inode to prevent livelock [PATCH 03/18] writeback: introduce writeback_control.inodes_cleaned [PATCH 04/18] writeback: try more writeback as long as something was written [PATCH 05/18] writeback: the kupdate expire timestamp should be a moving target [PATCH 06/18] writeback: sync expired inodes first in background writeback [PATCH 07/18] writeback: refill b_io iff empty
[PATCH 08/18] writeback: split inode_wb_list_lock into bdi_writeback.list_lock [PATCH 09/18] writeback: elevate queue_io() into wb_writeback()
[PATCH 10/18] writeback: avoid extra sync work at enqueue time

The following 6 patches are trivial and safe

[PATCH 11/18] writeback: add bdi_dirty_limit() kernel-doc [PATCH 12/18] writeback: skip balance_dirty_pages() for in-memory fs [PATCH 13/18] writeback: remove writeback_control.more_io [PATCH 14/18] writeback: remove .nonblocking and .encountered_congestion [PATCH 15/18] writeback: trace event writeback_single_inode [PATCH 16/18] writeback: trace event writeback_queue_io

Patch 17 is a bit more complex

[PATCH 17/18] writeback: make writeback_control.nr_to_write straight [PATCH 18/18] writeback: rearrange the wb_writeback() loop

Thanks to Jan and Dave for the careful reviews!

The patches are git pullable from

git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback.git fs-writeback

 fs/block_dev.c                   |   16 +-
 fs/btrfs/extent_io.c             |    2 -
 fs/ext4/inode.c                  |    4 +-
 fs/fs-writeback.c                |  411 +++++++++++++++++++++-----------------
 fs/inode.c                       |    5 +-
 fs/nfs/write.c                   |    3 +-
 fs/xfs/linux-2.6/xfs_aops.c      |    2 +-
 include/linux/backing-dev.h      |    2 +
 include/linux/writeback.h        |   14 +-
 include/trace/events/btrfs.h     |    6 +-
 include/trace/events/ext4.h      |    6 +-
 include/trace/events/writeback.h |  137 ++++++++++++--
 mm/backing-dev.c                 |   30 ++-
 mm/filemap.c                     |    6 +-
 mm/page-writeback.c              |   42 ++--
 mm/rmap.c                        |    4 +-
 16 files changed, 420 insertions(+), 270 deletions(-)

Thanks,
Fengguang