Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev Adapt all disk devices in MI directories to handle O...
details: https://anonhg.NetBSD.org/src/rev/f988e6eb0a1f
branches: trunk
changeset: 501798:f988e6eb0a1f
user: fvdl <fvdl%NetBSD.org@localhost>
date: Sun Jan 07 18:09:01 2001 +0000
description:
Adapt all disk devices in MI directories to handle ODIOC* calls
for ports that have bumped MAXPARTITIONS (and thus define
__HAVE_OLD_DISKLABEL).
diffstat:
sys/dev/ata/wd.c | 48 ++++++++++++++++++++++++++++--
sys/dev/ccd.c | 56 ++++++++++++++++++++++++++++++++++-
sys/dev/isa/fd.c | 32 +++++++++++++++++++-
sys/dev/isa/mcd.c | 41 +++++++++++++++++++++++++-
sys/dev/ld.c | 43 +++++++++++++++++++++++++-
sys/dev/mscp/mscp_disk.c | 49 ++++++++++++++++++++++++++++--
sys/dev/ofw/ofdisk.c | 46 +++++++++++++++++++++++++++-
sys/dev/qbus/rl.c | 39 +++++++++++++++++++++++-
sys/dev/raidframe/rf_netbsdkintf.c | 59 ++++++++++++++++++++++++++++++++++---
sys/dev/scsipi/cd.c | 41 +++++++++++++++++++++++++-
sys/dev/scsipi/sd.c | 48 ++++++++++++++++++++++++++++-
sys/dev/vme/xd.c | 40 +++++++++++++++++++++++--
sys/dev/vme/xy.c | 38 +++++++++++++++++++++--
sys/dev/vnd.c | 58 +++++++++++++++++++++++++++++++++++-
14 files changed, 593 insertions(+), 45 deletions(-)
diffs (truncated from 1318 to 300 lines):
diff -r 121ef6295bf5 -r f988e6eb0a1f sys/dev/ata/wd.c
--- a/sys/dev/ata/wd.c Sun Jan 07 17:55:40 2001 +0000
+++ b/sys/dev/ata/wd.c Sun Jan 07 18:09:01 2001 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: wd.c,v 1.210 2000/12/14 23:56:18 lukem Exp $ */
+/* $NetBSD: wd.c,v 1.211 2001/01/07 18:09:01 fvdl Exp $ */
/*
* Copyright (c) 1998 Manuel Bouyer. All rights reserved.
@@ -923,6 +923,9 @@
{
struct wd_softc *wd = device_lookup(&wd_cd, WDUNIT(dev));
int error;
+#ifdef __HAVE_OLD_DISKLABEL
+ struct disklabel newlabel;
+#endif
WDCDEBUG_PRINT(("wdioctl\n"), DEBUG_FUNCS);
@@ -943,7 +946,15 @@
case DIOCGDINFO:
*(struct disklabel *)addr = *(wd->sc_dk.dk_label);
return 0;
-
+#ifdef __HAVE_OLD_DISKLABEL
+ case ODIOCGDINFO:
+ newlabel = *(wd->sc_dk.dk_label);
+ if (newlabel.d_npartitions > OLDMAXPARTITIONS)
+ newlabel.d_npartitions = OLDMAXPARTITIONS;
+ memcpy(addr, &newlabel, sizeof (struct olddisklabel));
+ return 0;
+#endif
+
case DIOCGPART:
((struct partinfo *)addr)->disklab = wd->sc_dk.dk_label;
((struct partinfo *)addr)->part =
@@ -952,6 +963,22 @@
case DIOCWDINFO:
case DIOCSDINFO:
+#ifdef __HAVE_OLD_DISKLABEL
+ case ODIOCWDINFO:
+ case ODIOCSDINFO:
+#endif
+ {
+ struct disklabel *lp;
+
+#ifdef __HAVE_OLD_DISKLABEL
+ if (xfer == ODIOCSDINFO || xfer == ODIOCWDINFO) {
+ memset(&newlabel, 0, sizeof newlabel);
+ memcpy(&newlabel, addr, sizeof (struct olddisklabel));
+ lp = &newlabel;
+ } else
+#endif
+ lp = (struct disklabel *)addr;
+
if ((flag & FWRITE) == 0)
return EBADF;
@@ -960,12 +987,16 @@
wd->sc_flags |= WDF_LABELLING;
error = setdisklabel(wd->sc_dk.dk_label,
- (struct disklabel *)addr, /*wd->sc_dk.dk_openmask : */0,
+ lp, /*wd->sc_dk.dk_openmask : */0,
wd->sc_dk.dk_cpulabel);
if (error == 0) {
if (wd->drvp->state > RECAL)
wd->drvp->drive_flags |= DRIVE_RESET;
- if (xfer == DIOCWDINFO)
+ if (xfer == DIOCWDINFO
+#ifdef __HAVE_OLD_DISKLABEL
+ || xfer == ODIOCWDINFO
+#endif
+ )
error = writedisklabel(WDLABELDEV(dev),
wdstrategy, wd->sc_dk.dk_label,
wd->sc_dk.dk_cpulabel);
@@ -974,6 +1005,7 @@
wd->sc_flags &= ~WDF_LABELLING;
wdunlock(wd);
return error;
+ }
case DIOCKLABEL:
if (*(int *)addr)
@@ -994,6 +1026,14 @@
case DIOCGDEFLABEL:
wdgetdefaultlabel(wd, (struct disklabel *)addr);
return 0;
+#ifdef __HAVE_OLD_DISKLABEL
+ case ODIOCGDEFLABEL:
+ wdgetdefaultlabel(wd, &newlabel);
+ if (newlabel.d_npartitions > OLDMAXPARTITIONS)
+ newlabel.d_npartitions = OLDMAXPARTITIONS;
+ memcpy(addr, &newlabel, sizeof (struct olddisklabel));
+ return 0;
+#endif
#ifdef notyet
case DIOCWFORMAT:
diff -r 121ef6295bf5 -r f988e6eb0a1f sys/dev/ccd.c
--- a/sys/dev/ccd.c Sun Jan 07 17:55:40 2001 +0000
+++ b/sys/dev/ccd.c Sun Jan 07 18:09:01 2001 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ccd.c,v 1.69 2000/04/05 04:03:20 enami Exp $ */
+/* $NetBSD: ccd.c,v 1.70 2001/01/07 18:09:01 fvdl Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 1999 The NetBSD Foundation, Inc.
@@ -957,6 +957,9 @@
struct ccd_ioctl *ccio = (struct ccd_ioctl *)data;
char **cpp;
struct vnode **vpp;
+#ifdef __HAVE_OLD_DISKLABEL
+ struct disklabel newlabel;
+#endif
if (unit >= numccd)
return (ENXIO);
@@ -968,6 +971,10 @@
case CCDIOCCLR:
case DIOCSDINFO:
case DIOCWDINFO:
+#ifdef __HAVE_OLD_DISKLABEL
+ case ODIOCSDINFO:
+ case ODIOCWDINFO:
+#endif
case DIOCWLABEL:
if ((flag & FWRITE) == 0)
return (EBADF);
@@ -985,6 +992,12 @@
case DIOCGPART:
case DIOCWLABEL:
case DIOCGDEFLABEL:
+#ifdef __HAVE_OLD_DISKLABEL
+ case ODIOCGDINFO:
+ case ODIOCSDINFO:
+ case ODIOCWDINFO:
+ case ODIOCGDEFLABEL:
+#endif
if ((cs->sc_flags & CCDF_INITED) == 0) {
error = ENXIO;
goto out;
@@ -1134,6 +1147,14 @@
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)
+ newlabel.d_npartitions = OLDMAXPARTITIONS;
+ memcpy(data, &newlabel, sizeof (struct olddisklabel));
+ break;
+#endif
case DIOCGPART:
((struct partinfo *)data)->disklab = cs->sc_dkdev.dk_label;
@@ -1143,12 +1164,31 @@
case DIOCWDINFO:
case DIOCSDINFO:
+#ifdef __HAVE_OLD_DISKLABEL
+ case ODIOCWDINFO:
+ case ODIOCSDINFO:
+#endif
+ {
+ struct disklabel *lp;
+#ifdef __HAVE_OLD_DISKLABEL
+ if (cmd == ODIOCSDINFO || cmd == ODIOCWDINFO) {
+ memset(&newlabel, 0, sizeof newlabel);
+ memcpy(&newlabel, data, sizeof (struct olddisklabel));
+ lp = &newlabel;
+ } else
+#endif
+ lp = (struct disklabel *)data;
+
cs->sc_flags |= CCDF_LABELLING;
error = setdisklabel(cs->sc_dkdev.dk_label,
- (struct disklabel *)data, 0, cs->sc_dkdev.dk_cpulabel);
+ lp, 0, cs->sc_dkdev.dk_cpulabel);
if (error == 0) {
- if (cmd == DIOCWDINFO)
+ if (cmd == DIOCWDINFO
+#ifdef __HAVE_OLD_DISKLABEL
+ || cmd == ODIOCWDINFO
+#endif
+ )
error = writedisklabel(CCDLABELDEV(dev),
ccdstrategy, cs->sc_dkdev.dk_label,
cs->sc_dkdev.dk_cpulabel);
@@ -1156,6 +1196,7 @@
cs->sc_flags &= ~CCDF_LABELLING;
break;
+ }
case DIOCWLABEL:
if (*(int *)data != 0)
@@ -1168,6 +1209,15 @@
ccdgetdefaultlabel(cs, (struct disklabel *)data);
break;
+#ifdef __HAVE_OLD_DISKLABEL
+ case ODIOCGDEFLABEL:
+ ccdgetdefaultlabel(cs, &newlabel);
+ if (newlabel.d_npartitions > OLDMAXPARTITIONS)
+ newlabel.d_npartitions = OLDMAXPARTITIONS;
+ memcpy(data, &newlabel, sizeof (struct olddisklabel));
+ break;
+#endif
+
default:
error = ENOTTY;
}
diff -r 121ef6295bf5 -r f988e6eb0a1f sys/dev/isa/fd.c
--- a/sys/dev/isa/fd.c Sun Jan 07 17:55:40 2001 +0000
+++ b/sys/dev/isa/fd.c Sun Jan 07 18:09:01 2001 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: fd.c,v 1.10 2000/12/17 07:37:31 jmc Exp $ */
+/* $NetBSD: fd.c,v 1.11 2001/01/07 18:09:02 fvdl Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -1300,9 +1300,15 @@
unsigned int scratch;
int il[FD_MAX_NSEC + 1];
register int i, j;
+#ifdef __HAVE_OLD_DISKLABEL
+ struct disklabel newlabel;
+#endif
switch (cmd) {
case DIOCGDINFO:
+#ifdef __HAVE_OLD_DISKLABEL
+ case ODIOCGDINFO:
+#endif
memset(&buffer, 0, sizeof(buffer));
buffer.d_secpercyl = fd->sc_type->seccyl;
@@ -1312,6 +1318,13 @@
if (readdisklabel(dev, fdstrategy, &buffer, NULL) != NULL)
return EINVAL;
+#ifdef __HAVE_OLD_DISKLABEL
+ if (cmd == ODIOCGDINFO) {
+ if (buffer.d_npartitions > OLDMAXPARTITIONS)
+ buffer.d_npartitions = OLDMAXPARTITIONS;
+ memcpy(addr, &buffer, sizeof (struct olddisklabel));
+ } else
+#endif
*(struct disklabel *)addr = buffer;
return 0;
@@ -1322,15 +1335,30 @@
return 0;
case DIOCWDINFO:
+#ifdef __HAVE_OLD_DISKLABEL
+ 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
+#endif
+ lp = (struct disklabel *)addr;
- error = setdisklabel(&buffer, (struct disklabel *)addr, 0, NULL);
+ error = setdisklabel(&buffer, lp, 0, NULL);
if (error)
return error;
error = writedisklabel(dev, fdstrategy, &buffer, NULL);
return error;
+ }
case FDIOCGETFORMAT:
form_parms = (struct fdformat_parms *)addr;
diff -r 121ef6295bf5 -r f988e6eb0a1f sys/dev/isa/mcd.c
--- a/sys/dev/isa/mcd.c Sun Jan 07 17:55:40 2001 +0000
+++ b/sys/dev/isa/mcd.c Sun Jan 07 18:09:01 2001 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: mcd.c,v 1.67 2000/07/06 02:02:48 thorpej Exp $ */
+/* $NetBSD: mcd.c,v 1.68 2001/01/07 18:09:01 fvdl Exp $ */
/*
* Copyright (c) 1993, 1994, 1995 Charles M. Hannum. All rights reserved.
@@ -600,6 +600,9 @@
struct mcd_softc *sc = device_lookup(&mcd_cd, MCDUNIT(dev));
int error;
Home |
Main Index |
Thread Index |
Old Index