linux/fs/gfs2
Steven Whitehouse 363275216c [GFS2] Reordering in deallocation to avoid recursive locking
Despite my earlier careful search, there was a recursive lock left
in the deallocation code. This removes it. It also should speed up
deallocation be reducing the number of locking operations which take
place by using two "try lock" operations on the two locks involved in
inode deallocation which allows us to grab the locks out of order
(compared with NFS which grabs the inode lock first and the iopen
lock later). It is ok for us to fail while doing this since if it
does fail it means that someone else is still using the inode and
thus it wouldn't be possible to deallocate anyway.

This fixes the bug reported to me by Rob Kenna.

Cc: Rob Kenna <rkenna@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2006-04-28 10:46:21 -04:00
..
locking [GFS2] Remove redundant casts to/from void 2006-04-27 11:25:45 -04:00
Kconfig [GFS2] Tidy up Makefile & Kconfig 2006-04-24 14:14:42 -04:00
Makefile [GFS2] Tidy up Makefile & Kconfig 2006-04-24 14:14:42 -04:00
acl.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
acl.h
bits.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
bits.h
bmap.c [GFS2] Tidy up dir code as per Christoph Hellwig's comments 2006-04-24 10:07:13 -04:00
bmap.h [GFS2] Remove unused prototype 2006-01-30 13:36:53 +00:00
daemon.c [GFS2] Tidy up daemon.c 2006-04-24 13:13:56 -04:00
daemon.h
dir.c [GFS2] Tidy up dir code as per Christoph Hellwig's comments 2006-04-24 10:07:13 -04:00
dir.h [GFS2] Tidy up dir code as per Christoph Hellwig's comments 2006-04-24 10:07:13 -04:00
eaops.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
eaops.h
eattr.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
eattr.h [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
format.h
gfs2.h [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
glock.c [GFS2] Reordering in deallocation to avoid recursive locking 2006-04-28 10:46:21 -04:00
glock.h [GFS2] Remove GL_NEVER_RECURSE flag 2006-04-26 14:58:26 -04:00
glops.c [GFS2] Fix a ref count bug and other clean ups 2006-04-07 11:17:32 -04:00
glops.h
incore.h [GFS2] Don't do recursive locking in glock layer 2006-04-26 13:21:55 -04:00
inode.c [GFS2] Reordering in deallocation to avoid recursive locking 2006-04-28 10:46:21 -04:00
inode.h [GFS2] Reordering in deallocation to avoid recursive locking 2006-04-28 10:46:21 -04:00
lm.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
lm.h
lm_interface.h
locking.c [GFS2] sem -> mutex conversion in locking.c 2006-04-21 15:10:46 -04:00
log.c [GFS2] sem -> mutex conversion in locking.c 2006-04-21 15:10:46 -04:00
log.h [GFS2] Fix a ref count bug and other clean ups 2006-04-07 11:17:32 -04:00
lops.c [GFS2] Fix a ref count bug and other clean ups 2006-04-07 11:17:32 -04:00
lops.h [GFS2] Fix a ref count bug and other clean ups 2006-04-07 11:17:32 -04:00
lvb.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
lvb.h [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
main.c [GFS2] Add gfs2meta filesystem 2006-03-02 16:33:41 -05:00
meta_io.c [GFS2] Fix a bug: scheduling under a spinlock 2006-04-20 16:57:23 -04:00
meta_io.h [GFS2] 80 Column audit of GFS2 2006-02-27 12:00:42 -05:00
mount.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
mount.h
ondisk.c [GFS] Fix bug in endian conversion for metadata header 2006-03-30 15:46:23 -05:00
ops_address.c [GFS2] Use vmalloc() in dir code 2006-04-18 10:09:15 -04:00
ops_address.h [GFS2] Rename get_block and make it extern 2006-01-30 09:39:10 +00:00
ops_dentry.c [GFS2] Further updates to dir and logging code 2006-03-28 14:14:04 -05:00
ops_dentry.h
ops_export.c [GFS2] Further updates to dir and logging code 2006-03-28 14:14:04 -05:00
ops_export.h
ops_file.c [GFS2] Remove inherited flags from exported flags. 2006-04-25 13:20:27 -04:00
ops_file.h [GFS2] Fix for lock recursion problem for internal files 2006-02-15 10:15:18 +00:00
ops_fstype.c [GFS2] Remove GL_NEVER_RECURSE flag 2006-04-26 14:58:26 -04:00
ops_fstype.h [GFS2] Add gfs2meta filesystem 2006-03-02 16:33:41 -05:00
ops_inode.c [GFS2] Use vmalloc() in dir code 2006-04-18 10:09:15 -04:00
ops_inode.h
ops_super.c [GFS2] Use vmalloc() in dir code 2006-04-18 10:09:15 -04:00
ops_super.h
ops_vm.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
ops_vm.h
page.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
page.h [GFS2] Update truncate function (shrinking partial blocks) 2006-01-31 10:00:25 +00:00
quota.c [GFS2] Fix a ref count bug and other clean ups 2006-04-07 11:17:32 -04:00
quota.h
recovery.c [GFS2] Remove GL_NEVER_RECURSE flag 2006-04-26 14:58:26 -04:00
recovery.h [GFS2] journal recovery patch 2006-04-20 17:03:48 -04:00
rgrp.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
rgrp.h
super.c [GFS2] Remove GL_NEVER_RECURSE flag 2006-04-26 14:58:26 -04:00
super.h [GFS2] Tidy up mount code. 2006-03-01 15:31:02 -05:00
sys.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
sys.h
trans.c [GFS2] Remove GL_NEVER_RECURSE flag 2006-04-26 14:58:26 -04:00
trans.h [GFS2] Update debugging code 2006-03-29 14:36:49 -05:00
unlinked.c [GFS2] Macros removal in gfs2.h 2006-02-27 17:23:27 -05:00
unlinked.h
util.c [GFS2] Move BUG() back into the header file 2006-04-21 15:52:46 -04:00
util.h [GFS2] Move BUG() back into the header file 2006-04-21 15:52:46 -04:00