@@ -263,16 +263,12 @@ static void clean_journal(struct gfs2_jdesc *jd,
263263 struct gfs2_log_header_host * head )
264264{
265265 struct gfs2_sbd * sdp = GFS2_SB (jd -> jd_inode );
266- u32 lblock = head -> lh_blkno ;
267266
268- gfs2_replay_incr_blk (jd , & lblock );
269- gfs2_write_log_header (sdp , jd , head -> lh_sequence + 1 , 0 , lblock ,
267+ gfs2_replay_incr_blk (jd , & head -> lh_blkno );
268+ head -> lh_sequence ++ ;
269+ gfs2_write_log_header (sdp , jd , head -> lh_sequence , 0 , head -> lh_blkno ,
270270 GFS2_LOG_HEAD_UNMOUNT | GFS2_LOG_HEAD_RECOVERY ,
271271 REQ_PREFLUSH | REQ_FUA | REQ_META | REQ_SYNC );
272- if (jd -> jd_jid == sdp -> sd_lockstruct .ls_jid ) {
273- sdp -> sd_log_flush_head = lblock ;
274- gfs2_log_incr_head (sdp );
275- }
276272}
277273
278274
@@ -457,7 +453,7 @@ void gfs2_recover_func(struct work_struct *work)
457453 if (error )
458454 goto fail_gunlock_ji ;
459455
460- error = gfs2_find_jhead (jd , & head , true );
456+ error = gfs2_find_jhead (jd , & head );
461457 if (error )
462458 goto fail_gunlock_ji ;
463459 t_jhd = ktime_get ();
@@ -533,6 +529,9 @@ void gfs2_recover_func(struct work_struct *work)
533529 ktime_ms_delta (t_rep , t_tlck ));
534530 }
535531
532+ if (jd -> jd_jid == sdp -> sd_lockstruct .ls_jid )
533+ gfs2_log_pointers_init (sdp , & head );
534+
536535 gfs2_recovery_done (sdp , jd -> jd_jid , LM_RD_SUCCESS );
537536
538537 if (jlocked ) {
@@ -580,3 +579,13 @@ int gfs2_recover_journal(struct gfs2_jdesc *jd, bool wait)
580579 return wait ? jd -> jd_recover_error : 0 ;
581580}
582581
582+ void gfs2_log_pointers_init (struct gfs2_sbd * sdp ,
583+ struct gfs2_log_header_host * head )
584+ {
585+ sdp -> sd_log_sequence = head -> lh_sequence + 1 ;
586+ gfs2_replay_incr_blk (sdp -> sd_jdesc , & head -> lh_blkno );
587+ sdp -> sd_log_tail = head -> lh_blkno ;
588+ sdp -> sd_log_flush_head = head -> lh_blkno ;
589+ sdp -> sd_log_flush_tail = head -> lh_blkno ;
590+ sdp -> sd_log_head = head -> lh_blkno ;
591+ }
0 commit comments