I consider this more of a preliminary "collection" of patches rather
than a "patch set" per se. In other words, most of these do not rely
upon the previous patches, although some do. Some of them may be removed
without a lot of difficulty if they are found to be problematic. I
thought about sending them out individually, but decided against it.

These patches address a bunch of problems related to journal replay
overwriting valid gfs2 metadata due to io errors, withdraws and such.
These seem to fix several metadata corruption problems I've been able
to reliably recreate lately with multi-node multi-file system recovery
tests.

I'm not convinced we need all these patches, but they seem to work well
when put together. I just wanted to throw them out here for review so
people could point out if anything doesn't make sense. In other words,
there are likely to be revisions.

Bob Peterson (9):
  gfs2: Introduce concept of a pending withdraw
  gfs2: Ignore recovery attempts if gfs2 has io error or is withdrawn
  gfs2: Empty the ail for the glock when rgrps are invalidated
  gfs2: Force withdraw to replay journals and wait for it to finish
  gfs2: Keep transactions on ail1 list until after issuing revokes
  gfs2: Make secondary withdrawers wait for first withdrawer
  gfs2: Check for log write errors and withdraw in rgrp_go_inval
  gfs2: Do log_flush in gfs2_ail_empty_gl even if ail list is empty
  dlm: recover slot regardless of whether we still have a connection

 fs/dlm/member.c      |  11 +--
 fs/gfs2/aops.c       |   4 +-
 fs/gfs2/file.c       |   2 +-
 fs/gfs2/glock.c      |  40 +++++++++--
 fs/gfs2/glock.h      |   1 +
 fs/gfs2/glops.c      |  90 ++++++++++++++++++++++--
 fs/gfs2/incore.h     |  10 +++
 fs/gfs2/lock_dlm.c   |  68 ++++++++++++++++++
 fs/gfs2/log.c        |  74 +++++++++++---------
 fs/gfs2/log.h        |   1 +
 fs/gfs2/meta_io.c    |   6 +-
 fs/gfs2/ops_fstype.c |  51 ++------------
 fs/gfs2/quota.c      |   2 +-
 fs/gfs2/super.c      |  30 ++++----
 fs/gfs2/super.h      |   1 +
 fs/gfs2/sys.c        |   2 +-
 fs/gfs2/util.c       | 160 ++++++++++++++++++++++++++++++++++++++++++-
 fs/gfs2/util.h       |  11 +++
 18 files changed, 443 insertions(+), 121 deletions(-)

-- 
2.20.1

Reply via email to