linux/fs/gfs2
Russell Cattelan ddee76089c [GFS2] Fix unlink deadlocks
Move the glock acquisition to outside of the transactions.

Lock odering must be preserved in order to prevent ABBA
deadlocks. The current gfs2_change_nlink code would tries
to grab the glock after having started a transaction and thus is holding
the log lock. This is inconsistent with other code paths in
gfs that grab the resource group glock prior to staring
a tranactions.

One problem with this fix is that the resource group
lock is always grabbed now even if the inode still has
ref count and can not be marked for unlink.

Signed-off-by: Russell Cattelan <cattelan@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2007-02-05 13:38:17 -05:00
..
locking [GFS2] make lock_dlm drop_count tunable in sysfs 2007-02-05 13:38:01 -05:00
Kconfig [GFS2/DLM] fix GFS2 circular dependency 2007-02-05 13:38:08 -05:00
Makefile [GFS2] Update copyright, tidy up incore.h 2006-09-01 11:05:15 -04:00
acl.c [GFS2] Remove gfs2_check_acl() 2006-11-30 10:37:32 -05:00
acl.h [GFS2] Remove gfs2_check_acl() 2006-11-30 10:37:32 -05:00
bmap.c [GFS2] use CURRENT_TIME_SEC instead of get_seconds in gfs2 2007-02-05 13:37:38 -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] use CURRENT_TIME_SEC instead of get_seconds in gfs2 2007-02-05 13:37:38 -05:00
dir.h [GFS2] Clean up/speed up readdir 2007-02-05 13:37:04 -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] more CURRENT_TIME_SEC 2007-02-05 13:38:11 -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] Put back semaphore to avoid umount problem 2007-02-05 13:38:14 -05:00
glock.h [GFS2] Tidy up glops calls 2007-02-05 13:37:26 -05:00
glops.c [GFS2] Tidy up glops calls 2007-02-05 13:37:26 -05:00
glops.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
incore.h [GFS2] Tidy up glops calls 2007-02-05 13:37:26 -05:00
inode.c [GFS2] Fix unlink deadlocks 2007-02-05 13:38:17 -05:00
inode.h [GFS2] make gfs2_change_nlink_i() static 2007-02-05 13:36:49 -05:00
lm.c [GFS2] don't try to lockfs after shutdown 2007-02-05 13:35:44 -05: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] fs/gfs2/log.c:log_bmap() fix printk format warning 2006-11-30 10:37:04 -05:00
log.h [GFS2] Move gfs2_meta_syncfs() into log.c 2006-11-30 10:36:45 -05:00
lops.c [GFS2] Fix list corruption in lops.c 2007-02-05 13:37:56 -05:00
lops.h [GFS2] split and annotate gfs2_log_head 2006-11-30 10:33:14 -05:00
main.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
meta_io.c [GFS2] Reduce number of arguments to meta_io.c:getbuf() 2006-11-30 10:36:50 -05:00
meta_io.h [GFS2] Move gfs2_meta_syncfs() into log.c 2006-11-30 10:36:45 -05: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] Add writepages for "data=writeback" mounts 2007-02-05 13:37:01 -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] Remove local exclusive glock mode 2007-02-05 13:37:20 -05:00
ops_export.h [GFS2] split and annotate gfs2_inum 2006-11-30 10:33:32 -05:00
ops_file.c [GFS2] Clean up/speed up readdir 2007-02-05 13:37:04 -05:00
ops_file.h [GFS2] Only set inode flags when required 2006-11-30 10:34:45 -05:00
ops_fstype.c [PATCH] Revert bd_mount_mutex back to a semaphore 2007-01-11 18:18:21 -08:00
ops_fstype.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_inode.c [GFS2] Fix unlink deadlocks 2007-02-05 13:38:17 -05:00
ops_inode.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_super.c [GFS2] Remove the "greedy" function from glock.[ch] 2007-02-05 13:37:14 -05:00
ops_super.h [GFS2] Make headers compile on their own 2006-09-05 10:39:21 -04:00
ops_vm.c [GFS2] Remove the "greedy" function from glock.[ch] 2007-02-05 13:37:14 -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 indent in recovery.c 2006-12-05 13:34: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] Remove local exclusive glock mode 2007-02-05 13:37:20 -05:00
super.h [GFS2] split and annotate gfs2_statfs_change 2006-11-30 10:33:38 -05:00
sys.c [GFS2] Remove the "greedy" function from glock.[ch] 2007-02-05 13:37:14 -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 [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
util.h Merge master.kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw 2006-12-07 09:13:20 -08:00