Re: [PATCH] i2o_block Fix, possible CFQ elevator problem?

Jens Axboe
2004-04-20T09:05:30Z

On Mon, Apr 19 2004, Warren Togami wrote:
> Jens Axboe wrote:
> >>We figured removing error handling was not safe, the previous post was
> >>only reporting test results to ask for more suggestions. I have now
> >>tested your suggested patch above and it seems to crash in the same way
> >>as originally.
> >>
> >>http://togami.com/~warren/archive/2004/i2o_cfq_quad_bonnie2.txt
> >
> >
> >As a temporary safe work-around, you can apply this patch.
> >
> >
> >>This makes me curious, the other elevators lacked this type of error
> >>checking. Did this mean they were possibly allowing data corruption to
> >>happen with buggy drivers like this? Kind of scary! We were lucky to
> >>test this now, because this was one of the first FC kernels that
> >>included cfq by default.
> >
> >
> >Not necessarily, it's most likely a CFQ bug. Otherwise it would have
> >surfaced before :-)
> >
>
> I forgot to mention in the previous reports:
>
> Prior to three of your original suggested cleanups of i2o_block, four
> simultaneous bonnie++'s on four independent arrays would almost
> immediately cause the crash while running elevator=cfq. After those
> three cleanups four simultaneous bonnie++ would survive for a while
> without crashing... until you run "sync" in another terminal. We
> however did not test it enough times to determine if without "sync" it
> can survive the test run. Do you want this tested without "sync"?

Repeat the tests that made it crash. The last patch I sent should work
for you, at least until the real issue is found.

> With the deadline scheduler "sync" would take maybe 30 seconds and
> return. With the cfq scheduler "sync" would be stuck there for much
> longer, then trigger the crash. Markus has suspected that it crashes
> when sync returns, but we have not confirmed that.

Probably not the case. Running sync only initiates the dirty data
flushing, the actual write out happens out of that context. So it's
probably just running the sync that changes the timings a little bit,
triggering the bug.

--
Jens Axboe