This is a collection of patches I've been using to address the myriad of recovery problems I've found. I'm still finding them, so the battle is not won yet. I'm not convinced we need all of these but I thought I'd send them anyway and get feedback. Previously I sent out a version of the patch "gfs2: Force withdraw to replay journals and wait for it to finish" that was too big and complex. So I broke it up into four patches, starting with "move check_journal_clean to util.c for future use". So those four need to be a set. There aren't many other dependencies between patches, so the others could probably be taken or rejected individually.
Bob Peterson (19): gfs2: log error reform gfs2: Introduce concept of a pending withdraw gfs2: Ignore recovery attempts if gfs2 has io error or is withdrawn gfs2: move check_journal_clean to util.c for future use gfs2: Allow some glocks to be used during withdraw gfs2: Make secondary withdrawers wait for first withdrawer gfs2: Don't write log headers after file system withdraw gfs2: Force withdraw to replay journals and wait for it to finish gfs2: Add verbose option to check_journal_clean gfs2: Check for log write errors before telling dlm to unlock gfs2: Do log_flush in gfs2_ail_empty_gl even if ail list is empty gfs2: If the journal isn't live ignore log flushes gfs2: Issue revokes more intelligently gfs2: Warn when a journal replay overwrites a rgrp with buffers gfs2: log which portion of the journal is replayed gfs2: Only remove revokes that we've submitted gfs2: eliminate tr_num_revoke_rm gfs2: don't call go_unlock unless demote is close at hand gfs2: clean_journal was setting sd_log_flush_head replaying other journals fs/gfs2/aops.c | 4 +- fs/gfs2/file.c | 2 +- fs/gfs2/glock.c | 48 ++++++++++-- fs/gfs2/glock.h | 1 + fs/gfs2/glops.c | 88 ++++++++++++++++++++- fs/gfs2/incore.h | 18 ++++- fs/gfs2/lock_dlm.c | 68 ++++++++++++++++ fs/gfs2/log.c | 101 +++++++++++------------- fs/gfs2/log.h | 1 + fs/gfs2/lops.c | 42 ++++++++-- fs/gfs2/meta_io.c | 6 +- fs/gfs2/ops_fstype.c | 52 ++---------- fs/gfs2/quota.c | 8 +- fs/gfs2/recovery.c | 9 ++- fs/gfs2/rgrp.c | 8 +- fs/gfs2/rgrp.h | 2 +- fs/gfs2/super.c | 30 ++++--- fs/gfs2/super.h | 1 + fs/gfs2/sys.c | 2 +- fs/gfs2/trans.c | 6 +- fs/gfs2/util.c | 183 ++++++++++++++++++++++++++++++++++++++++++- fs/gfs2/util.h | 11 +++ 22 files changed, 528 insertions(+), 163 deletions(-) -- 2.20.1