This is my latest collection of patches to address the myriad of gfs2 recovery problems I've found. I'm not convinced we need all of these but I thought I'd send them anyway and get feedback
Some of these are just bugs and may be pushed separately. Bob Peterson (32): gfs2: Introduce concept of a pending withdraw gfs2: clear ail1 list when gfs2 withdraws gfs2: Rework how rgrp buffer_heads are managed gfs2: fix infinite loop in gfs2_ail1_flush on io error gfs2: log error reform gfs2: Only complain the first time an io error occurs in quota or log gfs2: Ignore dlm recovery requests if gfs2 is withdrawn gfs2: move check_journal_clean to util.c for future use gfs2: Allow some glocks to be used during withdraw gfs2: Don't loop forever in gfs2_freeze if withdrawn 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: fix infinite loop when checking ail item count before go_inval gfs2: Add verbose option to check_journal_clean gfs2: Abort gfs2_freeze if io error is seen gfs2: Issue revokes more intelligently gfs2: Prepare to withdraw as soon as an IO error occurs in log write gfs2: Check for log write errors before telling dlm to unlock gfs2: new slab for transactions gfs2: Close timing window with GLF_INVALIDATE_IN_PROGRESS gfs2: Do log_flush in gfs2_ail_empty_gl even if ail list is empty gfs2: Don't skip log flush if glock still has revokes gfs2: initialize tr_ail1_list when creating transactions gfs2: Withdraw in gfs2_ail1_flush if write_cache_pages returns error gfs2: drain the ail2 list after io errors gfs2: make gfs2_log_shutdown static gfs2: Eliminate GFS2_RDF_UPTODATE flag in favor of buffer existence gfs2: if finish_open returns error, clean up iopen glock mess gfs2: Don't demote a glock until its revokes are written gfs2: Do proper error checking for go_sync family of glops functions gfs2: fix glock reference problem in gfs2_trans_add_unrevoke fs/gfs2/aops.c | 4 +- fs/gfs2/file.c | 2 +- fs/gfs2/glock.c | 140 ++++++++++++++++++++++---- fs/gfs2/glops.c | 153 ++++++++++++++++++++++------ fs/gfs2/incore.h | 21 ++-- fs/gfs2/inode.c | 6 ++ fs/gfs2/lock_dlm.c | 52 ++++++++++ fs/gfs2/log.c | 231 +++++++++++++++++++++++++++++------------- fs/gfs2/log.h | 2 +- fs/gfs2/lops.c | 12 ++- fs/gfs2/main.c | 23 +++++ fs/gfs2/meta_io.c | 6 +- fs/gfs2/ops_fstype.c | 51 +--------- fs/gfs2/quota.c | 10 +- fs/gfs2/recovery.c | 5 + fs/gfs2/rgrp.c | 82 +++++++++------ fs/gfs2/rgrp.h | 1 - fs/gfs2/super.c | 97 ++++++++++++------ fs/gfs2/sys.c | 2 +- fs/gfs2/trans.c | 38 +++++-- fs/gfs2/trans.h | 1 + fs/gfs2/util.c | 235 +++++++++++++++++++++++++++++++++++++++++-- fs/gfs2/util.h | 16 +++ 23 files changed, 924 insertions(+), 266 deletions(-) -- 2.23.0