Re: submit_bh leaves interrupts on upon return
From: Jeff V. Merkey
Date: Thu Jun 03 2004 - 11:48:05 EST
Jens Axboe wrote:
On Wed, Jun 02 2004, Jeff V. Merkey wrote:
Any reason why submit_bh should turn on interrupts after being called by
a process with ints off in 2.4.20? I see it's possible to sleep during
elevatoring, but why does it need to leave interrupts on if the calling
state was with ints off.
It's illegal to call it with interrupts off, so... __make_request()
doesn't save interrupt state, so you will always leave with interrupts
enabled.
Jens
I noticed in the code it does not check for this when make_request is
called, so I altered the calling sequence to call with ints on. I don't
see much of a performance difference either way, so calling with ints on
was easy to instrument. I am posting about 80,000+ buffer heads per
second in with what I am doing, so filling out buffer_head structures
and submitting them ad hoc was causing some interrupt windows where the
chains were getting corrupted. I altered the calling sequence and added
atomic counters so I can submit and call with ints on to avoid the
corruption. One of the troublesome aspects of the manner in which
make_request is implemented in always needing a context of a thread for
sleeping to submit asynch I/O limits the ability to gang schedule large
disk I/O from the b_end_io callback. Would make performance a lot more
spectacular if it worked this way, but I am seeing good enough
performance with it left the way it is. 3Ware's 66Mhz ATA adapter in
this implementation is reaching almost 400 MB/S throughput on 2.4.20. I
have not tried this on 2.6 yet, but will later this month.
Also, I ported the kernel debugger from MANOS to Linux and made a lot of
significant enhancements and www.devicelogics.com is distributing it
from their website. If anyone wants a more pleasant debugger for the
kernel to work with, they are allowing downloads of the modules with a
patch. Not free (what is in this world) but very nice to work with.
Thanks for the response. Sorry I was out of touch for about a year. I
was going through a very nasty divorce with my wife of 24 years and I
discovered when something like that is happening in your life, you don't
have much attention for much else.
Jeff
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/