692 brelse(bh);
693 gfs2_log_lock(sdp);
694 continue;
695 }
696 list_del_init(&bd->bd_le.le_list);
697 }
698 gfs2_log_unlock(sdp);
699}
700
701
702
703
704
705
706
707
708void __gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl)
709{
710 struct gfs2_ail *ai;
711
712 down_write(&sdp->sd_log_flush_lock);
713
714
715 if (gl && !test_bit(GLF_LFLUSH, &gl->gl_flags)) {
716 up_write(&sdp->sd_log_flush_lock);
717 return;
718 }
719
720 ai = kzalloc(sizeof(struct gfs2_ail), GFP_NOFS | __GFP_NOFAIL);
721 INIT_LIST_HEAD(&ai->ai_ail1_list);
722 INIT_LIST_HEAD(&ai->ai_ail2_list);
723
724 if (sdp->sd_log_num_buf != sdp->sd_log_commited_buf) {
725 printk(KERN_INFO "GFS2: log buf %u %u\n", sdp->sd_log_num_buf,
726 sdp->sd_log_commited_buf);
727 gfs2_assert_withdraw(sdp, 0);
728 }
729 if (sdp->sd_log_num_databuf != sdp->sd_log_commited_databuf) {
730 printk(KERN_INFO "GFS2: log databuf %u %u\n",
731 sdp->sd_log_num_databuf, sdp->sd_log_commited_databuf);
732 gfs2_assert_withdraw(sdp, 0);