tmp_suning_uos_patched/fs
Jeff Layton 3bc303c254 cifs: convert oplock breaks to use slow_work facility (try #4)
This is the fourth respin of the patch to convert oplock breaks to
use the slow_work facility.

A customer of ours was testing a backport of one of the earlier
patchsets, and hit a "Busy inodes after umount..." problem. An oplock
break job had raced with a umount, and the superblock got torn down and
its memory reused. When the oplock break job tried to dereference the
inode->i_sb, the kernel oopsed.

This patchset has the oplock break job hold an inode and vfsmount
reference until the oplock break completes.  With this, there should be
no need to take a tcon reference (the vfsmount implicitly holds one
already).

Currently, when an oplock break comes in there's a chance that the
oplock break job won't occur if the allocation of the oplock_q_entry
fails. There are also some rather nasty races in the allocation and
handling these structs.

Rather than allocating oplock queue entries when an oplock break comes
in, add a few extra fields to the cifsFileInfo struct. Get rid of the
dedicated cifs_oplock_thread as well and queue the oplock break job to
the slow_work thread pool.

This approach also has the advantage that the oplock break jobs can
potentially run in parallel rather than be serialized like they are
today.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
2009-09-24 18:33:18 +00:00
..
9p
adfs
affs
afs AFS: Stop readlink() on AFS crashing due to NULL 'file' ptr 2009-08-27 12:22:08 -07:00
autofs
autofs4 autofs4 - fix missed case when changing to use struct path 2009-08-31 17:44:05 -10:00
befs
bfs
btrfs writeback: add name to backing_dev_info 2009-09-11 09:20:26 +02:00
cachefiles
cifs cifs: convert oplock breaks to use slow_work facility (try #4) 2009-09-24 18:33:18 +00:00
coda
configfs writeback: add name to backing_dev_info 2009-09-11 09:20:26 +02:00
cramfs
debugfs
devpts
dlm
ecryptfs
efs
exofs
exportfs
ext2 ext2: Update comment about generic_osync_inode 2009-09-14 17:08:16 +02:00
ext3 ext3: Remove syncing logic from ext3_file_write 2009-09-14 17:08:16 +02:00
ext4 ext4: Remove syncing logic from ext4_file_write 2009-09-14 17:08:16 +02:00
fat fat: Opencode sync_page_range_nolock() 2009-09-14 17:08:17 +02:00
freevxfs
fscache
fuse writeback: add name to backing_dev_info 2009-09-11 09:20:26 +02:00
gfs2 GFS2: Whitespace fixes 2009-09-14 09:50:57 +01:00
hfs
hfsplus
hostfs
hpfs
hppfs
hugetlbfs writeback: add name to backing_dev_info 2009-09-11 09:20:26 +02:00
isofs
jbd
jbd2
jffs2 jffs2/jfs/xfs: switch over to 'check_acl' rather than 'permission()' 2009-09-08 11:09:04 -07:00
jfs jffs2/jfs/xfs: switch over to 'check_acl' rather than 'permission()' 2009-09-08 11:09:04 -07:00
lockd
minix
ncpfs
nfs Merge branch 'nfs-for-2.6.32' 2009-09-11 14:59:37 -04:00
nfs_common
nfsd Merge branch 'nfs-for-2.6.32' 2009-09-11 14:59:37 -04:00
nilfs2 fs/Kconfig: move nilfs2 outside misc filesystems 2009-09-14 18:27:16 +09:00
nls
notify inotify: update the group mask on mark addition 2009-08-28 12:51:14 -04:00
ntfs ntfs: Use new syncing helpers and update comments 2009-09-14 17:08:16 +02:00
ocfs2 ocfs2: Update syncing after splicing to match generic version 2009-09-14 17:08:16 +02:00
omfs
openpromfs
partitions
proc
qnx4
quota
ramfs writeback: add name to backing_dev_info 2009-09-11 09:20:26 +02:00
reiserfs
romfs
smbfs
squashfs
sysfs Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block 2009-09-11 09:17:05 -07:00
sysv
ubifs writeback: add name to backing_dev_info 2009-09-11 09:20:26 +02:00
udf udf: Fix possible corruption when close races with write 2009-09-14 19:13:01 +02:00
ufs
xfs xfs: Convert sync_page_range() to simple filemap_write_and_wait_range() 2009-09-14 17:08:17 +02:00
aio.c
anon_inodes.c
attr.c
bad_inode.c
binfmt_aout.c
binfmt_elf_fdpic.c
binfmt_elf.c binfmt_elf: fix PT_INTERP bss handling 2009-09-10 20:11:12 +10:00
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio-integrity.c
bio.c
block_dev.c vfs: Rename generic_file_aio_write_nolock 2009-09-14 17:08:15 +02:00
buffer.c writeback: switch to per-bdi threads for flushing data 2009-09-11 09:20:25 +02:00
char_dev.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2009-09-11 09:19:35 -07:00
compat_binfmt_elf.c
compat_ioctl.c
compat.c exec: do not sleep in TASK_TRACED under ->cred_guard_mutex 2009-09-05 11:30:42 -07:00
dcache.c
dcookies.c
direct-io.c
drop_caches.c
eventfd.c
eventpoll.c
exec.c exec: do not sleep in TASK_TRACED under ->cred_guard_mutex 2009-09-05 11:30:42 -07:00
fcntl.c
fifo.c
file_table.c
file.c
filesystems.c
fs_struct.c
fs-writeback.c vfs: Remove generic_osync_inode() and sync_page_range{_nolock}() 2009-09-14 17:08:17 +02:00
generic_acl.c
inode.c
internal.h
ioctl.c
ioprio.c
Kconfig fs/Kconfig: move nilfs2 outside misc filesystems 2009-09-14 18:27:16 +09:00
Kconfig.binfmt
libfs.c
locks.c Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-09-11 13:23:18 -07:00
Makefile
mbcache.c
mpage.c
namei.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 2009-09-11 08:55:49 -07:00
namespace.c
nfsctl.c
no-block.c
open.c CRED: Add some configurable debugging [try #6] 2009-09-02 21:29:01 +10:00
pipe.c
pnode.c
pnode.h
posix_acl.c
read_write.c
read_write.h
readdir.c
select.c
seq_file.c
signalfd.c
splice.c vfs: Introduce new helpers for syncing after writing to O_SYNC file or IS_SYNC inode 2009-09-14 17:08:15 +02:00
stack.c
stat.c
super.c writeback: switch to per-bdi threads for flushing data 2009-09-11 09:20:25 +02:00
sync.c fsync: wait for data writeout completion before calling ->fsync 2009-09-14 17:08:17 +02:00
timerfd.c
utimes.c
xattr_acl.c
xattr.c VFS: Factor out part of vfs_setxattr so it can be called from the SELinux hook for inode_setsecctx. 2009-09-10 10:11:22 +10:00