lkml.org 
[lkml]   [2008]   [Oct]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PROBLEM] hard-lock with kmemtrace, relayfs, and splice
From
Date
Hi Pekka,

On Mon, 2008-10-13 at 09:57 +0300, Pekka Enberg wrote:
> Hi Tom,
>
> On Fri, 2008-10-10 at 23:58 -0500, Tom Zanussi wrote:
> > It looks like you hit the same problem as described here:
> >
> > commit 8191ecd1d14c6914c660dfa007154860a7908857
> >
> > splice: fix infinite loop in generic_file_splice_read()
> >
> > relay uses the same loop but it never got noticed or fixed. Can you try
> > the following patch:
> >
> > diff --git a/kernel/relay.c b/kernel/relay.c
> > index 8d13a78..6a4d439 100644
> > --- a/kernel/relay.c
> > +++ b/kernel/relay.c
> > @@ -1318,12 +1318,9 @@ static ssize_t relay_file_splice_read(struct file *in,
> > if (ret < 0)
> > break;
> > else if (!ret) {
> > - if (spliced)
> > - break;
> > - if (flags & SPLICE_F_NONBLOCK) {
> > + if (flags & SPLICE_F_NONBLOCK)
> > ret = -EAGAIN;
> > - break;
> > - }
> > + break;
> > }
> >
> > *ppos += ret;
> >
>
> Indeed. That fixes the deadlock.
>
> However, now I don't get anything to the cpu*.out files if I run
> kmemtraced with kmemtrace disabled. If I enable kmemtrace manually and
> then run kmemtraced, I do receive some data. I did apply the
> kmemtrace-user patch as well.
>
> Hmm?

To me, that sounds like how it should work - if kmemtrace is disabled,
it shouldn't be logging anything, and that's in fact what I saw when
debugging this - it started out disabled and therefore nothing being
logged to relay (printks confirmed that). When I wrote 1 to the enabled
file, data started getting logged to relay and to the *.out files.

So I don't know why the enabled state behaves the way it does, or if
it's unexpected, but that anyway doesn't seem like a relay problem to
me.

Tom

>
> Pekka
>



\
 
 \ /
  Last update: 2008-10-14 06:07    [from the cache]
©2003-2011 Jasper Spaans