Re: [-mm patch] fix locking in __make_request (was Re: 2.6.20-mm2: Oops in generic_make_request)

Frederik Deweerdt
2007-02-19T14:30:00Z

On Mon, Feb 19, 2007 at 02:34:53PM +0100, Jens Axboe wrote:
> On Tue, Feb 20 2007, Frederik Deweerdt wrote:
> > On Sun, Feb 18, 2007 at 09:05:33PM +0100, Michal Piotrowski wrote:
> > > On 18/02/07, Andrew Morton <akpm@linux-foundation.org> wrote:
> > > >On Sun, 18 Feb 2007 18:58:05 +0100 Mattia Dongili <malattia@linux.it> wrote:
> > > >
> > > >> On Sun, Feb 18, 2007 at 02:06:59PM +0100, Laurent Riffard wrote:
> > > >> > Le 18.02.2007 06:51, Andrew Morton a ?crit :
> > > >> > >Temporarily at
> > > >> > >
> > > >> > > http://userweb.kernel.org/~akpm/2.6.20-mm2/
> > > >> > >
> > > >> > >Will appear later at
> > > >> > >
> > > >> > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm2/
> > > >> >
> > > >> > Hello, I've got a fully reproducible Oops. I just have to boot to
> > > >> > runlevel 2 and wait less than one minute.
> > > >>
> > > >> Maybe this oops is related too?
> > > >
> > > >Looks that way.
> > > >
> > Hi Michal,
> >
> > This seems to be a locking problem in __make_request, check_plug_merge()
> > should be called with the q->queue_lock held.
> > Could you try the following patch? It silenced the oops for me.
>
> Just back from travel... That is not correct, why do you think the queue
> lock needs to be held there?
The unprotected:
check_plug_merge
-> bio_attempt_back_merge
-> ll_back_merge_fn
-> q->last_merge = NULL
made me think that. I don't know the code enough though.

Regards,
Frederik
>
> --
> Jens Axboe
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>