diff options
author | sepotvin <sepotvin@FreeBSD.org> | 2008-09-12 17:40:17 +0000 |
---|---|---|
committer | sepotvin <sepotvin@FreeBSD.org> | 2008-09-12 17:40:17 +0000 |
commit | 6d5e175ceb85f51379f0ff7477ade6dc25e7e954 (patch) | |
tree | fa6049849ab9735b9c75084f246857df36936a8f /usr.sbin/mlxcontrol | |
parent | 6ded760f17499dfd4b22eddbcccb63712cb9265a (diff) | |
download | FreeBSD-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.c | 2 | ||||
-rw-r--r-- | usr.sbin/mlxcontrol/interface.c | 8 |
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) |