if (gfs2_assert_withdraw_delayed(sdp, head.lh_flags &
                                                 GFS2_LOG_HEAD_UNMOUNT))
                        return -EIO;
-               sdp->sd_log_sequence = head.lh_sequence + 1;
-               gfs2_log_pointers_init(sdp, head.lh_blkno);
+               gfs2_log_pointers_init(sdp, &head);
        }
        return 0;
 }
 
        gfs2_write_log_header(sdp, jd, head->lh_sequence + 1, 0, lblock,
                              GFS2_LOG_HEAD_UNMOUNT | GFS2_LOG_HEAD_RECOVERY,
                              REQ_PREFLUSH | REQ_FUA | REQ_META | REQ_SYNC);
-       if (jd->jd_jid == sdp->sd_lockstruct.ls_jid) {
-               sdp->sd_log_flush_head = lblock;
-               gfs2_log_incr_head(sdp);
-       }
 }
 
 
        return wait ? jd->jd_recover_error : 0;
 }
 
-void gfs2_log_pointers_init(struct gfs2_sbd *sdp, unsigned int value)
+void gfs2_log_pointers_init(struct gfs2_sbd *sdp,
+                           struct gfs2_log_header_host *head)
 {
-       if (++value == sdp->sd_jdesc->jd_blocks) {
-               value = 0;
-       }
-       sdp->sd_log_tail = value;
-       sdp->sd_log_flush_tail = value;
-       sdp->sd_log_head = value;
+       sdp->sd_log_sequence = head->lh_sequence + 1;
+       gfs2_replay_incr_blk(sdp->sd_jdesc, &head->lh_blkno);
+       sdp->sd_log_tail = head->lh_blkno;
+       sdp->sd_log_flush_head = head->lh_blkno;
+       sdp->sd_log_flush_tail = head->lh_blkno;
+       sdp->sd_log_head = head->lh_blkno;
 }
 
 int __get_log_header(struct gfs2_sbd *sdp,
                     const struct gfs2_log_header *lh, unsigned int blkno,
                     struct gfs2_log_header_host *head);
-void gfs2_log_pointers_init(struct gfs2_sbd *sdp, unsigned int value);
+void gfs2_log_pointers_init(struct gfs2_sbd *sdp,
+                           struct gfs2_log_header_host *head);
 
 #endif /* __RECOVERY_DOT_H__ */
 
 
        }
 
        /*  Initialize some head of the log stuff  */
-       sdp->sd_log_sequence = head.lh_sequence + 1;
-       gfs2_log_pointers_init(sdp, head.lh_blkno);
+       gfs2_log_pointers_init(sdp, &head);
 
        error = gfs2_quota_init(sdp);
        if (!error && gfs2_withdrawing_or_withdrawn(sdp))