cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] [GFS2 PATCH] GFS2: Re-add a call to log_flush_wait when flushing the journal
       [not found] <1832141140.13172193.1394634781361.JavaMail.zimbra@redhat.com>
@ 2014-03-12 14:34 ` Bob Peterson
  2014-03-12 14:48   ` Steven Whitehouse
  0 siblings, 1 reply; 2+ messages in thread
From: Bob Peterson @ 2014-03-12 14:34 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Hi,

Upstream commit 34cc178 changed a line of code from calling function
log_flush_commit to calling log_write_header. This had the effect of
eliminating a call to function log_flush_wait. That causes the journal
to skip over log headers, which results in multiple wrap points,
which itself leads to infinite loops in journal replay, both in the
kernel code and fsck.gfs2 code. This patch re-adds that call.

Regards,

Bob Peterson
Red Hat File Systems

Signed-off-by: Bob Peterson <rpeterso@redhat.com> 
---
diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c
index edbd461..4a14d50 100644
--- a/fs/gfs2/log.c
+++ b/fs/gfs2/log.c
@@ -702,6 +702,7 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl)
 	gfs2_log_flush_bio(sdp, WRITE);
 
 	if (sdp->sd_log_head != sdp->sd_log_flush_head) {
+		log_flush_wait(sdp);
 		log_write_header(sdp, 0);
 	} else if (sdp->sd_log_tail != current_tail(sdp) && !sdp->sd_log_idle){
 		atomic_dec(&sdp->sd_log_blks_free); /* Adjust for unreserved buffer */



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [Cluster-devel] [GFS2 PATCH] GFS2: Re-add a call to log_flush_wait when flushing the journal
  2014-03-12 14:34 ` [Cluster-devel] [GFS2 PATCH] GFS2: Re-add a call to log_flush_wait when flushing the journal Bob Peterson
@ 2014-03-12 14:48   ` Steven Whitehouse
  0 siblings, 0 replies; 2+ messages in thread
From: Steven Whitehouse @ 2014-03-12 14:48 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Hi,

On Wed, 2014-03-12 at 10:34 -0400, Bob Peterson wrote:
> Hi,
> 
> Upstream commit 34cc178 changed a line of code from calling function
> log_flush_commit to calling log_write_header. This had the effect of
> eliminating a call to function log_flush_wait. That causes the journal
> to skip over log headers, which results in multiple wrap points,
> which itself leads to infinite loops in journal replay, both in the
> kernel code and fsck.gfs2 code. This patch re-adds that call.
> 
> Regards,
> 
> Bob Peterson
> Red Hat File Systems
> 
Well spotted! Looks good. I've added this to the -nmw tree as well.
Thanks,

Steve.

> Signed-off-by: Bob Peterson <rpeterso@redhat.com> 
> ---
> diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c
> index edbd461..4a14d50 100644
> --- a/fs/gfs2/log.c
> +++ b/fs/gfs2/log.c
> @@ -702,6 +702,7 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl)
>  	gfs2_log_flush_bio(sdp, WRITE);
>  
>  	if (sdp->sd_log_head != sdp->sd_log_flush_head) {
> +		log_flush_wait(sdp);
>  		log_write_header(sdp, 0);
>  	} else if (sdp->sd_log_tail != current_tail(sdp) && !sdp->sd_log_idle){
>  		atomic_dec(&sdp->sd_log_blks_free); /* Adjust for unreserved buffer */
> 




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-03-12 14:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1832141140.13172193.1394634781361.JavaMail.zimbra@redhat.com>
2014-03-12 14:34 ` [Cluster-devel] [GFS2 PATCH] GFS2: Re-add a call to log_flush_wait when flushing the journal Bob Peterson
2014-03-12 14:48   ` Steven Whitehouse

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).