[Cluster-devel] [PATCH 6/8] gfs2: instrumentation wrt log_flush stuck

Andreas Gruenbacher agruenba at redhat.com
Fri Jun 5 16:18:03 UTC 2020


On Fri, Jun 5, 2020 at 6:15 PM Bob Peterson <rpeterso at redhat.com> wrote:
> ----- Original Message -----
> > On Fri, Jun 5, 2020 at 4:49 PM Bob Peterson <rpeterso at redhat.com> wrote:
> > > Hi Andreas,
> > >
> > > ----- Original Message -----
> > > (snip)
> > > > > @@ -970,7 +969,16 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct
> > > > > gfs2_glock *gl, u32 flags)
> > > > >
> > > > >         if (!(flags & GFS2_LOG_HEAD_FLUSH_NORMAL)) {
> > > > >                 if (!sdp->sd_log_idle) {
> > > > > +                       unsigned long start = jiffies;
> > > > > +
> > > > >                         for (;;) {
> > > > > +                               if (time_after(jiffies, start + (HZ *
> > > > > 600))) {
> > > >
> > > > This should probably have some rate limiting as well, for example:
> > >
> > > Seems unnecessary. If the log flush gets stuck, the message will be printed
> > > once, and at most every 10 minutes.
> >
> > No, after ten minutes, the message will actually be printed for each
> > iteration of the loop. That's exactly why I was suggesting the rate
> > limiting.
>
> No, after ten minutes it dumps the ail list so you can see the problem
> and exits the loop with "break;".
>
> The next time it enters the loop, it starts with a new value of start
> which doesn't expire for another ten minutes.

Ok, I misread.

Thanks,
Andreas




More information about the Cluster-devel mailing list