summaryrefslogtreecommitdiff
path: root/sys/dev/qbus
diff options
context:
space:
mode:
authorchristos <christos@NetBSD.org>2014-12-31 19:52:04 +0000
committerchristos <christos@NetBSD.org>2014-12-31 19:52:04 +0000
commit4a331aac448bc6ebd006fa2ea80af68f57c666eb (patch)
treea61e69370e02aa55f74db2134eb4c32a0ce55868 /sys/dev/qbus
parent7e0dbe4aff861a57f08f15f13b40808d8bd26a6f (diff)
make more drivers use disk_ioctl, and add a dev parameter to it so that
we can merge the "easy" disklabel ioctls to it. Ultimately all this will go do dk_ioctl once all the drivers have been converted.
Diffstat (limited to 'sys/dev/qbus')
-rw-r--r--sys/dev/qbus/rf.c19
-rw-r--r--sys/dev/qbus/rl.c27
2 files changed, 11 insertions, 35 deletions
diff --git a/sys/dev/qbus/rf.c b/sys/dev/qbus/rf.c
index 290a0a307f4..dbb46a82666 100644
--- a/sys/dev/qbus/rf.c
+++ b/sys/dev/qbus/rf.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf.c,v 1.29 2014/08/04 14:20:33 ryoon Exp $ */
+/* $NetBSD: rf.c,v 1.30 2014/12/31 19:52:06 christos Exp $ */
/*
* Copyright (c) 2002 Jochen Kunz.
* All rights reserved.
@@ -36,7 +36,7 @@ TODO:
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf.c,v 1.29 2014/08/04 14:20:33 ryoon Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf.c,v 1.30 2014/12/31 19:52:06 christos Exp $");
/* autoconfig stuff */
#include <sys/param.h>
@@ -1090,27 +1090,22 @@ int
rfioctl(dev_t dev, u_long cmd, void *data, int fflag, struct lwp *l)
{
struct rf_softc *rf_sc = device_lookup_private(&rf_cd, DISKUNIT(dev));
+ int error;
/* We are going to operate on a non-open dev? PANIC! */
if ((rf_sc->sc_state & 1 << (DISKPART(dev) + RFS_OPEN_SHIFT)) == 0)
panic("rfioctl: can not operate on non-open drive %s "
"partition %"PRIu32, device_xname(rf_sc->sc_dev), DISKPART(dev));
+ error = disk_ioctl(&rf_sc->sc_disk, dev, cmd, data, fflag, l);
+ if (error != EPASSTHROUGH)
+ return error;
+
switch (cmd) {
/* get and set disklabel; DIOCGPART used internally */
- case DIOCGDINFO: /* get */
- memcpy(data, rf_sc->sc_disk.dk_label,
- sizeof(struct disklabel));
- return(0);
case DIOCSDINFO: /* set */
return(0);
case DIOCWDINFO: /* set, update disk */
return(0);
- case DIOCGPART: /* get partition */
- ((struct partinfo *)data)->disklab = rf_sc->sc_disk.dk_label;
- ((struct partinfo *)data)->part =
- &rf_sc->sc_disk.dk_label->d_partitions[DISKPART(dev)];
- return(0);
-
/* do format operation, read or write */
case DIOCRFORMAT:
break;
diff --git a/sys/dev/qbus/rl.c b/sys/dev/qbus/rl.c
index c5571401af1..414099f74d6 100644
--- a/sys/dev/qbus/rl.c
+++ b/sys/dev/qbus/rl.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rl.c,v 1.47 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: rl.c,v 1.48 2014/12/31 19:52:06 christos Exp $ */
/*
* Copyright (c) 2000 Ludd, University of Lule}, Sweden. All rights reserved.
@@ -43,7 +43,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rl.c,v 1.47 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rl.c,v 1.48 2014/12/31 19:52:06 christos Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -445,35 +445,16 @@ rlioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
struct disklabel *lp = rc->rc_disk.dk_label;
int error;
#ifdef __HAVE_OLD_DISKLABEL
- struct diklabel newlabel;
+ struct disklabel newlabel;
#endif
- error = disk_ioctl(&rc->rc_disk, xfer, addr, flag, l);
+ error = disk_ioctl(&rc->rc_disk, dev, cmd, addr, flag, l);
if (error != EPASSTHROUGH)
return error;
else
error = 0;
switch (cmd) {
- case DIOCGDINFO:
- memcpy(addr, lp, sizeof (struct disklabel));
- break;
-
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *lp;
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(addr, &newlabel, sizeof (struct olddisklabel));
- break;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)addr)->disklab = lp;
- ((struct partinfo *)addr)->part =
- &lp->d_partitions[DISKPART(dev)];
- break;
-
case DIOCSDINFO:
case DIOCWDINFO:
#ifdef __HAVE_OLD_DISKLABEL