1
0
Fork 0
alistair23-linux/fs/gfs2
Steven Whitehouse 0ab7d13fcb GFS2: Tag all metadata with jid
There are two spare field in the header common to all GFS2
metadata. One is just the right size to fit a journal id
in it, and this patch updates the journal code so that each
time a metadata block is modified, we tag it with the journal
id of the node which is performing the modification.

The reason for this is that it should make it much easier to
debug issues which arise if we can tell which node was the
last to modify a particular metadata block.

Since the field is updated before the block is written into
the journal, each journal should only contain metadata which
is tagged with its own journal id. The one exception to this
is the journal header block, which might have a different node's
id in it, if that journal was recovered by another node in the
cluster.

Thus each journal will contain a record of which nodes recovered
it, via the journal header.

The other field in the metadata header could potentially be
used to hold information about what kind of operation was
performed, but for the time being we just zero it on each
transaction so that if we use it for that in future, we'll
know that the information (where it exists) is reliable.

I did consider using the other field to hold the journal
sequence number, however since in GFS2's journaling we write
the modified data into the journal and not the original
data, this gives no information as to what action caused the
modification, so I think we can probably come up with a better
use for those 64 bits in the future.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2009-12-03 11:58:47 +00:00
..
Kconfig GFS2: Hook gfs2_quota_sync into VFS via gfs2_quotactl_ops 2009-12-03 11:49:09 +00:00
Makefile GFS2: Rename eattr.[ch] as xattr.[ch] 2009-08-26 18:51:04 +01:00
acl.c GFS2: Add cached ACLs support 2009-12-03 11:47:51 +00:00
acl.h GFS2: Clean up ACLs 2009-12-03 11:47:35 +00:00
aops.c HWPOISON: Enable .remove_error_page for migration aware file systems 2009-09-16 11:50:16 +02:00
bmap.c GFS2: Add tracepoints 2009-06-12 08:49:20 +01:00
bmap.h GFS2: Streamline alloc calculations for writes 2009-01-05 07:39:17 +00:00
dentry.c GFS2: free disk inode which is deleted by remote node -V2 2009-08-18 10:29:39 +01:00
dir.c GFS2: Remove dirent_first() function 2009-12-03 11:57:23 +00:00
dir.h GFS2: Fix bug in gfs2_lock_fs_check_clean() 2009-01-05 07:39:11 +00:00
export.c GFS2: Be extra careful about deallocating inodes 2009-09-08 18:00:30 +01:00
file.c const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
gfs2.h [GFS2] Remove remote lock dropping code 2008-06-27 09:39:44 +01:00
glock.c GFS2: Fix potential race in glock code 2009-12-03 11:42:25 +00:00
glock.h GFS2: Remove obsolete code in quota.c 2009-12-03 11:49:30 +00:00
glops.c GFS2: Use forget_all_cached_acls() 2009-12-03 11:45:37 +00:00
glops.h GFS2: Add a "demote a glock" interface to sysfs 2009-03-24 11:21:22 +00:00
incore.h GFS2: add barrier/nobarrier mount options 2009-12-03 11:55:54 +00:00
inode.c GFS2: Tag all metadata with jid 2009-12-03 11:58:47 +00:00
inode.h GFS2: Move gfs2_unlink_ok into ops_inode.c 2009-05-22 10:54:50 +01:00
lock_dlm.c GFS2: Fix locking bug in failed shared to exclusive conversion 2009-03-24 11:21:26 +00:00
log.c GFS2: Tag all metadata with jid 2009-12-03 11:58:47 +00:00
log.h [GFS2] trivial sparse lock annotations 2008-06-27 09:39:31 +01:00
lops.c GFS2: Tag all metadata with jid 2009-12-03 11:58:47 +00:00
lops.h [GFS2] Only do lo_incore_commit once 2008-03-31 10:39:54 +01:00
main.c SLOW_WORK: Wait for outstanding work items belonging to a module to clear 2009-11-19 18:10:23 +00:00
meta_io.c GFS2: Clean up some file names 2009-05-22 10:01:55 +01:00
meta_io.h GFS2: Clean up of glops.c 2009-03-24 11:21:27 +00:00
ops_fstype.c GFS2: add barrier/nobarrier mount options 2009-12-03 11:55:54 +00:00
ops_inode.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
quota.c GFS2: Improve statfs and quota usability 2009-12-03 11:55:17 +00:00
quota.h GFS2: Improve statfs and quota usability 2009-12-03 11:55:17 +00:00
recovery.c GFS2: Tag all metadata with jid 2009-12-03 11:58:47 +00:00
recovery.h GFS2: Umount recovery race fix 2009-05-19 10:01:18 +01:00
rgrp.c GFS2: Locking order fix in gfs2_check_blk_state 2009-12-03 11:57:41 +00:00
rgrp.h GFS2: Be extra careful about deallocating inodes 2009-09-08 18:00:30 +01:00
super.c GFS2: Display nobarrier option in /proc/mounts 2009-12-03 11:57:05 +00:00
super.h GFS2: Alter arguments of gfs2_quota/statfs_sync 2009-12-03 11:48:54 +00:00
sys.c GFS2: Add proper error reporting to quota sync via sysfs 2009-12-03 11:50:03 +00:00
sys.h GFS2: Remove ancient, unused code 2009-01-05 07:39:13 +00:00
trace_gfs2.h tracing/events: Move TRACE_SYSTEM outside of include guard 2009-07-13 10:59:55 +02:00
trans.c GFS2: Move journal live test at transaction start 2009-05-13 10:56:52 +01:00
trans.h [GFS2] Update gfs2_trans_add_unrevoke to accept extents 2008-03-31 10:40:42 +01:00
util.c GFS2: Add "-o errors=panic|withdraw" mount options 2009-08-24 10:44:18 +01:00
util.h GFS2: Clean up & move gfs2_quotad 2009-01-05 07:39:05 +00:00
xattr.c GFS2: Clean up ACLs 2009-12-03 11:47:35 +00:00
xattr.h GFS2: Clean up ACLs 2009-12-03 11:47:35 +00:00