Messages in this thread Patch in this message | | | Date | Sat, 4 Mar 2000 20:11:02 +0100 (CET) | From | Andrea Arcangeli <> | Subject | Re: 2.3.47: elevator nr_segments x should be x+1 |
| |
On Tue, 22 Feb 2000, Andrea Arcangeli wrote:
>On 21 Feb 2000, David Wragg wrote: > >>The bad news is this: >> >>03:08: elevator nr_segments 197 should be 198 >>03:08: elevator nr_segments 239 should be 240 > >Don't worry about this. It's can't harm per se. Anyway it's interesting to >discover why this is happening. Can you reproduce?
This patch against 2.3.49 will fix the above warning:
--- elevator/drivers/block/DAC960.c.~1~ Fri Mar 3 02:19:23 2000 +++ elevator/drivers/block/DAC960.c Sat Mar 4 19:53:03 2000 @@ -1051,20 +1051,23 @@ int max_segments; DAC960_Controller_T * Controller = q->queuedata; int total_segments = req->nr_segments + next->nr_segments; + int same_segment; max_segments = Controller->MaxSegmentsPerRequest[MINOR(req->rq_dev)]; if (__max_segments < max_segments) max_segments = __max_segments; + same_segment = 0; if (req->bhtail->b_data + req->bhtail->b_size == next->bh->b_data) { total_segments--; - q->nr_segments--; + same_segment = 1; } if (total_segments > max_segments) return 0; + q->nr_segments -= same_segment; req->nr_segments = total_segments; return 1; } --- elevator/drivers/block/ll_rw_blk.c.~1~ Sun Feb 27 06:19:42 2000 +++ elevator/drivers/block/ll_rw_blk.c Sat Mar 4 19:53:58 2000 @@ -212,15 +212,18 @@ struct request *next, int max_segments) { int total_segments = req->nr_segments + next->nr_segments; + int same_segment; + same_segment = 0; if (req->bhtail->b_data + req->bhtail->b_size == next->bh->b_data) { total_segments--; - q->nr_segments--; + same_segment = 1; } if (total_segments > max_segments) return 0; + q->nr_segments -= same_segment; req->nr_segments = total_segments; return 1; }
You can test it while I fix the other minor glitches.
Andrea
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |