75be73a824
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> -- |
||
---|---|---|
.. | ||
locking | ||
acl.c | ||
acl.h | ||
bmap.c | ||
bmap.h | ||
daemon.c | ||
daemon.h | ||
dir.c | ||
dir.h | ||
eaops.c | ||
eaops.h | ||
eattr.c | ||
eattr.h | ||
gfs2.h | ||
glock.c | ||
glock.h | ||
glops.c | ||
glops.h | ||
incore.h | ||
inode.c | ||
inode.h | ||
Kconfig | ||
lm.c | ||
lm.h | ||
locking.c | ||
log.c | ||
log.h | ||
lops.c | ||
lops.h | ||
main.c | ||
Makefile | ||
meta_io.c | ||
meta_io.h | ||
mount.c | ||
mount.h | ||
ops_address.c | ||
ops_address.h | ||
ops_dentry.c | ||
ops_dentry.h | ||
ops_export.c | ||
ops_file.c | ||
ops_file.h | ||
ops_fstype.c | ||
ops_fstype.h | ||
ops_inode.c | ||
ops_inode.h | ||
ops_super.c | ||
ops_super.h | ||
ops_vm.c | ||
ops_vm.h | ||
quota.c | ||
quota.h | ||
recovery.c | ||
recovery.h | ||
rgrp.c | ||
rgrp.h | ||
super.c | ||
super.h | ||
sys.c | ||
sys.h | ||
trans.c | ||
trans.h | ||
util.c | ||
util.h |