GFS2: Use ->writepages for ordered writes
authorSteven Whitehouse <swhiteho@redhat.com>
Mon, 28 Jan 2013 09:30:07 +0000 (09:30 +0000)
committerSteven Whitehouse <swhiteho@redhat.com>
Tue, 29 Jan 2013 10:29:17 +0000 (10:29 +0000)
commit4513899092b3254b3539f92a65d2839afa1d50f6
tree1080b7adfac648dacd2d4aa70643a6a456284492
parentd564053f074634e7a966359dc97d26900fa5f52d
GFS2: Use ->writepages for ordered writes

Instead of using a list of buffers to write ahead of the journal
flush, this now uses a list of inodes and calls ->writepages
via filemap_fdatawrite() in order to achieve the same thing. For
most use cases this results in a shorter ordered write list,
as well as much larger i/os being issued.

The ordered write list is sorted by inode number before writing
in order to retain the disk block ordering between inodes as
per the previous code.

The previous ordered write code used to conflict in its assumptions
about how to write out the disk blocks with mpage_writepages()
so that with this updated version we can also use mpage_writepages()
for GFS2's ordered write, writepages implementation. So we will
also send larger i/os from writeback too.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/aops.c
fs/gfs2/bmap.c
fs/gfs2/incore.h
fs/gfs2/log.c
fs/gfs2/log.h
fs/gfs2/ops_fstype.c
fs/gfs2/super.c
fs/gfs2/trans.c