kernel-hacking-2024-linux-s.../fs/gfs2
Benjamin Marzinski 1bc333f4cf GFS2: don't overrun reserved revokes
When run during fsync, a gfs2_log_flush could happen between the
time when gfs2_ail_flush checked the number of blocks to revoke,
and when it actually started the transaction to do those revokes.
This occassionally caused it to need more revokes than it reserved,
causing gfs2 to crash.

Instead of just reserving enough revokes to handle the blocks that
currently need them, this patch makes gfs2_ail_flush reserve the
maximum number of revokes it can, without increasing the total number
of reserved log blocks. This patch also passes the number of reserved
revokes to __gfs2_ail_flush() so that it doesn't go over its limit
and cause a crash like we're seeing. Non-fsync calls to __gfs2_ail_flush
will still cause a BUG() necessary revokes are skipped.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2013-08-19 09:33:16 +01:00
..
acl.c
acl.h
aops.c gfs2: use ->invalidatepage() length argument 2013-05-21 23:58:49 -04:00
bmap.c GFS2: Reserve journal space for quota change in do_grow 2013-06-27 18:16:27 +01:00
bmap.h
dentry.c Don't pass inode to ->d_hash() and ->d_compare() 2013-06-29 12:57:36 +04:00
dir.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw 2013-07-02 09:41:18 -07:00
dir.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw 2013-07-02 09:41:18 -07:00
export.c [readdir] constify ->actor 2013-06-29 12:57:05 +04:00
file.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-07-03 09:10:19 -07:00
gfs2.h
glock.c
glock.h
glops.c GFS2: don't overrun reserved revokes 2013-08-19 09:33:16 +01:00
glops.h
incore.h
inode.c GFS2: Fix typo in gfs2_create_inode() 2013-08-19 09:32:29 +01:00
inode.h GFS2: Add atomic_open support 2013-06-14 11:17:15 +01:00
Kconfig Finally eradicate CONFIG_HOTPLUG 2013-06-03 14:20:18 -07:00
lock_dlm.c
log.c GFS2: aggressively issue revokes in gfs2_log_flush 2013-06-19 09:41:59 +01:00
log.h GFS2: aggressively issue revokes in gfs2_log_flush 2013-06-19 09:41:59 +01:00
lops.c GFS2: aggressively issue revokes in gfs2_log_flush 2013-06-19 09:41:59 +01:00
lops.h GFS2: Eliminate gfs2_rg_lops 2013-06-05 09:50:40 +01:00
main.c GFS2: WQ_NON_REENTRANT is meaningless and going away 2013-08-19 09:33:01 +01:00
Makefile
meta_io.c GFS2: aggressively issue revokes in gfs2_log_flush 2013-06-19 09:41:59 +01:00
meta_io.h
ops_fstype.c GFS2: fix error propagation in init_threads() 2013-06-06 09:52:29 +01:00
quota.c GFS2: Remove no-op wrapper function 2013-06-05 09:51:23 +01:00
quota.h
recovery.c
recovery.h
rgrp.c GFS2: Fix fstrim boundary conditions 2013-06-19 21:41:26 +01:00
rgrp.h
super.c GFS2: Don't cache iopen glocks 2013-06-03 16:40:22 +01:00
super.h
sys.c
sys.h
trace_gfs2.h
trans.c GFS2: fix warning message 2013-06-19 21:29:19 +01:00
trans.h
util.c
util.h
xattr.c
xattr.h