summaryrefslogtreecommitdiffstats
path: root/usr.sbin/mlxcontrol
diff options
context:
space:
mode:
authorsepotvin <sepotvin@FreeBSD.org>2008-09-12 17:40:17 +0000
committersepotvin <sepotvin@FreeBSD.org>2008-09-12 17:40:17 +0000
commit6d5e175ceb85f51379f0ff7477ade6dc25e7e954 (patch)
treefa6049849ab9735b9c75084f246857df36936a8f /usr.sbin/mlxcontrol
parent6ded760f17499dfd4b22eddbcccb63712cb9265a (diff)
downloadFreeBSD-src-6d5e175ceb85f51379f0ff7477ade6dc25e7e954.zip
FreeBSD-src-6d5e175ceb85f51379f0ff7477ade6dc25e7e954.tar.gz
Make mlxcontrol work with more than one system drive:
- When searching for the next system drive, return the next one instead of always returning the first one. - Plug fd lead and make sure that the MLX_NEXT_CHILD ioctl is called on the controller fd, not the disk's one. While there, fix a cut-n-pase error in a warning. Reviewed by: jhb Approved by: kan (mentor) MFC after: 1 month
Diffstat (limited to 'usr.sbin/mlxcontrol')
-rw-r--r--usr.sbin/mlxcontrol/command.c2
-rw-r--r--usr.sbin/mlxcontrol/interface.c8
2 files changed, 6 insertions, 4 deletions
diff --git a/usr.sbin/mlxcontrol/command.c b/usr.sbin/mlxcontrol/command.c
index a364767..a7dc88f 100644
--- a/usr.sbin/mlxcontrol/command.c
+++ b/usr.sbin/mlxcontrol/command.c
@@ -628,7 +628,7 @@ cmd_rebuild(int argc, char *argv[])
warnx("drive rebuild or consistency check is already in progress on this controller");
break;
default:
- warn("ioctl MLXD_CHECKASYNC");
+ warn("ioctl MLXD_REBUILDASYNC");
}
}
return(0);
diff --git a/usr.sbin/mlxcontrol/interface.c b/usr.sbin/mlxcontrol/interface.c
index 5cbf7b6..2c7e12b 100644
--- a/usr.sbin/mlxcontrol/interface.c
+++ b/usr.sbin/mlxcontrol/interface.c
@@ -79,16 +79,18 @@ void
mlxd_foreach_ctrlr(int unit, void *arg)
{
struct mlxd_foreach_action *ma = (struct mlxd_foreach_action *)arg;
- int i, fd;
+ int i, fd, ctrlfd;
/* Get the device */
- if ((fd = open(ctrlrpath(unit), 0)) < 0)
+ if ((ctrlfd = open(ctrlrpath(unit), 0)) < 0)
return;
for (i = -1; ;) {
/* Get the unit number of the next child device */
- if (ioctl(fd, MLX_NEXT_CHILD, &i) < 0)
+ if (ioctl(ctrlfd, MLX_NEXT_CHILD, &i) < 0) {
+ close(ctrlfd);
return;
+ }
/* check that we can open this unit */
if ((fd = open(drivepath(i), 0)) >= 0)
OpenPOWER on IntegriCloud