* [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).