OpenCloudOS-Kernel/fs/gfs2
Steven Whitehouse 7b5e3d5fcf GFS2: Don't enforce min hold time when two demotes occur in rapid succession
Due to the design of the VFS, it is quite usual for operations on GFS2
to consist of a lookup (requiring a shared lock) followed by an
operation requiring an exclusive lock. If a remote node has cached an
exclusive lock, then it will receive two demote events in rapid succession
firstly for a shared lock and then to unlocked. The existing min hold time
code was triggering in this case, even if the node was otherwise idle
since the state change time was being updated by the initial demote.

This patch introduces logic to skip the min hold timer in the case that
a "double demote" of this kind has occurred. The min hold timer will
still be used in all other cases.

A new glock flag is introduced which is used to keep track of whether
there have been any newly queued holders since the last glock state
change. The min hold time is only applied if the flag is set.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Tested-by: Abhijith Das <adas@redhat.com>
2010-09-20 11:19:50 +01:00
..
Kconfig GFS2: No longer experimental 2010-09-20 11:18:46 +01:00
Makefile GFS2: Rename eattr.[ch] as xattr.[ch] 2009-08-26 18:51:04 +01:00
acl.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes 2010-05-25 08:17:51 -07:00
acl.h gfs: constify xattr_handler 2010-05-21 18:31:20 -04:00
aops.c GFS2: fallocate support 2010-09-20 11:19:17 +01:00
bmap.c GFS2: Remove i_disksize 2010-09-20 11:18:29 +01:00
bmap.h GFS2: New truncate sequence 2010-09-20 11:18:16 +01:00
dentry.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
dir.c GFS2: Remove i_disksize 2010-09-20 11:18:29 +01:00
dir.h GFS2: Fix bug in gfs2_lock_fs_check_clean() 2009-01-05 07:39:11 +00:00
export.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw 2010-05-21 07:29:15 -07:00
file.c GFS2: Remove i_disksize 2010-09-20 11:18:29 +01:00
gfs2.h [GFS2] Remove remote lock dropping code 2008-06-27 09:39:44 +01:00
glock.c GFS2: Don't enforce min hold time when two demotes occur in rapid succession 2010-09-20 11:19:50 +01:00
glock.h GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
glops.c GFS2: Remove i_disksize 2010-09-20 11:18:29 +01:00
glops.h GFS2: Add a "demote a glock" interface to sysfs 2009-03-24 11:21:22 +00:00
incore.h GFS2: Don't enforce min hold time when two demotes occur in rapid succession 2010-09-20 11:19:50 +01:00
inode.c GFS2: Remove i_disksize 2010-09-20 11:18:29 +01:00
inode.h GFS2: fallocate support 2010-09-20 11:19:17 +01:00
lock_dlm.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
log.c GFS2: gfs2_logd should be using interruptible waits 2010-09-17 14:00:10 +01:00
log.h GFS2: Rework reclaiming unlinked dinodes 2010-05-21 16:11:36 +01:00
lops.c GFS2: Various gfs2_logd improvements 2010-05-05 09:39:18 +01:00
lops.h [GFS2] Only do lo_incore_commit once 2008-03-31 10:39:54 +01:00
main.c gfs2: use workqueue instead of slow-work 2010-07-23 13:14:25 +02:00
meta_io.c block: unify flags for struct bio and struct request 2010-08-07 18:20:39 +02:00
meta_io.h GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
ops_fstype.c GFS2: Remove i_disksize 2010-09-20 11:18:29 +01:00
ops_inode.c GFS2: Fix whitespace in previous patch 2010-09-20 11:19:35 +01:00
quota.c GFS2: Remove i_disksize 2010-09-20 11:18:29 +01:00
quota.h mm: add context argument to shrinker callback 2010-07-19 14:56:17 +10:00
recovery.c gfs2: use workqueue instead of slow-work 2010-07-23 13:14:25 +02:00
recovery.h gfs2: use workqueue instead of slow-work 2010-07-23 13:14:25 +02:00
rgrp.c GFS2: fallocate support 2010-09-20 11:19:17 +01:00
rgrp.h include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
super.c GFS2: Remove i_disksize 2010-09-20 11:18:29 +01:00
super.h gfs: constify xattr_handler 2010-05-21 18:31:20 -04:00
sys.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2010-08-07 12:42:58 -07:00
sys.h GFS2: Remove ancient, unused code 2009-01-05 07:39:13 +00:00
trace_gfs2.h GFS2: Don't enforce min hold time when two demotes occur in rapid succession 2010-09-20 11:19:50 +01:00
trans.c GFS2: Various gfs2_logd improvements 2010-05-05 09:39:18 +01:00
trans.h GFS2: fallocate support 2010-09-20 11:19:17 +01:00
util.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
util.h GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
xattr.c remove inode_setattr 2010-08-09 16:47:37 -04:00
xattr.h sanitize xattr handler prototypes 2009-12-16 12:16:49 -05:00