summaryrefslogtreecommitdiffstats
path: root/lib/bust_spinlocks.c
diff options
context:
space:
mode:
authorBenjamin Marzinski <bmarzins@redhat.com>2013-07-26 17:09:33 -0500
committerSteven Whitehouse <swhiteho@redhat.com>2013-08-19 09:33:16 +0100
commit1bc333f4cf601f77ba0f5046ff226fe654e83bee (patch)
treef9afd95be5ff9cfeb41050b078cb0bc78aec425d /lib/bust_spinlocks.c
parentd08fa65a81625765ff4733b4a6556b7156954073 (diff)
downloadblackbird-op-linux-1bc333f4cf601f77ba0f5046ff226fe654e83bee.tar.gz
blackbird-op-linux-1bc333f4cf601f77ba0f5046ff226fe654e83bee.zip
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>
Diffstat (limited to 'lib/bust_spinlocks.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud