Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-5]: src/sys/dev/isa Pull up revisions 1.11-1.12 (requested by f...



details:   https://anonhg.NetBSD.org/src/rev/03242ab2b3c7
branches:  netbsd-1-5
changeset: 491528:03242ab2b3c7
user:      he <he%NetBSD.org@localhost>
date:      Tue May 01 12:27:14 2001 +0000

description:
Pull up revisions 1.11-1.12 (requested by fvdl):
  Increase the number of BSD disklabel partitions on i386 to 16.

diffstat:

 sys/dev/isa/fd.c |  32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diffs (71 lines):

diff -r 97c3816ae2cf -r 03242ab2b3c7 sys/dev/isa/fd.c
--- a/sys/dev/isa/fd.c  Tue May 01 12:27:11 2001 +0000
+++ b/sys/dev/isa/fd.c  Tue May 01 12:27:14 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: fd.c,v 1.5 2000/05/11 15:42:00 jdolecek Exp $  */
+/*     $NetBSD: fd.c,v 1.5.4.1 2001/05/01 12:27:14 he Exp $    */
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -1281,9 +1281,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;
@@ -1293,6 +1299,13 @@
                if (readdisklabel(dev, fdstrategy, &buffer, NULL) != NULL)
                        return EINVAL;
 
+#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;
 
@@ -1303,15 +1316,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;



Home | Main Index | Thread Index | Old Index