diff options
| author | christos <christos@NetBSD.org> | 2014-12-31 19:52:04 +0000 |
|---|---|---|
| committer | christos <christos@NetBSD.org> | 2014-12-31 19:52:04 +0000 |
| commit | 4a331aac448bc6ebd006fa2ea80af68f57c666eb (patch) | |
| tree | a61e69370e02aa55f74db2134eb4c32a0ce55868 /sys/dev/qbus | |
| parent | 7e0dbe4aff861a57f08f15f13b40808d8bd26a6f (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.c | 19 | ||||
| -rw-r--r-- | sys/dev/qbus/rl.c | 27 |
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 |
