• Bob Peterson's avatar
    GFS2: filesystem hang caused by incorrect lock order · 44ad37d6
    Bob Peterson authored
    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: default avatarBob Peterson <rpeterso@redhat.com>
    Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
    44ad37d6
Name
Last commit
Last update
..
Kconfig Loading commit data...
Makefile Loading commit data...
acl.c Loading commit data...
acl.h Loading commit data...
aops.c Loading commit data...
bmap.c Loading commit data...
bmap.h Loading commit data...
dentry.c Loading commit data...
dir.c Loading commit data...
dir.h Loading commit data...
export.c Loading commit data...
file.c Loading commit data...
gfs2.h Loading commit data...
glock.c Loading commit data...
glock.h Loading commit data...
glops.c Loading commit data...
glops.h Loading commit data...
incore.h Loading commit data...
inode.c Loading commit data...
inode.h Loading commit data...
lock_dlm.c Loading commit data...
log.c Loading commit data...
log.h Loading commit data...
lops.c Loading commit data...
lops.h Loading commit data...
main.c Loading commit data...
meta_io.c Loading commit data...
meta_io.h Loading commit data...
ops_fstype.c Loading commit data...
ops_inode.c Loading commit data...
quota.c Loading commit data...
quota.h Loading commit data...
recovery.c Loading commit data...
recovery.h Loading commit data...
rgrp.c Loading commit data...
rgrp.h Loading commit data...
super.c Loading commit data...
super.h Loading commit data...
sys.c Loading commit data...
sys.h Loading commit data...
trace_gfs2.h Loading commit data...
trans.c Loading commit data...
trans.h Loading commit data...
util.c Loading commit data...
util.h Loading commit data...
xattr.c Loading commit data...
xattr.h Loading commit data...