GEOM + RAID5 help

Lukas Ertl le at FreeBSD.org
Sat Feb 21 07:41:10 PST 2004


Hi,

I'm currently implementing the RAID5 bit of geom_vinum, and I could use a
little help.  One problem I'm faced is that if the subdisk where the
original request should go to is down, I need to read all the other
stripes, recalculate the parity with the original data, and then write the
parity stripe (in the BIO_WRITE case), or read all other stripes plus the
parity to recalculate the desired data (in the BIO_READ case).

If I'm not mistaken then I'm not allowed to use g_read_data in the IO
path, so how can I correctly get at the data of the other stripes?  Should
I create my own bio (how?) with the appropriate bio_cmd and send it down
the path using g_io_request (where should I issue it?  In my bio_done
routine?)?

Thanks for all pointers and suggestions.

-- 
Lukas Ertl                           http://mailbox.univie.ac.at/~le/
le at FreeBSD.org                       http://people.freebsd.org/~le/


More information about the freebsd-geom mailing list