diff options
Diffstat (limited to 'fs/gfs2/log.c')
-rw-r--r-- | fs/gfs2/log.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c index 1e1fe8def375..d24684330bc3 100644 --- a/fs/gfs2/log.c +++ b/fs/gfs2/log.c | |||
@@ -692,20 +692,16 @@ static void gfs2_ordered_wait(struct gfs2_sbd *sdp) | |||
692 | * | 692 | * |
693 | */ | 693 | */ |
694 | 694 | ||
695 | void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl) | 695 | void __gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl) |
696 | { | 696 | { |
697 | struct gfs2_ail *ai; | 697 | struct gfs2_ail *ai; |
698 | 698 | ||
699 | down_write(&sdp->sd_log_flush_lock); | 699 | down_write(&sdp->sd_log_flush_lock); |
700 | 700 | ||
701 | if (gl) { | 701 | /* Log might have been flushed while we waited for the flush lock */ |
702 | gfs2_log_lock(sdp); | 702 | if (gl && !test_bit(GLF_LFLUSH, &gl->gl_flags)) { |
703 | if (list_empty(&gl->gl_le.le_list)) { | 703 | up_write(&sdp->sd_log_flush_lock); |
704 | gfs2_log_unlock(sdp); | 704 | return; |
705 | up_write(&sdp->sd_log_flush_lock); | ||
706 | return; | ||
707 | } | ||
708 | gfs2_log_unlock(sdp); | ||
709 | } | 705 | } |
710 | 706 | ||
711 | ai = kzalloc(sizeof(struct gfs2_ail), GFP_NOFS | __GFP_NOFAIL); | 707 | ai = kzalloc(sizeof(struct gfs2_ail), GFP_NOFS | __GFP_NOFAIL); |
@@ -823,7 +819,6 @@ void gfs2_log_shutdown(struct gfs2_sbd *sdp) | |||
823 | down_write(&sdp->sd_log_flush_lock); | 819 | down_write(&sdp->sd_log_flush_lock); |
824 | 820 | ||
825 | gfs2_assert_withdraw(sdp, !sdp->sd_log_blks_reserved); | 821 | gfs2_assert_withdraw(sdp, !sdp->sd_log_blks_reserved); |
826 | gfs2_assert_withdraw(sdp, !sdp->sd_log_num_gl); | ||
827 | gfs2_assert_withdraw(sdp, !sdp->sd_log_num_buf); | 822 | gfs2_assert_withdraw(sdp, !sdp->sd_log_num_buf); |
828 | gfs2_assert_withdraw(sdp, !sdp->sd_log_num_revoke); | 823 | gfs2_assert_withdraw(sdp, !sdp->sd_log_num_revoke); |
829 | gfs2_assert_withdraw(sdp, !sdp->sd_log_num_rg); | 824 | gfs2_assert_withdraw(sdp, !sdp->sd_log_num_rg); |