linux/fs/gfs2
Steven Whitehouse 009d851837 GFS2: Metadata address space clean up
Since the start of GFS2, an "extra" inode has been used to store
the metadata belonging to each inode. The only reason for using
this inode was to have an extra address space, the other fields
were unused. This means that the memory usage was rather inefficient.

The reason for keeping each inode's metadata in a separate address
space is that when glocks are requested on remote nodes, we need to
be able to efficiently locate the data and metadata which relating
to that glock (inode) in order to sync or sync and invalidate it
(depending on the remotely requested lock mode).

This patch adds a new type of glock, which has in addition to
its normal fields, has an address space. This applies to all
inode and rgrp glocks (but to no other glock types which remain
as before). As a result, we no longer need to have the second
inode.

This results in three major improvements:
 1. A saving of approx 25% of memory used in caching inodes
 2. A removal of the circular dependency between inodes and glocks
 3. No confusion between "normal" and "metadata" inodes in super.c

Although the first of these is the more immediately apparent, the
second is just as important as it now enables a number of clean
ups at umount time. Those will be the subject of future patches.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2010-03-01 14:07:37 +00:00
..
acl.c sanitize xattr handler prototypes 2009-12-16 12:16:49 -05:00
acl.h GFS2: Clean up ACLs 2009-12-03 11:47:35 +00:00
aops.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
bmap.c GFS2: Fix bmap allocation corner-case bug 2010-02-12 10:16:14 +00: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 GFS2: Ensure uptodate inode size when using O_APPEND 2010-01-08 13:42:27 +00:00
gfs2.h [GFS2] Remove remote lock dropping code 2008-06-27 09:39:44 +01:00
glock.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
glock.h GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
glops.c GFS2: Metadata address space clean up 2010-03-01 14:07: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: Metadata address space clean up 2010-03-01 14:07:37 +00:00
inode.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
inode.h GFS2: Move gfs2_unlink_ok into ops_inode.c 2009-05-22 10:54:50 +01:00
Kconfig Revert "task_struct: make journal_info conditional" 2009-12-17 13:23:24 -08:00
lock_dlm.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +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 GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
Makefile GFS2: Rename eattr.[ch] as xattr.[ch] 2009-08-26 18:51:04 +01:00
meta_io.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
meta_io.h GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
ops_fstype.c GFS2: Fix error code 2010-02-12 10:15:51 +00:00
ops_inode.c GFS2: Fix refcnt leak on gfs2_follow_link() error path 2010-01-12 09:30:15 +00: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: Use GFP_NOFS for alloc structure 2010-02-01 10:01:34 +00:00
rgrp.h GFS2: Be extra careful about deallocating inodes 2009-09-08 18:00:30 +01:00
super.c GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
super.h GFS2: Alter arguments of gfs2_quota/statfs_sync 2009-12-03 11:48:54 +00:00
sys.c fs/gfs2/sys.c: use %pUB to print UUIDs 2009-12-15 08:53:33 -08: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: Metadata address space clean up 2010-03-01 14:07:37 +00:00
util.h GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
xattr.c GFS2: Fix gfs2_xattr_acl_chmod() 2010-01-08 13:42:59 +00:00
xattr.h sanitize xattr handler prototypes 2009-12-16 12:16:49 -05:00