linux/fs/gfs2
Bob Peterson bdcb88562c [GFS2] soft lockup detected in databuf_lo_before_commit
This is part 2 of the patch for bug #245832, part 1 of which is already
in the git tree.

The problem was that sdp->sd_log_num_databuf was not always being
protected by the gfs2_log_lock spinlock, but the sd_log_le_databuf
(which it is supposed to reflect) was protected.  That meant there
was a timing window during which gfs2_log_flush called
databuf_lo_before_commit and the count didn't match what was
really on the linked list in that window.  So when it ran out of
items on the linked list, it decremented total_dbuf from 0 to -1 and
thus never left the "while(total_dbuf)" loop.

The solution is to protect the variable sdp->sd_log_num_databuf so
that the value will always match the contents of the linked list,
and therefore the number will never go negative, and therefore, the
loop will be exited properly.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2007-08-14 10:32:04 +01:00
..
locking [GFS2] return conflicts for GETLK 2007-07-09 08:23:33 +01:00
acl.c Introduce is_owner_or_cap() to wrap CAP_FOWNER use with fsuid check 2007-07-17 12:00:03 -07:00
acl.h
bmap.c [GFS2] Fix gfs2_block_truncate_page err return 2007-07-09 08:23:54 +01:00
bmap.h
daemon.c [GFS2] System won't suspend with GFS2 file system mounted 2007-07-09 08:24:04 +01:00
daemon.h
dir.c [GFS2] Obtaining no_formal_ino from directory entry 2007-07-09 08:24:08 +01:00
dir.h [GFS2] Clean up inode number handling 2007-07-09 08:22:24 +01:00
eaops.c Remove capability.h from mm.h 2007-07-16 09:05:45 -07:00
eaops.h
eattr.c [GFS2] Add nanosecond timestamp feature 2007-07-09 08:23:12 +01:00
eattr.h
gfs2.h
glock.c [GFS2] Simplify multiple glock aquisition 2007-07-09 08:23:50 +01:00
glock.h [GFS2] Fix deallocation issues 2007-07-09 08:23:36 +01:00
glops.c [GFS2] flush the glock completely in inode_go_sync 2007-07-09 08:22:07 +01:00
glops.h
incore.h [GFS2] assertion failure after writing to journaled file, umount 2007-07-09 08:23:47 +01:00
inode.c [GFS2] Remove i_mode passing from NFS File Handle 2007-07-09 08:24:11 +01:00
inode.h [GFS2] Remove i_mode passing from NFS File Handle 2007-07-09 08:24:11 +01: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] Small fixes to logging code 2007-07-09 15:43:07 +01:00
log.h
lops.c [GFS2] soft lockup detected in databuf_lo_before_commit 2007-08-14 10:32:04 +01:00
lops.h [GFS2] assertion failure after writing to journaled file, umount 2007-07-09 08:23:47 +01:00
main.c mm: Remove slab destructors from kmem_cache_create(). 2007-07-20 10:11:58 +09:00
Makefile [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
meta_io.c [GFS2] assertion failure after writing to journaled file, umount 2007-07-09 08:23:47 +01:00
meta_io.h [GFS2] Clean up inode number handling 2007-07-09 08:22:24 +01:00
mount.c [GFS2] remounting w/o acl option leaves acls enabled 2007-07-09 08:24:01 +01:00
mount.h
ops_address.c mm: merge populate and nopage into fault (fixes nonlinear) 2007-07-19 10:04:41 -07:00
ops_address.h [GFS2] Addendum patch 2 for gfs2_grow 2007-07-09 08:22:19 +01:00
ops_dentry.c [GFS2] Clean up inode number handling 2007-07-09 08:22:24 +01:00
ops_dentry.h
ops_export.c knfsd: exportfs: add exportfs.h header 2007-07-17 10:23:06 -07:00
ops_file.c rename setlease to generic_setlease 2007-07-31 15:39:43 -07:00
ops_file.h
ops_fstype.c [GFS2] Obtaining no_formal_ino from directory entry 2007-07-09 08:24:08 +01:00
ops_fstype.h [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
ops_inode.c [GFS2] inode size inconsistency 2007-07-09 08:23:59 +01:00
ops_inode.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
ops_super.c [GFS2] Fix deallocation issues 2007-07-09 08:23:36 +01:00
ops_super.h [PATCH] Mark struct super_operations const 2007-02-12 09:48:47 -08:00
ops_vm.c mm: fault feedback #2 2007-07-19 10:04:41 -07:00
ops_vm.h
quota.c [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
quota.h
recovery.c [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
recovery.h
rgrp.c [GFS2] Remove i_mode passing from NFS File Handle 2007-07-09 08:24:11 +01:00
rgrp.h [GFS2] Addendum patch 2 for gfs2_grow 2007-07-09 08:22:19 +01:00
super.c [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
super.h [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
sys.c remove "struct subsystem" as it is no longer needed 2007-05-02 18:57:59 -07:00
sys.h
trans.c
trans.h
util.c [GFS2] Fix sign problem in quota/statfs and cleanup _host structures 2007-07-09 08:23:10 +01:00
util.h