linux/fs/ocfs2
Jan Kara f7b1aa69be ocfs2: Fix deadlock on umount
In commit ea455f8ab6, we moved the dentry lock
put process into ocfs2_wq. This causes problems during umount because ocfs2_wq
can drop references to inodes while they are being invalidated by
invalidate_inodes() causing all sorts of nasty things (invalidate_inodes()
ending in an infinite loop, "Busy inodes after umount" messages etc.).

We fix the problem by stopping ocfs2_wq from doing any further releasing of
inode references on the superblock being unmounted, wait until it finishes
the current round of releasing and finally cleaning up all the references in
dentry_lock_list from ocfs2_put_super().

The issue was tracked down by Tao Ma <tao.ma@oracle.com>.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
2009-07-21 15:47:55 -07:00
..
cluster Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 2009-06-16 12:11:57 -07:00
dlm ocfs2: trivial fix for s/migrate/migration/ in dlmrecovery.c logging 2009-07-08 15:34:40 -07:00
Kconfig fs/Kconfig: move ocfs2 out 2009-01-22 13:15:54 +03:00
Makefile ocfs2: Add the underlying blockcheck code. 2009-01-05 08:40:31 -08:00
acl.c New helper - current_umask() 2009-03-31 23:00:26 -04:00
acl.h ocfs2: add ocfs2_init_acl in mknod 2009-01-05 08:34:20 -08:00
alloc.c ocfs2: Add extra credits and access the modified bh in update_edge_lengths. 2009-07-21 14:41:54 -07:00
alloc.h ocfs2: Add a name indexed b-tree to directory inodes 2009-04-03 11:39:15 -07:00
aops.c ocfs2: Fail ocfs2_get_block() immediately when a block needs allocation 2009-07-20 17:36:07 -07:00
aops.h
blockcheck.c ocfs2: Add statistics for the checksum and ecc operations. 2009-06-03 19:15:36 -07:00
blockcheck.h ocfs2: Add statistics for the checksum and ecc operations. 2009-06-03 19:15:36 -07:00
buffer_head_io.c ocfs2: Use BH_JBDPrivateStart instead of BH_Unshadow 2009-01-05 08:40:24 -08:00
buffer_head_io.h ocfs2: Validate metadata only when it's read from disk. 2009-01-05 08:36:53 -08:00
dcache.c ocfs2: Fix deadlock on umount 2009-07-21 15:47:55 -07:00
dcache.h ocfs2: Fix deadlock on umount 2009-07-21 15:47:55 -07:00
dir.c ocfs2: Correct ordering of ip_alloc_sem and localloc locks for directories 2009-06-03 19:14:30 -07:00
dir.h ocfs2: Introduce dir free space list 2009-04-03 11:39:16 -07:00
dlmglue.c ocfs2: Add lockdep annotations 2009-06-22 14:34:26 -07:00
dlmglue.h ocfs2: Add lockdep annotations 2009-06-22 14:34:26 -07:00
export.c ocfs2: Fix some printk() warnings. 2009-04-21 16:31:20 -07:00
export.h
extent_map.c ocfs2: Wrap virtual block reads in ocfs2_read_virt_blocks() 2009-01-05 08:36:54 -08:00
extent_map.h ocfs2: Wrap virtual block reads in ocfs2_read_virt_blocks() 2009-01-05 08:36:54 -08:00
file.c ocfs2: Initialize count in aio_write before generic_write_checks 2009-07-20 15:47:58 -07:00
file.h ocfs2: Implementation of local and global quota file handling 2009-01-05 08:40:23 -08:00
heartbeat.c
heartbeat.h
inode.c ocfs2: Add lockdep annotations 2009-06-22 14:34:26 -07:00
inode.h ocfs2: fix rare stale inode errors when exporting via nfs 2009-04-03 11:39:25 -07:00
ioctl.c
ioctl.h
journal.c ocfs2: Fixup orphan scan cleanup after failed mount 2009-07-08 15:34:02 -07:00
journal.h ocfs2: Fixup orphan scan cleanup after failed mount 2009-07-08 15:34:02 -07:00
localalloc.c ocfs2: Remove debugfs file local_alloc_stats 2009-04-03 11:39:15 -07:00
localalloc.h
locks.c
locks.h
mmap.c mm: page_mkwrite change prototype to match fault 2009-04-01 08:59:14 -07:00
mmap.h
namei.c ocfs2: Add lockdep annotations 2009-06-22 14:34:26 -07:00
namei.h
ocfs1_fs_compat.h
ocfs2.h ocfs2: Fix deadlock on umount 2009-07-21 15:47:55 -07:00
ocfs2_fs.h ocfs2: Enable indexed directories 2009-04-03 11:39:16 -07:00
ocfs2_lockid.h ocfs2: timer to queue scan of all orphan slots 2009-06-03 19:14:31 -07:00
ocfs2_lockingver.h
quota.h ocfs2: Fix ocfs2_read_quota_block() error handling. 2009-01-05 08:40:24 -08:00
quota_global.c ocfs2: Fix possible deadlock in ocfs2_global_read_dquot() 2009-06-03 19:14:28 -07:00
quota_local.c ocfs2: Fix possible deadlock in quota recovery 2009-06-03 19:14:30 -07:00
resize.c ocfs2: Use metadata-specific ocfs2_journal_access_*() functions. 2009-01-05 08:40:32 -08:00
resize.h
slot_map.c ocfs2: Validate metadata only when it's read from disk. 2009-01-05 08:36:53 -08:00
slot_map.h
stack_o2cb.c ocfs2: Provide the ocfs2_dlm_lvb_valid() stack API. 2009-06-22 14:24:30 -07:00
stack_user.c ocfs2: Provide the ocfs2_dlm_lvb_valid() stack API. 2009-06-22 14:24:30 -07:00
stackglue.c ocfs2: Provide the ocfs2_dlm_lvb_valid() stack API. 2009-06-22 14:24:30 -07:00
stackglue.h ocfs2: Provide the ocfs2_dlm_lvb_valid() stack API. 2009-06-22 14:24:30 -07:00
suballoc.c ocfs2: Pin journal head before accessing jh->b_committed_data 2009-06-22 14:24:47 -07:00
suballoc.h ocfs2: fix rare stale inode errors when exporting via nfs 2009-04-03 11:39:25 -07:00
super.c ocfs2: Fix deadlock on umount 2009-07-21 15:47:55 -07:00
super.h
symlink.c ocfs2: Use nd_set_link(). 2009-05-09 10:49:40 -04:00
symlink.h
sysfile.c ocfs2/trivial: Wrap ocfs2_sysfile_cluster_lock_key within define. 2009-06-22 14:34:29 -07:00
sysfile.h
uptodate.c
uptodate.h
ver.c
ver.h
xattr.c ocfs2: Fix compilation warning for fs/ocfs2/xattr.c 2009-07-20 15:52:57 -07:00
xattr.h ocfs2: Add a name indexed b-tree to directory inodes 2009-04-03 11:39:15 -07:00