linux/fs/gfs2
Steven Whitehouse 01b7c7ae88 [GFS2] Revise readpage locking
The previous attempt to fix the locking in readpage failed due
to the use of a "try lock" which resulted in occasional high
cpu usage during testing (due to repeated tries) and also it
did not resolve all the ordering problems wrt the transaction
lock (although it did solve all the inode lock ordering problems).

This patch avoids the problem by unlocking the page and getting the
locks in the correct order. This means that we have to retest the
page to ensure that it hasn't changed when we relock the page.

This now passes the tests which were previously failing.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2008-06-27 09:39:37 +01:00
..
locking/dlm [GFS2] No lock_nolock 2008-06-27 09:39:28 +01:00
acl.c [GFS2] fix GFP_KERNEL misuses 2008-04-10 09:55:26 +01:00
acl.h [GFS2] Remove gfs2_check_acl() 2006-11-30 10:37:32 -05:00
bmap.c [GFS2] fix gfs2 block allocation (cleaned up) 2008-06-24 19:02:28 +01:00
bmap.h [GFS2] Remove function gfs2_get_block 2008-01-25 08:08:25 +00:00
daemon.c [GFS2] Move gfs2_logd into log.c 2008-01-25 08:07:56 +00:00
daemon.h [GFS2] Move gfs2_logd into log.c 2008-01-25 08:07:56 +00:00
dir.c [GFS2] fix GFP_KERNEL misuses 2008-04-10 09:55:26 +01:00
dir.h [GFS2] Clean up inode number handling 2007-07-09 08:22:24 +01:00
eaops.c [GFS2] Remove unrequired code 2008-01-25 08:08:13 +00:00
eaops.h [GFS2] mark struct *_operations const 2007-10-10 08:55:03 +01:00
eattr.c [GFS2] fix GFP_KERNEL misuses 2008-04-10 09:55:26 +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] No lock_nolock 2008-06-27 09:39:28 +01:00
glock.h [GFS2] Clean up the glock core 2008-06-27 09:39:22 +01:00
glops.c [GFS2] Clean up the glock core 2008-06-27 09:39:22 +01:00
glops.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
incore.h [GFS2] Clean up the glock core 2008-06-27 09:39:22 +01:00
inode.c [GFS2] filesystem consistency error from do_strip 2008-05-12 08:54:53 +01:00
inode.h [GFS2] Eliminate (almost) duplicate field from gfs2_inode 2008-03-31 10:40:55 +01:00
Kconfig [GFS2] No lock_nolock 2008-06-27 09:39:28 +01:00
locking.c [GFS2] Fix ordering of args for list_add 2008-06-27 09:39:34 +01:00
log.c [GFS2] trivial sparse lock annotations 2008-06-27 09:39:31 +01:00
log.h [GFS2] trivial sparse lock annotations 2008-06-27 09:39:31 +01:00
lops.c [GFS2] Plug an unlikely leak 2008-03-31 10:40:05 +01:00
lops.h [GFS2] Only do lo_incore_commit once 2008-03-31 10:39:54 +01:00
main.c [GFS2] Clean up the glock core 2008-06-27 09:39:22 +01:00
Makefile [GFS2] No lock_nolock 2008-06-27 09:39:28 +01:00
meta_io.c [GFS2] Clean up the glock core 2008-06-27 09:39:22 +01:00
meta_io.h [GFS2] Clean up the glock core 2008-06-27 09:39:22 +01:00
mount.c [GFS2] Add NULL entry to token table 2007-10-10 08:55:34 +01:00
mount.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_address.c [GFS2] Revise readpage locking 2008-06-27 09:39:37 +01:00
ops_address.h [GFS2] Remove function gfs2_get_block 2008-01-25 08:08:25 +00:00
ops_dentry.c [GFS2] Fix a page lock / glock deadlock 2008-03-31 10:41:12 +01:00
ops_dentry.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_export.c [GFS2] test for IS_ERR rather than 0 2008-03-31 10:41:46 +01:00
ops_file.c [GFS2] Clean up the glock core 2008-06-27 09:39:22 +01:00
ops_fstype.c [GFS2] No lock_nolock 2008-06-27 09:39:28 +01:00
ops_fstype.h exportfs: make struct export_operations const 2007-10-22 08:13:21 -07:00
ops_inode.c [GFS2] Streamline quota lock/check for no-quota case 2008-03-31 10:41:36 +01:00
ops_inode.h [GFS2] remove gfs2_dev_iops 2008-03-31 10:41:20 +01:00
ops_super.c [GFS2] filesystem consistency error from do_strip 2008-05-12 08:54:53 +01:00
ops_super.h [PATCH] Mark struct super_operations const 2007-02-12 09:48:47 -08:00
quota.c [GFS2] fix GFP_KERNEL misuses 2008-04-10 09:55:26 +01:00
quota.h [GFS2] Streamline quota lock/check for no-quota case 2008-03-31 10:41:36 +01:00
recovery.c [GFS2] No lock_nolock 2008-06-27 09:39:28 +01:00
recovery.h [GFS2] split and annotate gfs2_log_head 2006-11-30 10:33:14 -05:00
rgrp.c [GFS2] BUG: unable to handle kernel paging request at ffff81002690e000 2008-06-24 14:17:45 +01:00
rgrp.h [GFS2] Add extent allocation to block allocator 2008-03-31 10:40:47 +01:00
super.c [GFS2] Clean up the glock core 2008-06-27 09:39:22 +01:00
super.h [GFS2] Remove lm.[ch] and distribute content 2008-03-31 10:40:26 +01:00
sys.c [GFS2] Remove unused counters 2008-03-31 10:40:34 +01:00
sys.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
trans.c [GFS2] Update gfs2_trans_add_unrevoke to accept extents 2008-03-31 10:40:42 +01:00
trans.h [GFS2] Update gfs2_trans_add_unrevoke to accept extents 2008-03-31 10:40:42 +01:00
util.c [GFS2] Remove lm.[ch] and distribute content 2008-03-31 10:40:26 +01:00
util.h fs: replace remaining __FUNCTION__ occurrences 2008-04-30 08:29:54 -07:00