kernel-fxtec-pro1x/fs/gfs2
Josef Whiter a13cbe3753 [GFS2] fix hangup when multiple processes are trying to write to the same file
This fixes a problem I encountered while running bonnie++.  When you have one
thread that opens a file and starts to write to it, and then another thread that
tries to open and write to the same file, the second thread will loop forever
trying to grab the inode lock for that inode.  Basically we come in through
generic_buffered_file_write, which calls gfs2_prepare_write, which then attempts
to grab the glock.  Because we don't own the lock, gfs2_prepare_write gets
GLR_TRYFAILED, which returns AOP_TRUNCATED_PAGE to generic_buffered_file_write.
At this point generic_buffered_file_write loops around again and immediately
retries the prepare_write.  This means that the second process never gets off of
the processor in order to allow the process that holds the lock to finish its
work and let go of the lock.  This patch makes gfs2_glock_nq schedule() if it
gets back a GLR_TRYFAILED, which resolves this problem.

Signed-off-by: Josef Whiter <jwhiter@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2007-03-07 13:58:02 -05:00
..
locking [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
acl.c [GFS2] Remove gfs2_check_acl() 2006-11-30 10:37:32 -05:00
acl.h [GFS2] Remove gfs2_check_acl() 2006-11-30 10:37:32 -05:00
bmap.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
bmap.h
daemon.c [GFS2] Fix journal flush problem 2006-11-30 10:36:42 -05:00
daemon.h
dir.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
dir.h [GFS2] Clean up/speed up readdir 2007-02-05 13:37:04 -05:00
eaops.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
eaops.h
eattr.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
eattr.h
gfs2.h
glock.c [GFS2] Put back semaphore to avoid umount problem 2007-02-05 13:38:14 -05:00
glock.h [GFS2] Tidy up glops calls 2007-02-05 13:37:26 -05:00
glops.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
glops.h
incore.h [GFS2] Tidy up glops calls 2007-02-05 13:37:26 -05:00
inode.c [GFS2] Fix unlink deadlocks 2007-02-05 13:38:17 -05:00
inode.h [GFS2] make gfs2_change_nlink_i() static 2007-02-05 13:36:49 -05:00
Kconfig [DLM/GFS2] indent help text 2007-02-05 13:38:20 -05:00
lm.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
lm.h
locking.c
log.c [GFS2] fs/gfs2/log.c:log_bmap() fix printk format warning 2006-11-30 10:37:04 -05:00
log.h [GFS2] Move gfs2_meta_syncfs() into log.c 2006-11-30 10:36:45 -05:00
lops.c [GFS2] Fix list corruption in lops.c 2007-02-05 13:37:56 -05:00
lops.h
main.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
Makefile
meta_io.c [PATCH] Transform kmem_cache_alloc()+memset(0) -> kmem_cache_zalloc(). 2007-02-11 10:51:27 -08:00
meta_io.h [GFS2] Move gfs2_meta_syncfs() into log.c 2006-11-30 10:36:45 -05:00
mount.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
mount.h
ondisk.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ops_address.c [GFS2] fix hangup when multiple processes are trying to write to the same file 2007-03-07 13:58:02 -05:00
ops_address.h
ops_dentry.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ops_dentry.h
ops_export.c [GFS2] NFS filehandle check 2007-03-07 13:57:34 -05:00
ops_export.h
ops_file.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ops_file.h
ops_fstype.c [GFS2] add newline to printk message 2007-03-07 13:57:10 -05:00
ops_fstype.h
ops_inode.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ops_inode.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
ops_super.c [PATCH] Mark struct super_operations const 2007-02-12 09:48:47 -08:00
ops_super.h [PATCH] Mark struct super_operations const 2007-02-12 09:48:47 -08:00
ops_vm.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ops_vm.h
quota.c [GFS2] fix locking mistake 2007-03-07 13:56:41 -05:00
quota.h
recovery.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
recovery.h
rgrp.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
rgrp.h
super.c [GFS2] Remove local exclusive glock mode 2007-02-05 13:37:20 -05:00
super.h
sys.c [GFS2] Remove the "greedy" function from glock.[ch] 2007-02-05 13:37:14 -05:00
sys.h
trans.c
trans.h
util.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
util.h Merge master.kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw 2006-12-07 09:13:20 -08:00