diff options
| author | Lukas Ertl <le@FreeBSD.org> | 2004-02-08 15:27:58 +0000 |
|---|---|---|
| committer | Lukas Ertl <le@FreeBSD.org> | 2004-02-08 15:27:58 +0000 |
| commit | 60b42b1c00fbddaa19129c62db0eeae967944d11 (patch) | |
| tree | 49df3c6d17dfd01c213cca2c9e42322ba767ba85 | |
| parent | 10b1416d2fa79070dc8b6a6498d19a3eaa20d313 (diff) | |
Notes
| -rw-r--r-- | sys/dev/vinum/vinumconfig.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/vinum/vinumconfig.c b/sys/dev/vinum/vinumconfig.c index f556f77b7dda..e622eb1105e3 100644 --- a/sys/dev/vinum/vinumconfig.c +++ b/sys/dev/vinum/vinumconfig.c @@ -1232,8 +1232,15 @@ config_subdisk(int update) PLEX[sd->plexno].name, sizeof(sd->name)); else { /* no way */ - if (sd->state == sd_unallocated) /* haven't finished allocating the sd, */ - free_sd(sdno); /* free it to return drive space */ + if (sd->state == sd_unallocated) { /* haven't finished allocating the sd, */ + if (autosize != 0) { /* but we might have allocated drive space */ + vinum_conf.subdisks_used++; /* ugly hack needed for free_sd() */ + free_sd(sdno); /* free it to return drive space */ + } else { /* just clear it */ + bzero(sd, sizeof(struct sd)); + sd->state = sd_unallocated; + } + } throw_rude_remark(EINVAL, "Unnamed sd is not associated with a plex"); } sprintf(sdsuffix, ".s%d", sdindex); /* form the suffix */ |
