Date: Fri, 7 Nov 2003 15:41:46 GMT From: freebsduser@paradisegreen.co.uk To: FreeBSD-gnats-submit@FreeBSD.org Subject: bin/59042: Vinum fails to initialise on hardware drive arrays. Message-ID: <200311071541.hA7FfkS2000780@mail.paradise-green.co.uk> Resent-Message-ID: <200311071550.hA7FoHhT091996@freefall.freebsd.org>
index | next in thread | raw e-mail
>Number: 59042
>Category: bin
>Synopsis: Vinum fails to initialise on hardware drive arrays.
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Nov 07 07:50:17 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: Thomas Sandford
>Release: FreeBSD 4.9-RELEASE i386
>Organization:
Paradise Green Technical Services
>Environment:
System: FreeBSD almaz.paradise 4.9-RELEASE FreeBSD 4.9-RELEASE #0: Fri Nov 7 02:00:20 GMT 2003 root@almaz.paradise:/usr/src/sys/compile/ALMAZ i386
The machine has a Compaq Smart Arry 3200 controller fitted
(idad driver) and vinum is used to subdivide the partitions
on the resulting virtual drives.
>Description:
vinum start gives a syntax error and fails to load the previous
configuration.
This is a bug introduced in /usr/src/sbin/vinum/commands.c
at version 1.31.2.6
The test introduced to detect md drives triggers on almost
anything that is not a conventional ATAPI/SCSI drive.
A better test is suggested in Fix: below.
>How-To-Repeat:
Attempt to use vinum on most hardware drive array controllers.
>Fix:
apply the following patch to /usr/src/sbin/vinum/commands.c
(patch against 1.31.2.6)
--- commands.c.orig Fri Nov 7 14:54:34 2003
+++ commands.c Fri Nov 7 15:09:01 2003
@@ -546,9 +546,9 @@
for (i = 0; i < devs; i++) {
struct devstat *stat = &statinfo.dinfo->devices[i];
- if ((((stat->device_type & DEVSTAT_TYPE_MASK) == DEVSTAT_TYPE_DIRECT) /* disk device */
- || ((stat->device_type & DEVSTAT_TYPE_MASK) == DEVSTAT_TYPE_STORARRAY)) /* storage array */
- &&((stat->device_type & DEVSTAT_TYPE_IF_MASK) != DEVSTAT_TYPE_IF_OTHER) /* and not md */
+ if (((((stat->device_type & DEVSTAT_TYPE_MASK) == DEVSTAT_TYPE_DIRECT) /* disk device */
+ &&((stat->device_type & DEVSTAT_TYPE_IF_MASK) != DEVSTAT_TYPE_IF_OTHER)) /* and not md */
+ ||((stat->device_type & DEVSTAT_TYPE_MASK) == DEVSTAT_TYPE_STORARRAY)) /* storage array */
&&((stat->device_type & DEVSTAT_TYPE_PASS) == 0) /* and not passthrough */
&&((stat->device_name[0] != '\0'))) { /* and it has a name */
sprintf(enamelist, "%s%s%d", _PATH_DEV, stat->device_name, stat->unit_number);
>Release-Note:
>Audit-Trail:
>Unformatted:
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311071541.hA7FfkS2000780>
