Module Name:    src
Committed By:   christos
Date:           Wed Dec 31 19:58:59 UTC 2014

Modified Files:
        src/sys/kern: subr_disk.c

Log Message:
Mention which ioctls need to move to dk_ioctl, and don't allow wedges on
wedges.


To generate a diff of this commit:
cvs rdiff -u -r1.108 -r1.109 src/sys/kern/subr_disk.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/subr_disk.c
diff -u src/sys/kern/subr_disk.c:1.108 src/sys/kern/subr_disk.c:1.109
--- src/sys/kern/subr_disk.c:1.108	Wed Dec 31 14:52:06 2014
+++ src/sys/kern/subr_disk.c	Wed Dec 31 14:58:59 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_disk.c,v 1.108 2014/12/31 19:52:06 christos Exp $	*/
+/*	$NetBSD: subr_disk.c,v 1.109 2014/12/31 19:58:59 christos Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1999, 2000, 2009 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.108 2014/12/31 19:52:06 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.109 2014/12/31 19:58:59 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -498,16 +498,34 @@ disk_ioctl(struct disk *dk, dev_t dev, u
 #endif
 
 	switch (cmd) {
+	case DIOCGDISKINFO:
+		if (dk->dk_info == NULL)
+			return ENOTSUP;
+		return prop_dictionary_copyout_ioctl(data, cmd, dk->dk_info);
+
+	case DIOCGSECTORSIZE:
+		*(u_int *)data = dk->dk_geom.dg_secsize;
+		return 0;
+
+	case DIOCGMEDIASIZE:
+		*(off_t *)data = (off_t)dk->dk_geom.dg_secsize *
+		    dk->dk_geom.dg_secperunit;
+		return 0;
+	default:
+		break;
+	}
+
+	if (dev == 0)
+		return EPASSTHROUGH;
+
+	/* The following should be moved to dk_ioctl */
+	switch (cmd) {
 	case DIOCGDINFO:
-		if (dev == 0)
-			return EPASSTHROUGH;
 		memcpy(data, dk->dk_label, sizeof (*dk->dk_label));
 		return 0;
 
 #ifdef __HAVE_OLD_DISKLABEL
 	case ODIOCGDINFO:
-		if (dev == 0)
-			return EPASSTHROUGH;
 		memcpy(&newlabel, dk->dk_label, sizeof(newlabel));
 		if (newlabel.d_npartitions > OLDMAXPARTITIONS)
 			return ENOTTY;
@@ -516,8 +534,6 @@ disk_ioctl(struct disk *dk, dev_t dev, u
 #endif
 
 	case DIOCGPART:
-		if (dev == 0)
-			return EPASSTHROUGH;
 		pt = data;
 		pt->disklab = dk->dk_label;
 		pt->part = &dk->dk_label->d_partitions[DISKPART(dev)];
@@ -549,20 +565,6 @@ disk_ioctl(struct disk *dk, dev_t dev, u
 		dkwedge_discover(dk);
 		return 0;
 
-	case DIOCGDISKINFO:
-		if (dk->dk_info == NULL)
-			return ENOTSUP;
-		return prop_dictionary_copyout_ioctl(data, cmd, dk->dk_info);
-
-	case DIOCGSECTORSIZE:
-		*(u_int *)data = dk->dk_geom.dg_secsize;
-		return 0;
-
-	case DIOCGMEDIASIZE:
-		*(off_t *)data = (off_t)dk->dk_geom.dg_secsize *
-		    dk->dk_geom.dg_secperunit;
-		return 0;
-
 	default:
 		return EPASSTHROUGH;
 	}

Reply via email to