This is a RHEL7 patchset to address bz 1511599.

The first patch in this series is just an instrumentation patch to assess
the impact of the subsequent patches on the ordered write list. It is not
intended to be merged into the code base.

The second patch adds a function gfs2_ordered_shrink() which attempts to
remove inodes from the ordered list that don't have any pages in need of
writing. This function is called from gfs2_sync_fs().

The third patch does a few things:
- Call gfs2_ordered_write() in case we didn't trim the ordered write list
  in gfs2_ordered_shrink().
- Have gfs2_ordered_write() trim the list of inodes that don't have pages
  that need to be written. Should happen every time on a log flush when
  gfs2_log_flush() calls gfs2_ordered_write()
- Call gfs2_ordered_del_inode() from gfs2_fsync()

Other ideas:
- Change gfs2_ordered_write() so that it can work on a subset of the
  ordered list. That way, we can call it to write a percentage (or N
  inodes), wait for the writes to complete and then remove those inodes
  from the list.

Abhi Das (3):
  gfs2: ordered list instrumentation
  gfs2: try to free empty mapping inodes from ordered list
  gfs2: ordered write list addendum patch

 fs/gfs2/bmap.c       |  2 +-
 fs/gfs2/file.c       |  5 ++++-
 fs/gfs2/incore.h     | 13 +++++++++++++
 fs/gfs2/log.c        | 36 ++++++++++++++++++++++++++++++++----
 fs/gfs2/log.h        | 38 ++++++++++++++++++++++++++++++++++++--
 fs/gfs2/ops_fstype.c |  1 +
 fs/gfs2/quota.c      |  8 ++++++++
 fs/gfs2/super.c      |  6 ++++--
 8 files changed, 99 insertions(+), 10 deletions(-)

-- 
2.4.11

Reply via email to