lkml.org 
[lkml]   [2002]   [Jul]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [linux-lvm] LVM2 modifies the buffer_head struct?
From
On Thu, Jul 04, 2002 at 02:46:20PM +1000, Neil Brown wrote:
> I think this can work sanely and is something I have considered for
> raid1-read and multipath in md.
>
> struct privatebit {
> bio_end_io_t *oldend;
> void *oldprivate;
> ...other...stuff;
> };
>
> make_request(struct request_queue_t *q, struct buffer_head *bh, int rw)
> {
>
> struct privatebit *pb = kmalloc(...);
>
> pb->oldend = bh->b_end_io;
> pb->oldprivate = bh->b_private;
> bh->b_private = pb;
> bh->b_end_io = my_end_handler;
>
> ..remap b_rdev, b_rsector ...
>
> generic_make_request(bh, rw);
>
> }
>
> Then my_end_handler have do some local cleanup,
> re-instate oldend and oldprivate, and pass the bh back up.
> For raid1/multipath it would arrange to resubmit the request if there
> as an error.
>
> This stacks nicely and allows for the extra bit to be alloced to be
> minimal.

This is exactly what I'm doing in device-mapper :)

> Ofcourse this ceases to be an issue in 2.5 because the filesys uses
> pages or buffer_heads and the device driver uses bios.

y, 2.5 is fine.

- Joe
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:27    [W:0.045 / U:0.220 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site