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>