From 8517ec8be1f00406593cc7ebba38e65a0ed6b458 Mon Sep 17 00:00:00 2001 From: Greg Lehey Date: Tue, 1 Jul 2003 07:53:54 +0000 Subject: [PATCH] free_drive: Free the drive even if it's referenced. I don't know what I was smoking when I wrote this stuff, but another fix resulted in every partition in the system being entered as a "referenced" drive. --- sys/dev/vinum/vinumconfig.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/sys/dev/vinum/vinumconfig.c b/sys/dev/vinum/vinumconfig.c index 2c009219b72..2d172e14f86 100644 --- a/sys/dev/vinum/vinumconfig.c +++ b/sys/dev/vinum/vinumconfig.c @@ -585,18 +585,13 @@ get_empty_sd(void) void free_drive(struct drive *drive) { - if ((drive->state > drive_referenced) /* real drive */ - ||(drive->flags & VF_OPEN)) { /* how can it be open without a state? */ - LOCKDRIVE(drive); - if (drive->flags & VF_OPEN) { /* it's open, */ - close_locked_drive(drive); /* close it */ - drive->state = drive_down; /* and note the fact */ - } - if (drive->freelist) - Free(drive->freelist); - bzero(drive, sizeof(struct drive)); /* this also sets drive_unallocated */ - unlockdrive(drive); - } + LOCKDRIVE(drive); + if (drive->flags & VF_OPEN) /* it's open, */ + close_locked_drive(drive); /* close it */ + if (drive->freelist) + Free(drive->freelist); + bzero(drive, sizeof(struct drive)); /* this also sets drive_unallocated */ + unlockdrive(drive); } /*