1
linux/fs/gfs2
Steven Whitehouse b004157ab5 [GFS2] Fix journal flush problem
This fixes a bug which resulted in poor performance due to flushing
the journal too often. The code path in question was via the inode_go_sync()
function in glops.c. The solution is not to flush the journal immediately
when inodes are ejected from memory, but batch up the work for glockd to
deal with later on. This means that glocks may now live on beyond the end of
the lifetime of their inodes (but not very much longer in the normal case).

Also fixed in this patch is a bug (which was hidden by the bug mentioned above) in
calculation of the number of free journal blocks.

The gfs2_logd process has been altered to be more responsive to the journal
filling up. We now wake it up when the number of uncommitted journal blocks
has reached the threshold level rather than trying to flush directly at the
end of each transaction. This again means doing fewer, but larger, log
flushes in general.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2006-11-30 10:36:42 -05:00
..
locking [PATCH] misuse of strstr 2006-10-11 11:17:06 -07:00
acl.c [GFS2] Shrink gfs2_inode (4) - di_uid/di_gid 2006-11-30 10:34:17 -05:00
acl.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
bmap.c [GFS2] Tidy up bmap & fix boundary bug 2006-11-30 10:35:49 -05:00
bmap.h [GFS2] Fix bmap to map extents properly 2006-10-20 09:13:40 -04:00
daemon.c [GFS2] Fix journal flush problem 2006-11-30 10:36:42 -05:00
daemon.h [GFS2] Update copyright, tidy up incore.h 2006-09-01 11:05:15 -04:00
dir.c [GFS2] Make sentinel dirents compatible with gfs1 2006-11-30 10:36:20 -05:00
dir.h [GFS2] split and annotate gfs2_inum 2006-11-30 10:33:32 -05:00
eaops.c [GFS2] Shrink gfs2_inode (3) - di_mode 2006-11-30 10:34:14 -05:00
eaops.h [GFS2] Extended attribute code style changes 2006-09-05 13:15:18 -04:00
eattr.c [GFS2] Remove gfs2_inode_attr_in 2006-11-30 10:34:52 -05: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] Fix journal flush problem 2006-11-30 10:36:42 -05:00
glock.h [GFS2] Fix journal flush problem 2006-11-30 10:36:42 -05:00
glops.c [GFS2] Fix journal flush problem 2006-11-30 10:36:42 -05:00
glops.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
incore.h [GFS2] Simplify glops functions 2006-11-30 10:36:30 -05:00
inode.c [GFS2] Fix glock ordering on inode creation 2006-11-30 10:36:33 -05:00
inode.h [GFS2] Remove unused function from inode.c 2006-11-30 10:35:57 -05:00
Kconfig [GFS2] Fix Kconfig wrt CRC32 2006-11-30 10:36:24 -05:00
lm.c [GFS2/DLM] Fix trailing whitespace 2006-09-25 09:26:04 -04: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] Fix journal flush problem 2006-11-30 10:36:42 -05:00
log.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
lops.c [GFS2] Fix race in logging code 2006-11-30 10:34:55 -05:00
lops.h [GFS2] split and annotate gfs2_log_head 2006-11-30 10:33:14 -05:00
main.c [GFS2] don't panic needlessly 2006-11-06 08:58:52 -05:00
Makefile [GFS2] Update copyright, tidy up incore.h 2006-09-01 11:05:15 -04:00
meta_io.c [GFS2] Fix journal flush problem 2006-11-30 10:36:42 -05:00
meta_io.h [GFS2] Move logging code into log.c (mostly) 2006-10-03 11:10:41 -04:00
mount.c [GFS2] Export lm_interface to kernel headers 2006-09-19 08:45:18 -04:00
mount.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ondisk.c [GFS2] Don't copy meta_header for rgrp in and out 2006-11-30 10:34:36 -05:00
ops_address.c [GFS2] mark_inode_dirty after write to stuffed file 2006-11-30 10:36:36 -05:00
ops_address.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_dentry.c [GFS2] Shrink gfs2_inode (3) - di_mode 2006-11-30 10:34:14 -05:00
ops_dentry.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_export.c [GFS2] gfs2 misc endianness annotations 2006-11-30 10:33:46 -05:00
ops_export.h [GFS2] split and annotate gfs2_inum 2006-11-30 10:33:32 -05:00
ops_file.c [GFS2] Remove unused function from inode.c 2006-11-30 10:35:57 -05:00
ops_file.h [GFS2] Only set inode flags when required 2006-11-30 10:34:45 -05:00
ops_fstype.c [GFS2] split and annotate gfs2_inum 2006-11-30 10:33:32 -05:00
ops_fstype.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_inode.c [GFS2] Shrink gfs2_inode (8) - i_vn 2006-11-30 10:34:30 -05:00
ops_inode.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_super.c [GFS2] Fix journal flush problem 2006-11-30 10:36:42 -05:00
ops_super.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_vm.c [GFS2] Shrink gfs2_inode (4) - di_uid/di_gid 2006-11-30 10:34:17 -05:00
ops_vm.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
quota.c [GFS2] Shrink gfs2_inode (4) - di_uid/di_gid 2006-11-30 10:34:17 -05:00
quota.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
recovery.c [GFS2] Fix crc32 calculation in recovery.c 2006-11-30 10:33:17 -05:00
recovery.h [GFS2] split and annotate gfs2_log_head 2006-11-30 10:33:14 -05:00
rgrp.c [GFS2] Shrink gfs2_inode (4) - di_uid/di_gid 2006-11-30 10:34:17 -05:00
rgrp.h [GFS2] Fix uninitialised variable 2006-10-12 17:10:15 -04:00
super.c [GFS2] Simplify glops functions 2006-11-30 10:36:30 -05:00
super.h [GFS2] split and annotate gfs2_statfs_change 2006-11-30 10:33:38 -05:00
sys.c [GFS2] Remove unused sysfs files 2006-11-30 10:35:53 -05: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] Export lm_interface to kernel headers 2006-09-19 08:45:18 -04:00
util.h [GFS2] gfs2 misc endianness annotations 2006-11-30 10:33:46 -05:00