[Cluster-devel] [PATCH 00/10] GFS2: Pre-pull patch posting (merge window)

Bob Peterson rpeterso at redhat.com
Fri Jul 22 17:04:30 UTC 2016


Hi,

Since I'll be on vacation / holiday all next week, I'm doing the merge
window processing for GFS2 early this time, before the merge window has
been officially opened: I'd rather post the patches a little early than
be late and have Linus be unhappy with me as a maintainer.

We've got ten patches this time, half of which are related to a plethora
of nasty outcomes when inodes are transitioned from the unlinked state
to the free state. Small file systems are particularly vulnerable to these
problems, and it can manifest as mainly hangs, but also file system
corruption. The patches have been tested for literally many weeks, with a
very gruelling test, so I have a high level of confidence.

- Andreas Gruenbacher wrote a series of 5 patches for various lockups
  during the transition of inodes from unlinked to free. The main patch
  is titled "Fix gfs2_lookup_by_inum lock inversion" and the other 4 are
  support and cleanup patches related to that.
- Ben Marzinski contributed 2 patches with regard to a recreatable
  problem when gfs2 tries to write a page to a file that is being
  truncated, resulting in a BUG() in gfs2_remove_from_journal.
  Note that Ben had to export vfs function __block_write_full_page to get
  this to work properly. It's been posted a long time and he talked to
  various VFS people about it, and nobody seemed to mind.
- I contributed 3 patches. (1) The first one fixes a memory corruptor:
  a race in which one process can overwrite the gl_object pointer set by
  another process, causing kernel panic and other symptoms. (2) The second
  patch fixes another race that resulted in a false-positive BUG_ON. This
  occurred when resource group reservations were freed by one process
  while another process was trying to grab a new reservation in the same
  resource group. (3) The third patch fixes a problem with doing journal
  replay when the journals are not all the same size.

I apologize that the last patch, "GFS2: Fix gfs2_replay_incr_blk for
multiple journal sizes" hasn't had much bake time. The patch is
straightforward, reviewed, and well tested with a reliable recreation
scenario. Since the bug prevents users from mounting their GFS2 file
system, I wanted to get it in as soon as possible. I felt that the need
outweighed other concerns.

Since I'll be on vacation next week, Andreas Gruenbacher can make changes
to the linux-gfs2 repo if need be.

Regards,

Bob Peterson
---
Andreas Gruenbacher (5):
  gfs2: Initialize iopen glock holder for new inodes
  gfs2: Fix gfs2_lookup_by_inum lock inversion
  gfs2: Get rid of gfs2_ilookup
  gfs2: Large-filesystem fix for 32-bit systems
  gfs2: Lock holder cleanup

Benjamin Marzinski (2):
  fs: export __block_write_full_page
  gfs2: writeout truncated pages

Bob Peterson (3):
  GFS2: don't set rgrp gl_object until it's inserted into rgrp tree
  GFS2: Check rs_free with rd_rsspin protection
  GFS2: Fix gfs2_replay_incr_blk for multiple journal sizes

 fs/buffer.c                 |   3 +-
 fs/gfs2/aops.c              |  49 +++++++++++------
 fs/gfs2/dentry.c            |   2 +-
 fs/gfs2/dir.c               |   3 +-
 fs/gfs2/export.c            |  11 ----
 fs/gfs2/file.c              |   2 +-
 fs/gfs2/glock.c             |  11 +---
 fs/gfs2/glock.h             |  10 ++++
 fs/gfs2/inode.c             | 128 +++++++++++++++++++++++++++++---------------
 fs/gfs2/inode.h             |   4 +-
 fs/gfs2/lops.c              |  11 ++--
 fs/gfs2/main.c              |   1 +
 fs/gfs2/ops_fstype.c        |   3 +-
 fs/gfs2/quota.c             |   2 +-
 fs/gfs2/recovery.c          |   6 +--
 fs/gfs2/recovery.h          |   4 +-
 fs/gfs2/rgrp.c              |  21 ++++----
 fs/gfs2/super.c             |  24 +++++----
 include/linux/buffer_head.h |   3 ++
 19 files changed, 182 insertions(+), 116 deletions(-)

-- 
2.5.5




More information about the Cluster-devel mailing list