linux/fs/gfs2
Bob Peterson 75be73a824 [GFS2] Ensure journal file cache is flushed after recovery
This is for bugzilla bug #248176: GFS2: invalid metadata block

Patches 1 thru 3 were accepted upstream, but there were problems
with 4 and 5.  Those issues have been resolved and now the recovery
tests are passing without errors.  This code has gone through
41 * 3 successful gfs2 recovery tests before it hit an
unrelated (openais) problem.  I'm continuing to test it.

This is a complete rewrite of patch 5 for bug #248176, written by
Steve Whitehouse.  This is referred to in the bugzilla record as
"new 6" and "a different solution".

The problem was that the journal inodes, although protected by
a glock, were not synched with the other nodes because they don't
use the inode glock synch operations (i.e. no "glops" were defined).
Therefore, journal recovery on a journal-recovering node were causing
the blocks to get out of sync with the node that was actually trying
to use that journal as it comes back up from a reboot.

There are two possible solutions: (1) To make the journals use the
normal inode glock sync operations, or (2) To make the journal
operations take effect immediately (i.e. no caching).  Although
option 1 works, it turns out to be a lot more code.  Steve opted
for option 2, which is much simpler and therefore less prone to
regression errors.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

--
2007-10-10 08:55:12 +01:00
..
locking [GFS2] use an temp variable to reduce a spin_unlock 2007-10-10 08:54:58 +01:00
acl.c Introduce is_owner_or_cap() to wrap CAP_FOWNER use with fsuid check 2007-07-17 12:00:03 -07:00
acl.h [GFS2] Remove gfs2_check_acl() 2006-11-30 10:37:32 -05:00
bmap.c [GFS2] Fix gfs2_block_truncate_page err return 2007-07-09 08:23:54 +01:00
bmap.h [GFS2] Fix bmap to map extents properly 2006-10-20 09:13:40 -04:00
daemon.c [GFS2] Reduce number of gfs2_scand processes to one 2007-10-10 08:55:08 +01:00
daemon.h [GFS2] Reduce number of gfs2_scand processes to one 2007-10-10 08:55:08 +01:00
dir.c [GFS2] Obtaining no_formal_ino from directory entry 2007-07-09 08:24:08 +01:00
dir.h [GFS2] Clean up inode number handling 2007-07-09 08:22:24 +01:00
eaops.c [GFS2] mark struct *_operations const 2007-10-10 08:55:03 +01:00
eaops.h [GFS2] mark struct *_operations const 2007-10-10 08:55:03 +01:00
eattr.c [GFS2] Add nanosecond timestamp feature 2007-07-09 08:23:12 +01:00
eattr.h [GFS2] gfs2 misc endianness annotations 2006-11-30 10:33:46 -05:00
gfs2.h [GFS2] Update copyright, tidy up incore.h 2006-09-01 11:05:15 -04:00
glock.c [GFS2] Reduce number of gfs2_scand processes to one 2007-10-10 08:55:08 +01:00
glock.h [GFS2] Reduce number of gfs2_scand processes to one 2007-10-10 08:55:08 +01:00
glops.c [GFS2] flush the glock completely in inode_go_sync 2007-07-09 08:22:07 +01:00
glops.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
incore.h [GFS2] Reduce number of gfs2_scand processes to one 2007-10-10 08:55:08 +01:00
inode.c [GFS2] Remove i_mode passing from NFS File Handle 2007-07-09 08:24:11 +01:00
inode.h [GFS2] Remove i_mode passing from NFS File Handle 2007-07-09 08:24:11 +01:00
Kconfig [DLM/GFS2] indent help text 2007-02-05 13:38:20 -05:00
lm.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
lm.h [GFS2] Use void * instead of typedef for locking module interface 2006-09-08 10:17:58 -04:00
locking.c [GFS2] Export lm_interface to kernel headers 2006-09-19 08:45:18 -04:00
log.c [GFS2] Detach buf data during in-place writeback 2007-10-10 08:55:01 +01:00
log.h [GFS2] Move gfs2_meta_syncfs() into log.c 2006-11-30 10:36:45 -05:00
lops.c [GFS2] Move some code inside the log lock 2007-10-10 08:54:51 +01:00
lops.h [GFS2] assertion failure after writing to journaled file, umount 2007-07-09 08:23:47 +01:00
main.c [GFS2] Reduce number of gfs2_scand processes to one 2007-10-10 08:55:08 +01:00
Makefile [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
meta_io.c [GFS2] assertion failure after writing to journaled file, umount 2007-07-09 08:23:47 +01:00
meta_io.h [GFS2] Clean up inode number handling 2007-07-09 08:22:24 +01:00
mount.c [GFS2] Revert remounting w/o acl option leaves acls enabled 2007-08-14 10:34:40 +01:00
mount.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_address.c [GFS2] Fix incorrect error path in prepare_write() 2007-08-14 10:33:44 +01:00
ops_address.h [GFS2] Addendum patch 2 for gfs2_grow 2007-07-09 08:22:19 +01:00
ops_dentry.c [GFS2] Clean up inode number handling 2007-07-09 08:22:24 +01:00
ops_dentry.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_export.c knfsd: exportfs: add exportfs.h header 2007-07-17 10:23:06 -07:00
ops_file.c [GFS2] Fix setting of inherit jdata attr 2007-08-14 10:34:11 +01:00
ops_file.h [GFS2] Only set inode flags when required 2006-11-30 10:34:45 -05:00
ops_fstype.c [GFS2] Ensure journal file cache is flushed after recovery 2007-10-10 08:55:12 +01:00
ops_fstype.h [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
ops_inode.c [GFS2] GFS2 not checking pointer on create when running under nfsd 2007-10-10 08:54:46 +01:00
ops_inode.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
ops_super.c [GFS2] Reduce number of gfs2_scand processes to one 2007-10-10 08:55:08 +01:00
ops_super.h [PATCH] Mark struct super_operations const 2007-02-12 09:48:47 -08:00
ops_vm.c mm: fault feedback #2 2007-07-19 10:04:41 -07:00
ops_vm.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
quota.c [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
quota.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
recovery.c [GFS2] Ensure journal file cache is flushed after recovery 2007-10-10 08:55:12 +01:00
recovery.h [GFS2] split and annotate gfs2_log_head 2006-11-30 10:33:14 -05:00
rgrp.c [GFS2] invalid metadata block - REVISED 2007-10-10 08:55:10 +01:00
rgrp.h [GFS2] Addendum patch 2 for gfs2_grow 2007-07-09 08:22:19 +01:00
super.c [GFS2] Reduce number of gfs2_scand processes to one 2007-10-10 08:55:08 +01:00
super.h [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
sys.c [GFS2] Reduce number of gfs2_scand processes to one 2007-10-10 08:55:08 +01:00
sys.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
trans.c [GFS2] Export lm_interface to kernel headers 2006-09-19 08:45:18 -04:00
trans.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
util.c [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
util.h Merge master.kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw 2006-12-07 09:13:20 -08:00