Messages in this thread Patch in this message | | | Date | Fri, 29 Mar 1996 09:35:53 +0000 (GMT) | From | "J.J. Burgess" <> | Subject | md problems |
| |
Hi all,
Note this probably doesn't fix the 'saw bad status errors', but this will stop md hanginging.
I think i've found whats been crashing md all this time. This happens when the request list gets full of md requests waiting to get processed by the remap() system, md then has to generate more requests for the queued ones to complete, to do this it has to wait for a request to become free, of course they won't as they are all ones waiting to be processed by itself.
This also seems to agree with my experiences that the most likely thing to crash my is an operation like 'rm -fR linux' which result in many dirty page buffers from all over the disc suddenly being written out of the buffer cache.
The patch to get around this makes ll_rw_blk.c only fill half of the request structures with unprocessed md requests thus leaving plenty of room for the system to generate the ones needed to actually transfer the disc info.
The most requests which can be generated from a single md request is equal to the number of stripes (since contiguous requests to a stripe drive also are concatted into one request if possible)
Try this patch against 1.3.79 and see.
[I'm going home for two weeks now, i'll be off-line :-( so good luck.]
--- ll_rw_blk-clean.c Thu Mar 28 17:50:32 1996 +++ ll_rw_blk.c Thu Mar 28 17:53:18 1996 @@ -316,7 +316,7 @@ return; } kstat.pgpgin++; - max_req = NR_REQUEST; /* reads take precedence */ + max_req = (major == MD_MAJOR) ? NR_REQUEST/2 : NR_REQUEST; /* reads take precedence */ break; case WRITEA: rw_ahead = 1; @@ -332,7 +332,7 @@ * requests are only for reads. */ kstat.pgpgout++; - max_req = (NR_REQUEST * 2) / 3; + max_req = (major == MD_MAJOR) ? NR_REQUEST/3 : (NR_REQUEST * 2) / 3; break; default: printk("make_request: bad block dev cmd, must be R/W/RA/WA\n");
Thanks.
.. . . . . . . . . . . . . . .. :: : : Jon Burgess 01223-461907 : : :: :: : jjb1003@cam.ac.uk : : :: :: : : : : : : : : : : : : : ::
| |