what is needed to make RAID1 take a req in 2.2.*??

Peter T. Breuer (ptb@it.uc3m.es)
Mon, 6 Dec 1999 00:51:39 +0100 (MET)


It's driving me crazy. It must be the end_io function. The following
scheme _works_ in 2.2.10 for passing a block request from one device to
the loop device loop0 as target, but not to the raid1 mirror device md0.

0) get request on a.n.other block device queue
1) take it off original queue
2) rewrite req->re_dev = target and
for all bh in req, bh->b_dev = bh->b_rdev = target;
3) put req on target queue with req->next = blk_dev[MAJOR(target)].current_r.
and blk_dev[MAJOR(target)].current_request = req. (i'll even skip
a plug if you like).
4) run target request fn blk_dev[MAJOR(target)].request_fn().

so why not for the raid1 device? Sigh. Mumble mumble .. must be
b->b_end_io or some fiddling with other states. What driver does
anything like this? Loop seems to attack the disk block directly.

Thanks for any guidance that can be given!

Peter

-
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/