From owner-freebsd-geom@FreeBSD.ORG Sat Feb 21 07:41:10 2004 Return-Path: Delivered-To: freebsd-geom@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 242E616A4CE for ; Sat, 21 Feb 2004 07:41:10 -0800 (PST) Received: from mailbox.univie.ac.at (mail.univie.ac.at [131.130.1.27]) by mx1.FreeBSD.org (Postfix) with ESMTP id 795D743D2D for ; Sat, 21 Feb 2004 07:41:09 -0800 (PST) (envelope-from le@FreeBSD.org) Received: from leelou (adslle.cc.univie.ac.at [131.130.102.11]) i1LFf1QG1258128 for ; Sat, 21 Feb 2004 16:41:05 +0100 Date: Sat, 21 Feb 2004 16:40:56 +0100 (CET) From: Lukas Ertl To: geom@FreeBSD.org Message-ID: <20040221162942.P19540@leelou.in.tern> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-DCC-ZID-Univie-Metrics: mailbox 4246; Body=0 Fuz1=0 Fuz2=0 Subject: GEOM + RAID5 help X-BeenThere: freebsd-geom@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: GEOM-specific discussions and implementations List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Feb 2004 15:41:10 -0000 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/