Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Feb 2004 16:40:56 +0100 (CET)
From:      Lukas Ertl <le@FreeBSD.org>
To:        geom@FreeBSD.org
Subject:   GEOM + RAID5 help
Message-ID:  <20040221162942.P19540@leelou.in.tern>

next in thread | raw e-mail | index | archive | help
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@FreeBSD.org                       http://people.freebsd.org/~le/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040221162942.P19540>