linux/fs/ocfs2
Srinivas Eeda 7beaf24378 ocfs2 fix o2dlm dlm run purgelist (rev 3)
This patch fixes two problems in dlm_run_purgelist

1. If a lockres is found to be in use, dlm_run_purgelist keeps trying to purge
the same lockres instead of trying the next lockres.

2. When a lockres is found unused, dlm_run_purgelist releases lockres spinlock
before setting DLM_LOCK_RES_DROPPING_REF and calls dlm_purge_lockres.
spinlock is reacquired but in this window lockres can get reused. This leads
to BUG.

This patch modifies dlm_run_purgelist to skip lockres if it's in use and purge
 next lockres. It also sets DLM_LOCK_RES_DROPPING_REF before releasing the
lockres spinlock protecting it from getting reused.

Signed-off-by: Srinivas Eeda <srinivas.eeda@oracle.com>
Acked-by: Sunil Mushran <sunil.mushran@oracle.com>
Cc: stable@kernel.org
Signed-off-by: Joel Becker <joel.becker@oracle.com>
2010-08-07 10:44:40 -07:00
..
cluster
dlm ocfs2 fix o2dlm dlm run purgelist (rev 3) 2010-08-07 10:44:40 -07:00
dlmfs
acl.c ocfs2: do not overwrite error codes in ocfs2_init_acl 2010-08-07 10:43:25 -07:00
acl.h
alloc.c
alloc.h
aops.c ocfs2: No need to zero pages past i_size. 2010-07-12 13:55:27 -07:00
aops.h
blockcheck.c kernel-wide: replace USHORT_MAX, SHORT_MAX and SHORT_MIN with USHRT_MAX, SHRT_MAX and SHRT_MIN 2010-05-25 08:07:02 -07:00
blockcheck.h
buffer_head_io.c
buffer_head_io.h
dcache.c
dcache.h
dir.c
dir.h
dlmglue.c ocfs2: Avoid unnecessary block mapping when refreshing quota info 2010-05-21 19:30:46 +02:00
dlmglue.h
export.c
export.h
extent_map.c
extent_map.h
file.c ocfs2: Silence gcc warning in ocfs2_write_zero_page(). 2010-07-16 13:33:39 -07:00
file.h ocfs2: Zero the tail cluster when extending past i_size. 2010-07-08 13:25:35 -07:00
heartbeat.c
heartbeat.h
inode.c
inode.h
ioctl.c
ioctl.h
journal.c jbd2/ocfs2: Fix block checksumming when a buffer is used in several transactions 2010-07-15 15:17:47 -07:00
journal.h
Kconfig
localalloc.c ocfs2: Limit default local alloc size within bitmap range. 2010-06-15 16:50:43 -07:00
localalloc.h
locks.c
locks.h
Makefile
mmap.c
mmap.h
namei.c ocfs2: replace inode uid,gid,mode initialization with helper function 2010-05-21 18:31:25 -04:00
namei.h
ocfs1_fs_compat.h
ocfs2_fs.h
ocfs2_ioctl.h
ocfs2_lockid.h
ocfs2_lockingver.h
ocfs2.h
quota_global.c ocfs2: Zero the tail cluster when extending past i_size. 2010-07-08 13:25:35 -07:00
quota_local.c ocfs2: Zero the tail cluster when extending past i_size. 2010-07-08 13:25:35 -07:00
quota.h ocfs2: Fix NULL pointer deref when writing local dquot 2010-05-21 19:30:48 +02:00
refcounttree.c ocfs2: Don't duplicate pages past i_size during CoW. 2010-07-15 10:54:28 -07:00
refcounttree.h
reservations.c ocfs2: update gfp/slab.h includes 2010-06-28 10:19:19 +10:00
reservations.h
resize.c
resize.h
slot_map.c
slot_map.h
stack_o2cb.c
stack_user.c
stackglue.c
stackglue.h
suballoc.c ocfs2: Remove the redundant cpu_to_le64. 2010-07-12 13:56:18 -07:00
suballoc.h
super.c quota: rename default quotactl methods to dquot_ 2010-05-24 14:10:17 +02:00
super.h
symlink.c
symlink.h
sysfile.c
sysfile.h
uptodate.c
uptodate.h
ver.c
ver.h
xattr.c ocfs2: Make xattr reflink work with new local alloc reservation. 2010-07-12 13:57:50 -07:00
xattr.h ocfs: constify xattr_handler 2010-05-21 18:31:20 -04:00