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 GFS2: New truncate sequence 2010-09-20 11:18:16 +01:00
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 GFS2: Add a "demote a glock" interface to sysfs 2009-03-24 11:21:22 +00:00
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 GFS2: No longer experimental 2010-09-20 11:18:46 +01:00
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 GFS2: Rework reclaiming unlinked dinodes 2010-05-21 16:11:36 +01:00
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 GFS2: Metadata address space clean up 2010-03-01 14:07:37 +00:00
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 mm: add context argument to shrinker callback 2010-07-19 14:56:17 +10:00
recovery.c GFS2: Fix spectator umount issue 2010-09-29 14:20:52 +01:00
recovery.h gfs2: use workqueue instead of slow-work 2010-07-23 13:14:25 +02:00
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 gfs: constify xattr_handler 2010-05-21 18:31:20 -04:00
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 GFS2: Various gfs2_logd improvements 2010-05-05 09:39:18 +01:00
trans.h GFS2: reserve more blocks for transactions 2010-09-28 09:44:24 +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 GFS2: Clean up duplicated setattr code 2010-11-30 10:30:19 +00:00
xattr.h sanitize xattr handler prototypes 2009-12-16 12:16:49 -05:00