summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/vinum/vinumconfig.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/sys/dev/vinum/vinumconfig.c b/sys/dev/vinum/vinumconfig.c
index 2c00921..2d172e1 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);
}
/*
OpenPOWER on IntegriCloud