summaryrefslogtreecommitdiff
path: root/sys/dev
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
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')
-rw-r--r--sys/dev/ata/wd.c30
-rw-r--r--sys/dev/ccd.c25
-rw-r--r--sys/dev/cgd.c6
-rw-r--r--sys/dev/dksubr.c25
-rw-r--r--sys/dev/dkwedge/dk.c10
-rw-r--r--sys/dev/gpib/rd.c18
-rw-r--r--sys/dev/isa/fd.c56
-rw-r--r--sys/dev/isa/mcd.c26
-rw-r--r--sys/dev/ld.c28
-rw-r--r--sys/dev/mca/ed_mca.c16
-rw-r--r--sys/dev/md.c20
-rw-r--r--sys/dev/mscp/mscp_disk.c39
-rw-r--r--sys/dev/ofw/ofdisk.c24
-rw-r--r--sys/dev/qbus/rf.c19
-rw-r--r--sys/dev/qbus/rl.c27
-rw-r--r--sys/dev/raidframe/rf_netbsdkintf.c24
-rw-r--r--sys/dev/scsipi/cd.c29
-rw-r--r--sys/dev/scsipi/sd.c30
-rw-r--r--sys/dev/vme/xd.c26
-rw-r--r--sys/dev/vme/xy.c26
-rw-r--r--sys/dev/vnd.c32
21 files changed, 112 insertions, 424 deletions
diff --git a/sys/dev/ata/wd.c b/sys/dev/ata/wd.c
index 34c9da0821e..62c0633189a 100644
--- a/sys/dev/ata/wd.c
+++ b/sys/dev/ata/wd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: wd.c,v 1.416 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: wd.c,v 1.417 2014/12/31 19:52:05 christos Exp $ */
/*
* Copyright (c) 1998, 2001 Manuel Bouyer. All rights reserved.
@@ -54,7 +54,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wd.c,v 1.416 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wd.c,v 1.417 2014/12/31 19:52:05 christos Exp $");
#include "opt_ata.h"
@@ -1202,9 +1202,9 @@ wdioctl(dev_t dev, u_long xfer, void *addr, int flag, struct lwp *l)
if ((wd->sc_flags & WDF_LOADED) == 0)
return EIO;
- error = disk_ioctl(&wd->sc_dk, xfer, addr, flag, l);
+ error = disk_ioctl(&wd->sc_dk, dev, xfer, addr, flag, l);
if (error != EPASSTHROUGH)
- return (error);
+ return error;
error = 0;
switch (xfer) {
@@ -1272,28 +1272,6 @@ wdioctl(dev_t dev, u_long xfer, void *addr, int flag, struct lwp *l)
wd->sc_bscount = 0;
return 0;
#endif
- case DIOCGDINFO:
- *(struct disklabel *)addr = *(wd->sc_dk.dk_label);
- return 0;
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = malloc(sizeof *newlabel, M_TEMP, M_WAITOK);
- if (newlabel == NULL)
- return EIO;
- *newlabel = *(wd->sc_dk.dk_label);
- if (newlabel->d_npartitions <= OLDMAXPARTITIONS)
- memcpy(addr, newlabel, sizeof (struct olddisklabel));
- else
- error = ENOTTY;
- free(newlabel, M_TEMP);
- return error;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)addr)->disklab = wd->sc_dk.dk_label;
- ((struct partinfo *)addr)->part =
- &wd->sc_dk.dk_label->d_partitions[WDPART(dev)];
- return 0;
case DIOCWDINFO:
case DIOCSDINFO:
diff --git a/sys/dev/ccd.c b/sys/dev/ccd.c
index 9e138398448..fe26f8b81af 100644
--- a/sys/dev/ccd.c
+++ b/sys/dev/ccd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ccd.c,v 1.160 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: ccd.c,v 1.161 2014/12/31 19:52:05 christos Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 1999, 2007, 2009 The NetBSD Foundation, Inc.
@@ -88,7 +88,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ccd.c,v 1.160 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ccd.c,v 1.161 2014/12/31 19:52:05 christos Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@@ -1196,7 +1196,7 @@ ccdioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
}
}
- error = disk_ioctl(&cs->sc_dkdev, cmd, data, flag, l);
+ error = disk_ioctl(&cs->sc_dkdev, dev, cmd, data, flag, l);
if (error != EPASSTHROUGH)
goto out;
@@ -1383,25 +1383,6 @@ ccdioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
/* Don't break, otherwise cs is read again. */
return 0;
- case DIOCGDINFO:
- *(struct disklabel *)data = *(cs->sc_dkdev.dk_label);
- break;
-
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *(cs->sc_dkdev.dk_label);
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(data, &newlabel, sizeof (struct olddisklabel));
- break;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)data)->disklab = cs->sc_dkdev.dk_label;
- ((struct partinfo *)data)->part =
- &cs->sc_dkdev.dk_label->d_partitions[DISKPART(dev)];
- break;
-
case DIOCCACHESYNC:
/*
* We pass this call down to all components and report
diff --git a/sys/dev/cgd.c b/sys/dev/cgd.c
index dcae7bc6a00..66c7bb156eb 100644
--- a/sys/dev/cgd.c
+++ b/sys/dev/cgd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: cgd.c,v 1.93 2014/12/30 20:18:44 christos Exp $ */
+/* $NetBSD: cgd.c,v 1.94 2014/12/31 19:52:05 christos Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cgd.c,v 1.93 2014/12/30 20:18:44 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cgd.c,v 1.94 2014/12/31 19:52:05 christos Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -567,7 +567,7 @@ cgdioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
break;
}
- error = disk_ioctl(&dksc->sc_dkdev, cmd, data, flag, l);
+ error = disk_ioctl(&dksc->sc_dkdev, dev, cmd, data, flag, l);
if (error != EPASSTHROUGH)
return (error);
diff --git a/sys/dev/dksubr.c b/sys/dev/dksubr.c
index 7857e8af922..644dc578230 100644
--- a/sys/dev/dksubr.c
+++ b/sys/dev/dksubr.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dksubr.c,v 1.57 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: dksubr.c,v 1.58 2014/12/31 19:52:05 christos Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 1999, 2002, 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dksubr.c,v 1.57 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dksubr.c,v 1.58 2014/12/31 19:52:05 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -332,32 +332,13 @@ dk_ioctl(struct dk_intf *di, struct dk_softc *dksc, dev_t dev,
return ENXIO;
}
- error = disk_ioctl(dk, cmd, data, flag, l);
+ error = disk_ioctl(dk, dev, cmd, data, flag, l);
if (error != EPASSTHROUGH)
return error;
else
error = 0;
switch (cmd) {
- case DIOCGDINFO:
- *(struct disklabel *)data = *(dksc->sc_dkdev.dk_label);
- break;
-
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *(dksc->sc_dkdev.dk_label);
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(data, &newlabel, sizeof (struct olddisklabel));
- break;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)data)->disklab = dksc->sc_dkdev.dk_label;
- ((struct partinfo *)data)->part =
- &dksc->sc_dkdev.dk_label->d_partitions[DISKPART(dev)];
- break;
-
case DIOCWDINFO:
case DIOCSDINFO:
#ifdef __HAVE_OLD_DISKLABEL
diff --git a/sys/dev/dkwedge/dk.c b/sys/dev/dkwedge/dk.c
index 30908654b14..33bccfe8e29 100644
--- a/sys/dev/dkwedge/dk.c
+++ b/sys/dev/dkwedge/dk.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dk.c,v 1.77 2014/12/31 08:24:50 mlelstv Exp $ */
+/* $NetBSD: dk.c,v 1.78 2014/12/31 19:52:05 christos Exp $ */
/*-
* Copyright (c) 2004, 2005, 2006, 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dk.c,v 1.77 2014/12/31 08:24:50 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dk.c,v 1.78 2014/12/31 19:52:05 christos Exp $");
#ifdef _KERNEL_OPT
#include "opt_dkwedge.h"
@@ -1358,7 +1358,11 @@ dkioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
if (sc->sc_parent->dk_rawvp == NULL)
return (ENXIO);
- error = disk_ioctl(&sc->sc_dk, cmd, data, flag, l);
+ /*
+ * We pass 0 instead of our device to indicate we don't
+ * want to handle disklabel ioctls
+ */
+ error = disk_ioctl(&sc->sc_dk, 0, cmd, data, flag, l);
if (error != EPASSTHROUGH)
return (error);
diff --git a/sys/dev/gpib/rd.c b/sys/dev/gpib/rd.c
index 1bb60358e59..af51ae6b162 100644
--- a/sys/dev/gpib/rd.c
+++ b/sys/dev/gpib/rd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rd.c,v 1.36 2014/08/10 16:44:35 tls Exp $ */
+/* $NetBSD: rd.c,v 1.37 2014/12/31 19:52:05 christos Exp $ */
/*-
* Copyright (c) 1996-2003 The NetBSD Foundation, Inc.
@@ -72,7 +72,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rd.c,v 1.36 2014/08/10 16:44:35 tls Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rd.c,v 1.37 2014/12/31 19:52:05 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -972,17 +972,11 @@ rdioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
DPRINTF(RDB_FOLLOW, ("rdioctl: sc=%p\n", sc));
- switch (cmd) {
- case DIOCGDINFO:
- *(struct disklabel *)data = *lp;
- return (0);
-
- case DIOCGPART:
- ((struct partinfo *)data)->disklab = lp;
- ((struct partinfo *)data)->part =
- &lp->d_partitions[RDPART(dev)];
- return (0);
+ error = disk_ioctl(&sk->sc_dk, dev, cmd, data, flag, l);
+ if (error != EPASSTHROUGH)
+ return error;
+ switch (cmd) {
case DIOCWLABEL:
if ((flag & FWRITE) == 0)
return (EBADF);
diff --git a/sys/dev/isa/fd.c b/sys/dev/isa/fd.c
index 72451862ba5..fdc247cc02a 100644
--- a/sys/dev/isa/fd.c
+++ b/sys/dev/isa/fd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: fd.c,v 1.105 2014/08/10 16:44:35 tls Exp $ */
+/* $NetBSD: fd.c,v 1.106 2014/12/31 19:52:05 christos Exp $ */
/*-
* Copyright (c) 1998, 2003, 2008 The NetBSD Foundation, Inc.
@@ -81,7 +81,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.105 2014/08/10 16:44:35 tls Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.106 2014/12/31 19:52:05 christos Exp $");
#include "opt_ddb.h"
@@ -1398,7 +1398,7 @@ fdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
struct fdformat_parms *form_parms;
struct fdformat_cmd *form_cmd;
struct ne7_fd_formb *fd_formb;
- struct disklabel buffer;
+ struct disklabel *lp = fd->sc_dk.dk_label;
int error;
unsigned int scratch;
int il[FD_MAX_NSEC + 1];
@@ -1407,38 +1407,32 @@ fdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
struct disklabel newlabel;
#endif
- error = disk_ioctl(&fd->sc_dk, cmd, addr, flag, l);
- if (error != EPASSTHROUGH)
- return (error);
-
switch (cmd) {
+ case DIOCGPART:
case DIOCGDINFO:
#ifdef __HAVE_OLD_DISKLABEL
case ODIOCGDINFO:
#endif
- memset(&buffer, 0, sizeof(buffer));
+ memset(lp, 0, sizeof(*lp));
- buffer.d_type = DTYPE_FLOPPY;
- buffer.d_secsize = FDC_BSIZE;
- buffer.d_nsectors = fd->sc_type->sectrac;
- buffer.d_ntracks = fd->sc_type->heads;
- buffer.d_ncylinders = fd->sc_type->cyls;
- buffer.d_secpercyl = fd->sc_type->seccyl;
- buffer.d_secperunit = fd->sc_type->size;
+ lp->d_type = DTYPE_FLOPPY;
+ lp->d_secsize = FDC_BSIZE;
+ lp->d_nsectors = fd->sc_type->sectrac;
+ lp->d_ntracks = fd->sc_type->heads;
+ lp->d_ncylinders = fd->sc_type->cyls;
+ lp->d_secpercyl = fd->sc_type->seccyl;
+ lp->d_secperunit = fd->sc_type->size;
- if (readdisklabel(dev, fdstrategy, &buffer, NULL) != NULL)
+ if (readdisklabel(dev, fdstrategy, lp, NULL) != NULL)
return EINVAL;
+ break;
+ }
-#ifdef __HAVE_OLD_DISKLABEL
- if (cmd == ODIOCGDINFO) {
- if (buffer.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(addr, &buffer, sizeof (struct olddisklabel));
- } else
-#endif
- *(struct disklabel *)addr = buffer;
- return 0;
+ error = disk_ioctl(&fd->sc_dk, dev, cmd, addr, flag, l);
+ if (error != EPASSTHROUGH)
+ return error;
+ switch (cmd) {
case DIOCWLABEL:
if ((flag & FWRITE) == 0)
return EBADF;
@@ -1450,24 +1444,20 @@ fdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
case ODIOCWDINFO:
#endif
{
- struct disklabel *lp;
-
if ((flag & FWRITE) == 0)
return EBADF;
#ifdef __HAVE_OLD_DISKLABEL
if (cmd == ODIOCWDINFO) {
memset(&newlabel, 0, sizeof newlabel);
memcpy(&newlabel, addr, sizeof (struct olddisklabel));
- lp = &newlabel;
- } else
+ addr = &newlabel;
+ }
#endif
- lp = (struct disklabel *)addr;
-
- error = setdisklabel(&buffer, lp, 0, NULL);
+ error = setdisklabel(lp, addr, 0, NULL);
if (error)
return error;
- error = writedisklabel(dev, fdstrategy, &buffer, NULL);
+ error = writedisklabel(dev, fdstrategy, lp, NULL);
return error;
}
diff --git a/sys/dev/isa/mcd.c b/sys/dev/isa/mcd.c
index 3ff61eaedf7..2a66c293961 100644
--- a/sys/dev/isa/mcd.c
+++ b/sys/dev/isa/mcd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: mcd.c,v 1.113 2014/07/25 08:10:37 dholland Exp $ */
+/* $NetBSD: mcd.c,v 1.114 2014/12/31 19:52:05 christos Exp $ */
/*
* Copyright (c) 1993, 1994, 1995 Charles M. Hannum. All rights reserved.
@@ -56,7 +56,7 @@
/*static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mcd.c,v 1.113 2014/07/25 08:10:37 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mcd.c,v 1.114 2014/12/31 19:52:05 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -579,26 +579,12 @@ mcdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
if ((sc->flags & MCDF_LOADED) == 0)
return EIO;
+ error = disk_ioctl(&sc->sc_dk, dev, cmd, addr, flag, l);
+ if (error != EPASSTHROUGH)
+ return error;
+
part = MCDPART(dev);
switch (cmd) {
- case DIOCGDINFO:
- *(struct disklabel *)addr = *(sc->sc_dk.dk_label);
- return 0;
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *(sc->sc_dk.dk_label);
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(addr, &newlabel, sizeof (struct olddisklabel));
- return 0;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)addr)->disklab = sc->sc_dk.dk_label;
- ((struct partinfo *)addr)->part =
- &sc->sc_dk.dk_label->d_partitions[part];
- return 0;
-
case DIOCWDINFO:
case DIOCSDINFO:
#ifdef __HAVE_OLD_DISKLABEL
diff --git a/sys/dev/ld.c b/sys/dev/ld.c
index 19a7d21b074..f3081fb6e15 100644
--- a/sys/dev/ld.c
+++ b/sys/dev/ld.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ld.c,v 1.79 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: ld.c,v 1.80 2014/12/31 19:52:05 christos Exp $ */
/*-
* Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ld.c,v 1.79 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ld.c,v 1.80 2014/12/31 19:52:05 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -407,41 +407,21 @@ static int
ldioctl(dev_t dev, u_long cmd, void *addr, int32_t flag, struct lwp *l)
{
struct ld_softc *sc;
- int part, unit, error;
+ int unit, error;
#ifdef __HAVE_OLD_DISKLABEL
struct disklabel newlabel;
#endif
struct disklabel *lp;
unit = DISKUNIT(dev);
- part = DISKPART(dev);
sc = device_lookup_private(&ld_cd, unit);
- error = disk_ioctl(&sc->sc_dk, cmd, addr, flag, l);
+ error = disk_ioctl(&sc->sc_dk, dev, cmd, addr, flag, l);
if (error != EPASSTHROUGH)
return (error);
error = 0;
switch (cmd) {
- case DIOCGDINFO:
- memcpy(addr, sc->sc_dk.dk_label, sizeof(struct disklabel));
- return (0);
-
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *(sc->sc_dk.dk_label);
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(addr, &newlabel, sizeof(struct olddisklabel));
- return (0);
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)addr)->disklab = sc->sc_dk.dk_label;
- ((struct partinfo *)addr)->part =
- &sc->sc_dk.dk_label->d_partitions[part];
- break;
-
case DIOCWDINFO:
case DIOCSDINFO:
#ifdef __HAVE_OLD_DISKLABEL
diff --git a/sys/dev/mca/ed_mca.c b/sys/dev/mca/ed_mca.c
index 3aecb2bf506..65bd1deafab 100644
--- a/sys/dev/mca/ed_mca.c
+++ b/sys/dev/mca/ed_mca.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ed_mca.c,v 1.60 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: ed_mca.c,v 1.61 2014/12/31 19:52:05 christos Exp $ */
/*
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ed_mca.c,v 1.60 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ed_mca.c,v 1.61 2014/12/31 19:52:05 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -478,21 +478,11 @@ edmcaioctl(dev_t dev, u_long xfer, void *addr, int flag, struct lwp *l)
if ((ed->sc_flags & WDF_LOADED) == 0)
return EIO;
- error = disk_ioctl(&ed->sc_dk, xfer, addr, flag, l);
+ error = disk_ioctl(&ed->sc_dk, dev, xfer, addr, flag, l);
if (error != EPASSTHROUGH)
return error;
switch (xfer) {
- case DIOCGDINFO:
- *(struct disklabel *)addr = *(ed->sc_dk.dk_label);
- return 0;
-
- case DIOCGPART:
- ((struct partinfo *)addr)->disklab = ed->sc_dk.dk_label;
- ((struct partinfo *)addr)->part =
- &ed->sc_dk.dk_label->d_partitions[DISKPART(dev)];
- return 0;
-
case DIOCWDINFO:
case DIOCSDINFO:
{
diff --git a/sys/dev/md.c b/sys/dev/md.c
index 218753a4f4b..deb9de4a061 100644
--- a/sys/dev/md.c
+++ b/sys/dev/md.c
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.71 2014/07/25 08:10:35 dholland Exp $ */
+/* $NetBSD: md.c,v 1.72 2014/12/31 19:52:05 christos Exp $ */
/*
* Copyright (c) 1995 Gordon W. Ross, Leo Weppelman.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: md.c,v 1.71 2014/07/25 08:10:35 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: md.c,v 1.72 2014/12/31 19:52:05 christos Exp $");
#ifdef _KERNEL_OPT
#include "opt_md.h"
@@ -474,8 +474,6 @@ mdioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
{
struct md_softc *sc;
struct md_conf *umd;
- struct disklabel *lp;
- struct partinfo *pp;
int error;
if ((sc = device_lookup_private(&md_cd, MD_UNIT(dev))) == NULL)
@@ -483,18 +481,8 @@ mdioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
mutex_enter(&sc->sc_lock);
if (sc->sc_type != MD_UNCONFIGURED) {
- switch (cmd) {
- case DIOCGDINFO:
- lp = (struct disklabel *)data;
- *lp = *sc->sc_dkdev.dk_label;
- mutex_exit(&sc->sc_lock);
- return 0;
-
- case DIOCGPART:
- pp = (struct partinfo *)data;
- pp->disklab = sc->sc_dkdev.dk_label;
- pp->part =
- &sc->sc_dkdev.dk_label->d_partitions[DISKPART(dev)];
+ error = disk_ioctl(&sc->sc_dkdev, dev, cmd, data, flag, l);
+ if (error != EPASSTHROUGH) {
mutex_exit(&sc->sc_lock);
return 0;
}
diff --git a/sys/dev/mscp/mscp_disk.c b/sys/dev/mscp/mscp_disk.c
index 88c8456e12e..038c42cee25 100644
--- a/sys/dev/mscp/mscp_disk.c
+++ b/sys/dev/mscp/mscp_disk.c
@@ -1,4 +1,4 @@
-/* $NetBSD: mscp_disk.c,v 1.83 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: mscp_disk.c,v 1.84 2014/12/31 19:52:05 christos Exp $ */
/*
* Copyright (c) 1988 Regents of the University of California.
* All rights reserved.
@@ -82,7 +82,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mscp_disk.c,v 1.83 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mscp_disk.c,v 1.84 2014/12/31 19:52:05 christos Exp $");
#include <sys/param.h>
#include <sys/buf.h>
@@ -412,32 +412,13 @@ raioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
lp = ra->ra_disk.dk_label;
- error = disk_ioctl(&ra->ra_disk, cmd, data, flag, l);
+ error = disk_ioctl(&ra->ra_disk, dev, cmd, data, flag, l);
if (error != EPASSTHROUGH)
return error;
else
error = 0;
switch (cmd) {
-
- case DIOCGDINFO:
- memcpy(data, lp, sizeof (struct disklabel));
- break;
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- memcpy(&newlabel, lp, sizeof newlabel);
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(data, &newlabel, sizeof (struct olddisklabel));
- break;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)data)->disklab = lp;
- ((struct partinfo *)data)->part =
- &lp->d_partitions[DISKPART(dev)];
- break;
-
case DIOCWDINFO:
case DIOCSDINFO:
#ifdef __HAVE_OLD_DISKLABEL
@@ -877,25 +858,13 @@ rxioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
lp = rx->ra_disk.dk_label;
- error = disk_ioctl(&rx->ra_disk, cmd, data, flag, l);
+ error = disk_ioctl(&rx->ra_disk, dev, cmd, data, flag, l);
if (error != EPASSTHROUGH)
return error;
else
error = 0;
switch (cmd) {
-
- case DIOCGDINFO:
- memcpy(data, lp, sizeof (struct disklabel));
- break;
-
- case DIOCGPART:
- ((struct partinfo *)data)->disklab = lp;
- ((struct partinfo *)data)->part =
- &lp->d_partitions[DISKPART(dev)];
- break;
-
-
case DIOCWDINFO:
case DIOCSDINFO:
case DIOCWLABEL:
diff --git a/sys/dev/ofw/ofdisk.c b/sys/dev/ofw/ofdisk.c
index 4eb2e4bf28a..a14ab2a01e8 100644
--- a/sys/dev/ofw/ofdisk.c
+++ b/sys/dev/ofw/ofdisk.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ofdisk.c,v 1.49 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: ofdisk.c,v 1.50 2014/12/31 19:52:06 christos Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ofdisk.c,v 1.49 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ofdisk.c,v 1.50 2014/12/31 19:52:06 christos Exp $");
#include <sys/param.h>
#include <sys/buf.h>
@@ -369,29 +369,11 @@ ofdisk_ioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
return ENOTTY;
}
- error = disk_ioctl(&of->sc_dk, cmd, data, flag, l);
+ error = disk_ioctl(&of->sc_dk, dev, cmd, data, flag, l);
if (error != EPASSTHROUGH)
return error;
switch (cmd) {
- case DIOCGDINFO:
- *(struct disklabel *)data = *of->sc_dk.dk_label;
- return 0;
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *of->sc_dk.dk_label;
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(data, &newlabel, sizeof (struct olddisklabel));
- return 0;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)data)->disklab = of->sc_dk.dk_label;
- ((struct partinfo *)data)->part =
- &of->sc_dk.dk_label->d_partitions[DISKPART(dev)];
- return 0;
-
case DIOCWDINFO:
case DIOCSDINFO:
#ifdef __HAVE_OLD_DISKLABEL
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
diff --git a/sys/dev/raidframe/rf_netbsdkintf.c b/sys/dev/raidframe/rf_netbsdkintf.c
index 49f4f0ab0ff..ccfea146bf0 100644
--- a/sys/dev/raidframe/rf_netbsdkintf.c
+++ b/sys/dev/raidframe/rf_netbsdkintf.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_netbsdkintf.c,v 1.319 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: rf_netbsdkintf.c,v 1.320 2014/12/31 19:52:06 christos Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 2008-2011 The NetBSD Foundation, Inc.
@@ -101,7 +101,7 @@
***********************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.319 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.320 2014/12/31 19:52:06 christos Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
@@ -1826,29 +1826,11 @@ raidioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
* Add support for "regular" device ioctls here.
*/
- error = disk_ioctl(&rs->sc_dkdev, cmd, data, flag, l);
+ error = disk_ioctl(&rs->sc_dkdev, dev, cmd, data, flag, l);
if (error != EPASSTHROUGH)
return (error);
switch (cmd) {
- case DIOCGDINFO:
- *(struct disklabel *) data = *(rs->sc_dkdev.dk_label);
- break;
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *(rs->sc_dkdev.dk_label);
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(data, &newlabel, sizeof (struct olddisklabel));
- break;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *) data)->disklab = rs->sc_dkdev.dk_label;
- ((struct partinfo *) data)->part =
- &rs->sc_dkdev.dk_label->d_partitions[DISKPART(dev)];
- break;
-
case DIOCWDINFO:
case DIOCSDINFO:
#ifdef __HAVE_OLD_DISKLABEL
diff --git a/sys/dev/scsipi/cd.c b/sys/dev/scsipi/cd.c
index 00eb59176f4..a82b7d92b70 100644
--- a/sys/dev/scsipi/cd.c
+++ b/sys/dev/scsipi/cd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: cd.c,v 1.326 2014/12/31 19:37:35 mlelstv Exp $ */
+/* $NetBSD: cd.c,v 1.327 2014/12/31 19:52:06 christos Exp $ */
/*-
* Copyright (c) 1998, 2001, 2003, 2004, 2005, 2008 The NetBSD Foundation,
@@ -50,7 +50,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.326 2014/12/31 19:37:35 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.327 2014/12/31 19:52:06 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1321,35 +1321,12 @@ cdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
}
}
- error = disk_ioctl(&cd->sc_dk, cmd, addr, flag, l);
+ error = disk_ioctl(&cd->sc_dk, dev, cmd, addr, flag, l);
if (error != EPASSTHROUGH)
return (error);
error = 0;
switch (cmd) {
- case DIOCGDINFO:
- *(struct disklabel *)addr = *(cd->sc_dk.dk_label);
- return (0);
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = malloc(sizeof (*newlabel), M_TEMP, M_WAITOK);
- if (newlabel == NULL)
- return (EIO);
- memcpy(newlabel, cd->sc_dk.dk_label, sizeof (*newlabel));
- if (newlabel->d_npartitions > OLDMAXPARTITIONS)
- error = ENOTTY;
- else
- memcpy(addr, newlabel, sizeof (struct olddisklabel));
- free(newlabel, M_TEMP);
- return error;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)addr)->disklab = cd->sc_dk.dk_label;
- ((struct partinfo *)addr)->part =
- &cd->sc_dk.dk_label->d_partitions[part];
- return (0);
-
case DIOCWDINFO:
case DIOCSDINFO:
#ifdef __HAVE_OLD_DISKLABEL
diff --git a/sys/dev/scsipi/sd.c b/sys/dev/scsipi/sd.c
index 05d38a4d0a5..4740f9be1ab 100644
--- a/sys/dev/scsipi/sd.c
+++ b/sys/dev/scsipi/sd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: sd.c,v 1.312 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: sd.c,v 1.313 2014/12/31 19:52:06 christos Exp $ */
/*-
* Copyright (c) 1998, 2003, 2004 The NetBSD Foundation, Inc.
@@ -47,7 +47,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sd.c,v 1.312 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sd.c,v 1.313 2014/12/31 19:52:06 christos Exp $");
#include "opt_scsi.h"
@@ -1053,36 +1053,12 @@ sdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
}
}
- error = disk_ioctl(&sd->sc_dk, cmd, addr, flag, l);
+ error = disk_ioctl(&sd->sc_dk, dev, cmd, addr, flag, l);
if (error != EPASSTHROUGH)
return (error);
error = 0;
switch (cmd) {
- case DIOCGDINFO:
- *(struct disklabel *)addr = *(sd->sc_dk.dk_label);
- return (0);
-
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = malloc(sizeof *newlabel, M_TEMP, M_WAITOK);
- if (newlabel == NULL)
- return EIO;
- memcpy(newlabel, sd->sc_dk.dk_label, sizeof (*newlabel));
- if (newlabel->d_npartitions <= OLDMAXPARTITIONS)
- memcpy(addr, newlabel, sizeof (struct olddisklabel));
- else
- error = ENOTTY;
- free(newlabel, M_TEMP);
- return error;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)addr)->disklab = sd->sc_dk.dk_label;
- ((struct partinfo *)addr)->part =
- &sd->sc_dk.dk_label->d_partitions[part];
- return (0);
-
case DIOCWDINFO:
case DIOCSDINFO:
#ifdef __HAVE_OLD_DISKLABEL
diff --git a/sys/dev/vme/xd.c b/sys/dev/vme/xd.c
index b2a346a151d..2cf83111ad9 100644
--- a/sys/dev/vme/xd.c
+++ b/sys/dev/vme/xd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: xd.c,v 1.93 2014/07/25 08:10:39 dholland Exp $ */
+/* $NetBSD: xd.c,v 1.94 2014/12/31 19:52:06 christos Exp $ */
/*
* Copyright (c) 1995 Charles D. Cranor
@@ -45,7 +45,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xd.c,v 1.93 2014/07/25 08:10:39 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xd.c,v 1.94 2014/12/31 19:52:06 christos Exp $");
#undef XDC_DEBUG /* full debug */
#define XDC_DIAG /* extra sanity checks */
@@ -1034,6 +1034,10 @@ xdioctl(dev_t dev, u_long command, void *addr, int flag, struct lwp *l)
if ((xd = device_lookup_private(&xd_cd, unit)) == NULL)
return (ENXIO);
+ error = disk_ioctl(&xd->sc_dk, dev, command, addr, flag, l);
+ if (error != EPASSTHROUGH)
+ return error;
+
/* switch on ioctl type */
switch (command) {
@@ -1045,24 +1049,6 @@ xdioctl(dev_t dev, u_long command, void *addr, int flag, struct lwp *l)
splx(s);
return 0;
- case DIOCGDINFO: /* get disk label */
- memcpy(addr, xd->sc_dk.dk_label, sizeof(struct disklabel));
- return 0;
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *(xd->sc_dk.dk_label);
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(addr, &newlabel, sizeof (struct olddisklabel));
- return 0;
-#endif
-
- case DIOCGPART: /* get partition info */
- ((struct partinfo *) addr)->disklab = xd->sc_dk.dk_label;
- ((struct partinfo *) addr)->part =
- &xd->sc_dk.dk_label->d_partitions[DISKPART(dev)];
- return 0;
-
case DIOCSDINFO: /* set disk label */
#ifdef __HAVE_OLD_DISKLABEL
case ODIOCSDINFO:
diff --git a/sys/dev/vme/xy.c b/sys/dev/vme/xy.c
index c98100fe8ee..67682ed0a3d 100644
--- a/sys/dev/vme/xy.c
+++ b/sys/dev/vme/xy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: xy.c,v 1.97 2014/07/25 08:10:39 dholland Exp $ */
+/* $NetBSD: xy.c,v 1.98 2014/12/31 19:52:06 christos Exp $ */
/*
* Copyright (c) 1995 Charles D. Cranor
@@ -45,7 +45,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xy.c,v 1.97 2014/07/25 08:10:39 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xy.c,v 1.98 2014/12/31 19:52:06 christos Exp $");
#undef XYC_DEBUG /* full debug */
#undef XYC_DIAG /* extra sanity checks */
@@ -953,6 +953,10 @@ xyioctl(dev_t dev, u_long command, void *addr, int flag, struct lwp *l)
if ((xy = device_lookup_private(&xy_cd, unit)) == NULL)
return (ENXIO);
+ error = disk_ioctl(&xy->sc_dk, dev, command, addr, flag, l);
+ if (error != EPASSTHROUGH)
+ return error;
+
/* switch on ioctl type */
switch (command) {
@@ -964,24 +968,6 @@ xyioctl(dev_t dev, u_long command, void *addr, int flag, struct lwp *l)
splx(s);
return 0;
- case DIOCGDINFO: /* get disk label */
- memcpy(addr, xy->sc_dk.dk_label, sizeof(struct disklabel));
- return 0;
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *(xy->sc_dk.dk_label);
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(addr, &newlabel, sizeof (struct olddisklabel));
- return 0;
-#endif
-
- case DIOCGPART: /* get partition info */
- ((struct partinfo *) addr)->disklab = xy->sc_dk.dk_label;
- ((struct partinfo *) addr)->part =
- &xy->sc_dk.dk_label->d_partitions[DISKPART(dev)];
- return 0;
-
case DIOCSDINFO: /* set disk label */
#ifdef __HAVE_OLD_DISKLABEL
case ODIOCSDINFO:
diff --git a/sys/dev/vnd.c b/sys/dev/vnd.c
index 09bf4262e20..3abb2388b4a 100644
--- a/sys/dev/vnd.c
+++ b/sys/dev/vnd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: vnd.c,v 1.237 2014/12/31 17:06:48 christos Exp $ */
+/* $NetBSD: vnd.c,v 1.238 2014/12/31 19:52:05 christos Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 2008 The NetBSD Foundation, Inc.
@@ -91,7 +91,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vnd.c,v 1.237 2014/12/31 17:06:48 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vnd.c,v 1.238 2014/12/31 19:52:05 christos Exp $");
#if defined(_KERNEL_OPT)
#include "opt_vnd.h"
@@ -1059,10 +1059,6 @@ vndioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
return ENXIO;
vio = (struct vnd_ioctl *)data;
- error = disk_ioctl(&vnd->sc_dkdev, cmd, data, flag, l);
- if (error != EPASSTHROUGH)
- return (error);
-
/* Must be open for writes for these commands... */
switch (cmd) {
case VNDIOCSET:
@@ -1107,6 +1103,11 @@ vndioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
return ENXIO;
}
+ error = disk_ioctl(&vnd->sc_dkdev, dev, cmd, data, flag, l);
+ if (error != EPASSTHROUGH)
+ return error;
+
+
switch (cmd) {
#ifdef VNDIOCSET50
case VNDIOCSET50:
@@ -1464,25 +1465,6 @@ unlock_and_exit:
break;
}
- case DIOCGDINFO:
- *(struct disklabel *)data = *(vnd->sc_dkdev.dk_label);
- break;
-
-#ifdef __HAVE_OLD_DISKLABEL
- case ODIOCGDINFO:
- newlabel = *(vnd->sc_dkdev.dk_label);
- if (newlabel.d_npartitions > OLDMAXPARTITIONS)
- return ENOTTY;
- memcpy(data, &newlabel, sizeof (struct olddisklabel));
- break;
-#endif
-
- case DIOCGPART:
- ((struct partinfo *)data)->disklab = vnd->sc_dkdev.dk_label;
- ((struct partinfo *)data)->part =
- &vnd->sc_dkdev.dk_label->d_partitions[DISKPART(dev)];
- break;
-
case DIOCWDINFO:
case DIOCSDINFO:
#ifdef __HAVE_OLD_DISKLABEL