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