linux_dsm_epyc7002/fs/gfs2
Dave Chinner e5884636da GFS2: ordered writes are backwards
When we queue data buffers for ordered write, the buffers are added
to the head of the ordered write list. When the log needs to push
these buffers to disk, it also walks the list from the head. The
result is that the the ordered buffers are submitted to disk in
reverse order.

For large writes, this means that whenever the log flushes large
streams of reverse sequential order buffers are pushed down into the
block layers. The elevators don't handle this particularly well, so
IO rates tend to be significantly lower than if the IO was issued in
ascending block order.

Queue new ordered buffers to the tail of the ordered buffer list to
ensure that IO is dispatched in the order it was submitted. This
should significantly improve large sequential write speeds. On a
disk capable of 85MB/s, speeds increase from 50MB/s to 65MB/s for
noop and from 38MB/s to 50MB/s for cfq.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2010-03-01 14:08:26 +00:00
..
acl.c sanitize xattr handler prototypes 2009-12-16 12:16:49 -05:00
acl.h GFS2: Clean up ACLs 2009-12-03 11:47:35 +00:00
aops.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
bmap.c GFS2: Fix bmap allocation corner-case bug 2010-02-12 10:16:14 +00:00
bmap.h GFS2: Streamline alloc calculations for writes 2009-01-05 07:39:17 +00:00
dentry.c GFS2: free disk inode which is deleted by remote node -V2 2009-08-18 10:29:39 +01:00
dir.c GFS2: Remove dirent_first() function 2009-12-03 11:57:23 +00:00
dir.h GFS2: Fix bug in gfs2_lock_fs_check_clean() 2009-01-05 07:39:11 +00:00
export.c GFS2: Be extra careful about deallocating inodes 2009-09-08 18:00:30 +01:00
file.c GFS2: Ensure uptodate inode size when using O_APPEND 2010-01-08 13:42:27 +00:00
gfs2.h [GFS2] Remove remote lock dropping code 2008-06-27 09:39:44 +01:00
glock.c GFS2: Remove loopy umount code 2010-03-01 14:07:53 +00:00
glock.h GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
glops.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
glops.h GFS2: Add a "demote a glock" interface to sysfs 2009-03-24 11:21:22 +00:00
incore.h GFS2: Remove loopy umount code 2010-03-01 14:07:53 +00:00
inode.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
inode.h GFS2: Move gfs2_unlink_ok into ops_inode.c 2009-05-22 10:54:50 +01:00
Kconfig Revert "task_struct: make journal_info conditional" 2009-12-17 13:23:24 -08:00
lock_dlm.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
log.c GFS2: Tag all metadata with jid 2009-12-03 11:58:47 +00:00
log.h [GFS2] trivial sparse lock annotations 2008-06-27 09:39:31 +01:00
lops.c GFS2: ordered writes are backwards 2010-03-01 14:08:26 +00:00
lops.h [GFS2] Only do lo_incore_commit once 2008-03-31 10:39:54 +01:00
main.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
Makefile GFS2: Rename eattr.[ch] as xattr.[ch] 2009-08-26 18:51:04 +01:00
meta_io.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
meta_io.h GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
ops_fstype.c GFS2: Remove loopy umount code 2010-03-01 14:07:53 +00:00
ops_inode.c GFS2: Fix refcnt leak on gfs2_follow_link() error path 2010-01-12 09:30:15 +00:00
quota.c GFS2: Improve statfs and quota usability 2009-12-03 11:55:17 +00:00
quota.h GFS2: Improve statfs and quota usability 2009-12-03 11:55:17 +00:00
recovery.c GFS2: Tag all metadata with jid 2009-12-03 11:58:47 +00:00
recovery.h GFS2: Umount recovery race fix 2009-05-19 10:01:18 +01:00
rgrp.c GFS2: Use GFP_NOFS for alloc structure 2010-02-01 10:01:34 +00:00
rgrp.h GFS2: Be extra careful about deallocating inodes 2009-09-08 18:00:30 +01:00
super.c GFS2: Remove loopy umount code 2010-03-01 14:07:53 +00:00
super.h GFS2: Alter arguments of gfs2_quota/statfs_sync 2009-12-03 11:48:54 +00:00
sys.c GFS2: Remove loopy umount code 2010-03-01 14:07:53 +00:00
sys.h GFS2: Remove ancient, unused code 2009-01-05 07:39:13 +00:00
trace_gfs2.h tracing/events: Move TRACE_SYSTEM outside of include guard 2009-07-13 10:59:55 +02:00
trans.c GFS2: Move journal live test at transaction start 2009-05-13 10:56:52 +01:00
trans.h [GFS2] Update gfs2_trans_add_unrevoke to accept extents 2008-03-31 10:40:42 +01:00
util.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
util.h GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
xattr.c GFS2: Fix gfs2_xattr_acl_chmod() 2010-01-08 13:42:59 +00:00
xattr.h sanitize xattr handler prototypes 2009-12-16 12:16:49 -05:00