From 32fe17a663470bcff500ec1d022251eb5521ca1d Mon Sep 17 00:00:00 2001 From: Peter Galbavy Date: Tue, 8 Aug 2000 16:07:46 +0000 Subject: sync RAIDframe with Gre Oster's work for NetBSD. This update incorporates changes since January 2000. RAID1 and RAID5 tested for functionality matching the 2.7 code. A number of bug fixes (including stopping a parity rebuild when unconfiguring) have been included. See Greg's RAIDframe info page: http://www.cs.usask.ca/staff/oster/raid.html The RAID_AUTOCONFIG feature set does *NOT* yet work. These features require more work throughout the boot system and as such are a big task. IMPORTANT: As with anything that is this near live data on your systems, please test carefully with existing configurations before deploying in a live system. Feedback via sendbug or mail direct to peter@wonderland.org is appreciated. --- sys/dev/raidframe/rf_copyback.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'sys/dev/raidframe/rf_copyback.c') diff --git a/sys/dev/raidframe/rf_copyback.c b/sys/dev/raidframe/rf_copyback.c index f0da14587c3..025aaaca293 100644 --- a/sys/dev/raidframe/rf_copyback.c +++ b/sys/dev/raidframe/rf_copyback.c @@ -1,5 +1,5 @@ -/* $OpenBSD: rf_copyback.c,v 1.5 2000/01/11 18:02:20 peter Exp $ */ -/* $NetBSD: rf_copyback.c,v 1.12 2000/01/09 01:29:28 oster Exp $ */ +/* $OpenBSD: rf_copyback.c,v 1.6 2000/08/08 16:07:39 peter Exp $ */ +/* $NetBSD: rf_copyback.c,v 1.14 2000/03/07 02:59:50 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -101,6 +101,8 @@ rf_CopybackReconstructedData(raidPtr) struct vattr va; struct proc *proc; + int ac; + done = 0; fcol = 0; for (frow = 0; frow < raidPtr->numRow; frow++) { @@ -129,11 +131,15 @@ rf_CopybackReconstructedData(raidPtr) if (raidPtr->raid_cinfo[frow][fcol].ci_vp != NULL) { printf("Closed the open device: %s\n", raidPtr->Disks[frow][fcol].devname); - VOP_UNLOCK(raidPtr->raid_cinfo[frow][fcol].ci_vp, 0, proc); - (void) vn_close(raidPtr->raid_cinfo[frow][fcol].ci_vp, - FREAD | FWRITE, proc->p_ucred, proc); + vp = raidPtr->raid_cinfo[frow][fcol].ci_vp; + ac = raidPtr->Disks[frow][fcol].auto_configured; + rf_close_component(raidPtr, vp, ac); raidPtr->raid_cinfo[frow][fcol].ci_vp = NULL; + } + /* note that this disk was *not* auto_configured (any longer) */ + raidPtr->Disks[frow][fcol].auto_configured = 0; + printf("About to (re-)open the device: %s\n", raidPtr->Disks[frow][fcol].devname); @@ -234,17 +240,12 @@ rf_CopybackReconstructedData(raidPtr) raidread_component_label( raidPtr->raid_cinfo[frow][fcol].ci_dev, raidPtr->raid_cinfo[frow][fcol].ci_vp, &c_label); - - c_label.version = RF_COMPONENT_LABEL_VERSION; - c_label.mod_counter = raidPtr->mod_counter; - c_label.serial_number = raidPtr->serial_number; + + raid_init_component_label( raidPtr, &c_label ); + c_label.row = frow; c_label.column = fcol; - c_label.num_rows = raidPtr->numRow; - c_label.num_columns = raidPtr->numCol; - c_label.clean = RF_RAID_DIRTY; - c_label.status = rf_ds_optimal; - + raidwrite_component_label( raidPtr->raid_cinfo[frow][fcol].ci_dev, raidPtr->raid_cinfo[frow][fcol].ci_vp, &c_label); -- cgit v1.2.3