1
linux/fs/gfs2
Bob Peterson 44ad37d69b GFS2: filesystem hang caused by incorrect lock order
This patch fixes a deadlock in GFS2 where two processes are trying
to reclaim an unlinked dinode:
One holds the inode glock and calls gfs2_lookup_by_inum trying to look
up the inode, which it can't, due to I_FREEING.  The other has set
I_FREEING from vfs and is at the beginning of gfs2_delete_inode
waiting for the glock, which is held by the first.  The solution is to
add a new non_block parameter to the gfs2_iget function that causes it
to return -ENOENT if the inode is being freed.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2011-04-18 15:23:50 +01:00
..
acl.c GFS2: Post-VFS scale update for RCU path walk 2011-01-21 09:39:24 +00:00
acl.h fs: provide rcu-walk aware permission i_ops 2011-01-07 17:50:29 +11:00
aops.c GFS2: write_end error path fails to unlock transaction lock 2011-04-18 15:22:35 +01:00
bmap.c Fix common misspellings 2011-03-31 11:26:23 -03:00
bmap.h
dentry.c gfs2: fix d_revalidate oopsen on NFS exports 2011-03-10 03:44:48 -05:00
dir.c GFS2: filesystem hang caused by incorrect lock order 2011-04-18 15:23:50 +01:00
dir.h GFS2: Make . and .. qstrs constant 2010-09-20 11:21:09 +01:00
export.c exportfs: Return the minimum required handle size 2011-03-14 09:15:28 -04:00
file.c GFS2: directly write blocks past i_size 2011-04-18 15:22:52 +01:00
gfs2.h
glock.c Fix common misspellings 2011-03-31 11:26:23 -03:00
glock.h GFS2: Fix glock deallocation race 2011-03-09 10:58:04 +00:00
glops.c GFS2: Don't try to deallocate unlinked inodes when mounted ro 2011-04-18 15:23:12 +01:00
glops.h
incore.h GFS2: introduce AIL lock 2011-03-11 11:52:25 +00:00
inode.c GFS2: filesystem hang caused by incorrect lock order 2011-04-18 15:23:50 +01:00
inode.h GFS2: filesystem hang caused by incorrect lock order 2011-04-18 15:23:50 +01:00
Kconfig
lock_dlm.c GFS2: Fix glock deallocation race 2011-03-09 10:58:04 +00:00
log.c Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block 2011-03-24 10:16:26 -07:00
log.h
lops.c Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block 2011-03-24 10:16:26 -07:00
lops.h
main.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw 2011-03-16 08:58:43 -07:00
Makefile fs: change to new flag variable 2011-03-17 14:02:57 +01:00
meta_io.c Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block 2011-03-24 10:16:26 -07:00
meta_io.h
ops_fstype.c GFS2: filesystem hang caused by incorrect lock order 2011-04-18 15:23:50 +01:00
ops_inode.c GFS2: Post-VFS scale update for RCU path walk 2011-01-21 09:39:24 +00:00
quota.c GFS2: quota allows exceeding hard limit 2011-03-09 09:32:44 +00:00
quota.h
recovery.c GFS2: Fix spectator umount issue 2010-09-29 14:20:52 +01:00
recovery.h
rgrp.c GFS2: filesystem hang caused by incorrect lock order 2011-04-18 15:23:50 +01:00
rgrp.h GFS2: deallocation performance patch 2011-02-24 12:13:48 +00:00
super.c GFS2: filesystem hang caused by incorrect lock order 2011-04-18 15:23:50 +01:00
super.h
sys.c GFS2: Fix type mapping for demote_rq interface 2010-10-06 09:58:44 +01:00
sys.h
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
trans.h GFS2: reserve more blocks for transactions 2010-09-28 09:44:24 +01:00
util.c
util.h
xattr.c GFS2: Clean up duplicated setattr code 2010-11-30 10:30:19 +00:00
xattr.h