1
0
Fork 0
alistair23-linux/fs/gfs2
Steven Whitehouse 2426443460 [GFS2] Rewrite of examine_bucket()
The existing implementation of this function in glock.c was not
very efficient as it relied upon keeping a cursor element upon the
hash chain in question and moving it along. This new version improves
upon this by using the current element as a cursor. This is possible
since we only look at the "next" element in the list after we've
taken the read_lock() subsequent to calling the examiner function.
Obviously we have to eventually drop the ref count that we are then
left with and we cannot do that while holding the read_lock, so we
do that next time we drop the lock. That means either just before
we examine another glock, or when the loop has terminated.

The new implementation has several advantages: it uses only a
read_lock() rather than a write_lock(), so it can run simnultaneously
with other code, it doesn't need a "plug" element, so that it removes
a test not only from this list iterator, but from all the other glock
list iterators too. So it makes things faster and smaller.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2006-09-11 21:40:30 -04:00
..
locking [GFS2] Use void * instead of typedef for locking module interface 2006-09-08 10:17:58 -04:00
Kconfig [GFS2] gfs2/dlm: mailing list and web page 2006-06-22 15:29:57 -04:00
Makefile [GFS2] Update copyright, tidy up incore.h 2006-09-01 11:05:15 -04:00
acl.c [GFS2] Align all labels against LH side 2006-09-04 12:04:26 -04:00
acl.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
bmap.c [GFS2] More style changes 2006-09-07 09:42:56 -04:00
bmap.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
daemon.c [GFS2] Update copyright, tidy up incore.h 2006-09-01 11:05:15 -04:00
daemon.h [GFS2] Update copyright, tidy up incore.h 2006-09-01 11:05:15 -04:00
dir.c [GFS2] More style changes 2006-09-07 09:42:56 -04:00
dir.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
eaops.c [GFS2] Extended attribute code style changes 2006-09-05 13:15:18 -04:00
eaops.h [GFS2] Extended attribute code style changes 2006-09-05 13:15:18 -04:00
eattr.c [GFS2] Extended attribute code style changes 2006-09-05 13:15:18 -04:00
eattr.h [GFS2] Extended attribute code style changes 2006-09-05 13:15:18 -04:00
gfs2.h [GFS2] Update copyright, tidy up incore.h 2006-09-01 11:05:15 -04:00
glock.c [GFS2] Rewrite of examine_bucket() 2006-09-11 21:40:30 -04:00
glock.h [GFS2] Remove unused function from glock.c 2006-09-09 18:59:27 -04:00
glops.c [GFS2] Remove unused function from glock.c 2006-09-09 18:59:27 -04:00
glops.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
incore.h [GFS2] Rewrite of examine_bucket() 2006-09-11 21:40:30 -04:00
inode.c [GFS2] Remove a cast, tidy gfs2_inode_attr_in 2006-09-04 13:55:48 -04:00
inode.h [GFS2] Update copyright, tidy up incore.h 2006-09-01 11:05:15 -04:00
lm.c [GFS2] Use void * instead of typedef for locking module interface 2006-09-08 10:17:58 -04:00
lm.h [GFS2] Use void * instead of typedef for locking module interface 2006-09-08 10:17:58 -04:00
lm_interface.h [GFS2] Use void * instead of typedef for locking module interface 2006-09-08 10:17:58 -04:00
locking.c [GFS2] Use void * instead of typedef for locking module interface 2006-09-08 10:17:58 -04:00
log.c [GFS2] More style changes 2006-09-07 09:42:56 -04:00
log.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
lops.c [GFS2] Style changes in logging code 2006-09-05 14:41:30 -04:00
lops.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
main.c [GFS2] Move glock hash table out of superblock 2006-09-07 14:40:21 -04:00
meta_io.c [GFS2] More style changes 2006-09-04 14:47:06 -04:00
meta_io.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
mount.c [GFS2] Align all labels against LH side 2006-09-04 12:04:26 -04:00
mount.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ondisk.c [GFS2] Use const in endian conversion routines 2006-09-04 14:48:37 -04:00
ops_address.c [GFS2] Style changes in ops_address.c 2006-09-04 14:59:35 -04:00
ops_address.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_dentry.c [GFS2] Align all labels against LH side 2006-09-04 12:04:26 -04:00
ops_dentry.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_export.c [GFS2] Add a comment in ops_export.c 2006-09-05 15:56:17 -04:00
ops_export.h [GFS2] Some further style changes 2006-09-04 16:16:45 -04:00
ops_file.c [GFS2] More code style updates 2006-09-04 15:32:10 -04:00
ops_file.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_fstype.c [GFS2] vfree should be kfree 2006-09-08 10:13:03 -04:00
ops_fstype.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_inode.c [GFS2] More code style updates 2006-09-04 15:32:10 -04:00
ops_inode.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_super.c [GFS2] vfree should be kfree (II) 2006-09-09 16:56:34 -04:00
ops_super.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_vm.c [GFS2] Change all types to uX style 2006-09-04 12:49:07 -04:00
ops_vm.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
quota.c [GFS2] Remove unused code from quota 2006-09-05 15:17:12 -04:00
quota.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
recovery.c [GFS2] Style changes in logging code 2006-09-05 14:41:30 -04:00
recovery.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
rgrp.c [GFS2] More style fixes 2006-09-05 15:41:57 -04:00
rgrp.h [GFS2] More style fixes 2006-09-05 15:41:57 -04:00
super.c [GFS2] Change all types to uX style 2006-09-04 12:49:07 -04:00
super.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
sys.c [GFS2] use snprintf for sysfs show 2006-09-07 09:43:34 -04:00
sys.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
trans.c [GFS2] Change all types to uX style 2006-09-04 12:49:07 -04:00
trans.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
util.c [GFS2] Change all types to uX style 2006-09-04 12:49:07 -04:00
util.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00