Module Name:    src
Committed By:   haad
Date:           Fri Jun  5 21:52:32 UTC 2009

Modified Files:
        src/sbin/fsck: Makefile partutil.c
        src/sbin/fsck_ffs: Makefile
        src/sbin/newfs: Makefile
        src/sbin/newfs_ext2fs: Makefile
        src/sbin/newfs_lfs: Makefile
        src/sbin/newfs_msdos: Makefile
        src/sbin/resize_lfs: Makefile
        src/sys/dev/dm: device-mapper.c dm.h dm_ioctl.c
        src/sys/dev/isa: fd.c
        src/sys/dev/raidframe: rf_netbsdkintf.c
        src/sys/dev/scsipi: cd.c sd.c

Log Message:
Add support for DIOCGDISKINFO to disk like device drivers. Change
partutil.c::getdiskinfo to use it to get disk geometry info.
Use DIOCGWEDGEINFO ioctl to get information about partition size, if disk
driver doesn't support it use old DIOCGDINFO. This patch adds support for
wedge like devices(lvm logical volumes, ZFS zvol partitions) to newfs and
other tools.

No objections on tech-userle...@.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sbin/fsck/Makefile
cvs rdiff -u -r1.4 -r1.5 src/sbin/fsck/partutil.c
cvs rdiff -u -r1.39 -r1.40 src/sbin/fsck_ffs/Makefile
cvs rdiff -u -r1.32 -r1.33 src/sbin/newfs/Makefile
cvs rdiff -u -r1.2 -r1.3 src/sbin/newfs_ext2fs/Makefile
cvs rdiff -u -r1.7 -r1.8 src/sbin/newfs_lfs/Makefile
cvs rdiff -u -r1.4 -r1.5 src/sbin/newfs_msdos/Makefile
cvs rdiff -u -r1.4 -r1.5 src/sbin/resize_lfs/Makefile
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/dm/device-mapper.c
cvs rdiff -u -r1.13 -r1.14 src/sys/dev/dm/dm.h
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/dm/dm_ioctl.c
cvs rdiff -u -r1.92 -r1.93 src/sys/dev/isa/fd.c
cvs rdiff -u -r1.262 -r1.263 src/sys/dev/raidframe/rf_netbsdkintf.c
cvs rdiff -u -r1.292 -r1.293 src/sys/dev/scsipi/cd.c
cvs rdiff -u -r1.286 -r1.287 src/sys/dev/scsipi/sd.c

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

Modified files:

Index: src/sbin/fsck/Makefile
diff -u src/sbin/fsck/Makefile:1.17 src/sbin/fsck/Makefile:1.18
--- src/sbin/fsck/Makefile:1.17	Sat Aug 26 18:14:28 2006
+++ src/sbin/fsck/Makefile	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.17 2006/08/26 18:14:28 christos Exp $
+#	$NetBSD: Makefile,v 1.18 2009/06/05 21:52:31 haad Exp $
 
 PROG=	fsck
 SRCS=	fsck.c fsutil.c preen.c
@@ -7,4 +7,7 @@
 LDADD+=-lutil
 DPADD+=${LIBUTIL}
 
+LDADD+=-lprop
+DPADD+=${LIBPROP}
+
 .include <bsd.prog.mk>

Index: src/sbin/fsck/partutil.c
diff -u src/sbin/fsck/partutil.c:1.4 src/sbin/fsck/partutil.c:1.5
--- src/sbin/fsck/partutil.c:1.4	Sat Apr 11 06:48:36 2009
+++ src/sbin/fsck/partutil.c	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: partutil.c,v 1.4 2009/04/11 06:48:36 lukem Exp $	*/
+/*	$NetBSD: partutil.c,v 1.5 2009/06/05 21:52:31 haad Exp $	*/
 
 /*-
  * Copyright (c) 2006 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: partutil.c,v 1.4 2009/04/11 06:48:36 lukem Exp $");
+__RCSID("$NetBSD: partutil.c,v 1.5 2009/06/05 21:52:31 haad Exp $");
 
 #include <sys/types.h>
 #include <sys/disklabel.h>
@@ -38,31 +38,36 @@
 #include <sys/ioctl.h>
 #include <sys/stat.h>
 
+
 #include <disktab.h>
+#include <err.h>
+#include <errno.h>
 #include <fcntl.h>
 #include <util.h>
 #include <unistd.h>
-#include <err.h>
+#include <stdlib.h>
 #include <string.h>
-#include <errno.h>
+
+#include <prop/proplib.h>
 
 #include "partutil.h"
 
+
+/*
+ * Set what we need to know about disk geometry.
+ */
 static void
-label2geom(struct disk_geom *geo, const struct disklabel *lp)
+dict2geom(struct disk_geom *geo, prop_dictionary_t dict)
 {
-	geo->dg_secperunit = lp->d_secperunit;
-	geo->dg_secsize = lp->d_secsize;
-	geo->dg_nsectors = lp->d_nsectors;
-	geo->dg_ntracks = lp->d_ntracks;
-	geo->dg_ncylinders = lp->d_ncylinders;
-	geo->dg_secpercyl = lp->d_secpercyl;
-	geo->dg_pcylinders = lp->d_ncylinders;
-	geo->dg_sparespertrack = lp->d_sparespertrack;
-	geo->dg_sparespercyl = lp->d_sparespercyl;
-	geo->dg_acylinders = lp->d_acylinders;
+	memset(geo, 0, sizeof(struct disk_geom));
+	prop_dictionary_get_int64(dict, "sectors-per-unit", &geo->dg_secperunit);
+	prop_dictionary_get_uint32(dict, "sector-size", &geo->dg_secsize);
+	prop_dictionary_get_uint32(dict, "sectors-per-track", &geo->dg_nsectors);
+	prop_dictionary_get_uint32(dict, "tracks-per-cylinder", &geo->dg_ntracks);
+	prop_dictionary_get_uint32(dict, "cylinders-per-unit", &geo->dg_ncylinders);
 }
 
+
 static void
 part2wedge(struct dkwedge_info *dkw, const struct disklabel *lp, const char *s)
 {
@@ -132,45 +137,32 @@
 {
 	struct disklabel lab;
 	struct disklabel *lp = &lab;
-	char parent[1024];
+	prop_dictionary_t disk_dict, geom_dict;
 
 	if (dt) {
 		lp = getdiskbyname(dt);
 		if (lp == NULL)
 			errx(1, "%s: unknown disk type", dt);
-		goto part;
 	}
 
-	if (ioctl(fd, DIOCGDINFO, lp) == -1) {
-		if (errno == ENOTTY) {
-			int pfd;
-			if (ioctl(fd, DIOCGWEDGEINFO, dkw) == -1) {
-				warn("ioctl (DIOCGWEDGEINFO)");
-				goto bad;
-			}
-			pfd = opendisk(dkw->dkw_parent, O_RDONLY,
-			    parent, sizeof(parent), 0);
-			if (pfd == -1) {
-				warn("Cannot open `%s'", dkw->dkw_parent);
-				goto bad;
-			}
-			if (ioctl(pfd, DIOCGDINFO, lp) != -1) {
-				(void)close(pfd);
-				goto label;
-			} else {
-				int serrno = errno;
-				(void)close(pfd);
-				errno = serrno;
-			}
-		}
-		warn("ioctl (DIOCGDINFO)");
-		goto bad;
+	/* Get disk description dictionary */
+	if (prop_dictionary_recv_ioctl(fd, DIOCGDISKINFO, &disk_dict) != 0) {
+		warn("Please implement DIOCGDISKINFO for %s\n disk driver\n", s);
+		return (errno);
 	}
-part:
-	part2wedge(dkw, lp, s);
-label:
-	label2geom(geo, lp);
+	
+	geom_dict = prop_dictionary_get(disk_dict, "geometry");
+	dict2geom(geo, geom_dict);
+
+	/* Get info about partition/wedge */
+	if (ioctl(fd, DIOCGWEDGEINFO, dkw) == -1) {
+		warn("ioctl (DIOCGWEDGEINFO)");
+		printf("Using old disklabel method\n");
+		if (ioctl(fd, DIOCGDINFO, lp) == -1)
+			errx(errno, "Please implement DIOCGWEDGEINFO or DIOCGDINFO for disk device %s\n", s);
+
+		part2wedge(dkw, lp, s);
+	}
+
 	return 0;
-bad:
-	return -1;
 }

Index: src/sbin/fsck_ffs/Makefile
diff -u src/sbin/fsck_ffs/Makefile:1.39 src/sbin/fsck_ffs/Makefile:1.40
--- src/sbin/fsck_ffs/Makefile:1.39	Sat Apr 11 07:58:12 2009
+++ src/sbin/fsck_ffs/Makefile	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.39 2009/04/11 07:58:12 lukem Exp $
+#	$NetBSD: Makefile,v 1.40 2009/06/05 21:52:31 haad Exp $
 #	@(#)Makefile	8.2 (Berkeley) 4/27/95
 
 WARNS?=	3	# XXX: sign-compare issues
@@ -29,6 +29,9 @@
 LDADD+=-lutil
 DPADD+=${LIBUTIL}
 
+LDADD+=-lprop
+DPADD+=${LIBPROP}
+
 .if (defined(HAVE_GCC) && ${HAVE_GCC} == 4) || defined(HAVE_PCC)
 COPTS.ffs_appleufs.c+=	-Wno-pointer-sign
 .endif

Index: src/sbin/newfs/Makefile
diff -u src/sbin/newfs/Makefile:1.32 src/sbin/newfs/Makefile:1.33
--- src/sbin/newfs/Makefile:1.32	Fri Aug 29 00:02:23 2008
+++ src/sbin/newfs/Makefile	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.32 2008/08/29 00:02:23 gmcgarry Exp $
+#	$NetBSD: Makefile,v 1.33 2009/06/05 21:52:31 haad Exp $
 #	@(#)Makefile	8.2 (Berkeley) 3/27/94
 
 .include <bsd.own.mk>
@@ -10,8 +10,15 @@
 DISKLABEL=${NETBSDSRCDIR}/sbin/disklabel
 FSCK=${NETBSDSRCDIR}/sbin/fsck
 CPPFLAGS+=-DMFS -I${.CURDIR} -I${DISKLABEL} -I${FSCK}
+
+CFLAGS+= -g -O0
+
 DPADD+= ${LIBUTIL}
 LDADD+= -lutil
+
+LDADD+=-lprop
+DPADD+=${LIBPROP}
+
 .PATH:	${DISKLABEL} ${NETBSDSRCDIR}/sys/ufs/ffs ${FSCK}
 
 LINKS=	${BINDIR}/newfs ${BINDIR}/mount_mfs

Index: src/sbin/newfs_ext2fs/Makefile
diff -u src/sbin/newfs_ext2fs/Makefile:1.2 src/sbin/newfs_ext2fs/Makefile:1.3
--- src/sbin/newfs_ext2fs/Makefile:1.2	Sat Apr 11 07:58:13 2009
+++ src/sbin/newfs_ext2fs/Makefile	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.2 2009/04/11 07:58:13 lukem Exp $
+#	$NetBSD: Makefile,v 1.3 2009/06/05 21:52:31 haad Exp $
 #	@(#)Makefile	8.2 (Berkeley) 3/27/94
 
 WARNS?=	3	# XXX: sign-compare issues
@@ -11,8 +11,13 @@
 
 FSCK=${NETBSDSRCDIR}/sbin/fsck
 CPPFLAGS+=-I${.CURDIR} -I${FSCK}
+
 DPADD+= ${LIBUTIL}
 LDADD+= -lutil
+
+LDADD+=-lprop
+DPADD+=${LIBPROP}
+
 .PATH:	${NETBSDSRCDIR}/sys/ufs/ext2fs ${FSCK}
 
 .include <bsd.prog.mk>

Index: src/sbin/newfs_lfs/Makefile
diff -u src/sbin/newfs_lfs/Makefile:1.7 src/sbin/newfs_lfs/Makefile:1.8
--- src/sbin/newfs_lfs/Makefile:1.7	Sat Apr 11 07:58:13 2009
+++ src/sbin/newfs_lfs/Makefile	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.7 2009/04/11 07:58:13 lukem Exp $
+#	$NetBSD: Makefile,v 1.8 2009/06/05 21:52:31 haad Exp $
 #	@(#)Makefile	8.1 (Berkeley) 6/18/93
 
 WARNS?=	3	# XXX: sign-compare issues
@@ -18,6 +18,10 @@
 
 DPADD=  ${LIBUTIL}
 LDADD=  -lutil
+
+LDADD+=-lprop
+DPADD+=${LIBPROP}
+
 CPPFLAGS+=-I${FSCK_LFS} -I${FSCK} "-Dmutex_enter(x)=" "-Dmutex_exit(x)=" # -DNDEBUG # -DVERBOSE_BLOCKMAP
 CPPFLAGS+="-DKASSERT(x)="
 

Index: src/sbin/newfs_msdos/Makefile
diff -u src/sbin/newfs_msdos/Makefile:1.4 src/sbin/newfs_msdos/Makefile:1.5
--- src/sbin/newfs_msdos/Makefile:1.4	Mon Aug 11 10:56:54 2008
+++ src/sbin/newfs_msdos/Makefile	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.4 2008/08/11 10:56:54 christos Exp $
+# $NetBSD: Makefile,v 1.5 2009/06/05 21:52:31 haad Exp $
 # From: $FreeBSD: src/sbin/newfs_msdos/Makefile,v 1.5 2001/03/26 14:33:18 ru Exp $
 
 .include <bsd.own.mk>
@@ -10,6 +10,9 @@
 LDADD+= -lutil
 DPADD+= ${LIBUTIL}
 
+LDADD+=-lprop
+DPADD+=${LIBPROP}
+
 FSCK=${NETBSDSRCDIR}/sbin/fsck
 CPPFLAGS+=-I${.CURDIR} -I${FSCK}
 .PATH:  ${FSCK}

Index: src/sbin/resize_lfs/Makefile
diff -u src/sbin/resize_lfs/Makefile:1.4 src/sbin/resize_lfs/Makefile:1.5
--- src/sbin/resize_lfs/Makefile:1.4	Sat Apr 11 07:58:13 2009
+++ src/sbin/resize_lfs/Makefile	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.4 2009/04/11 07:58:13 lukem Exp $
+#	$NetBSD: Makefile,v 1.5 2009/06/05 21:52:31 haad Exp $
 
 WARNS?=	3	# XXX: sign-compare issues
 
@@ -10,8 +10,13 @@
 
 FSCK=${NETBSDSRCDIR}/sbin/fsck
 CPPFLAGS+=-I${FSCK}
+
 DPADD+= ${LIBUTIL}
 LDADD+= -lutil
+
+LDADD+=-lprop
+DPADD+=${LIBPROP}
+
 .PATH: ${FSCK}
 
 .include <bsd.prog.mk>

Index: src/sys/dev/dm/device-mapper.c
diff -u src/sys/dev/dm/device-mapper.c:1.6 src/sys/dev/dm/device-mapper.c:1.7
--- src/sys/dev/dm/device-mapper.c:1.6	Mon Apr  6 22:58:10 2009
+++ src/sys/dev/dm/device-mapper.c	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-/*        $NetBSD: device-mapper.c,v 1.6 2009/04/06 22:58:10 haad Exp $ */
+/*        $NetBSD: device-mapper.c,v 1.7 2009/06/05 21:52:31 haad Exp $ */
 
 /*
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -329,37 +329,26 @@
 		dm_dev_unbusy(dmv);
 		break;
 	}
-	
-	case DIOCGDINFO:
-	{
-		if ((dmv = dm_dev_lookup(NULL, NULL, minor(dev))) == NULL)
-			return ENOENT;
-
-		aprint_debug("DIOCGDINFO %d\n", dmv->diskp->dk_label->d_secsize);
-		 
-		*(struct disklabel *)data = *(dmv->diskp->dk_label);
 
-		dm_dev_unbusy(dmv);
-		break;
-	}
-	 
-	case DIOCGPART:
+	case DIOCGDISKINFO:
 	{
+		struct plistref *pref = (struct plistref *) data;
+
 		if ((dmv = dm_dev_lookup(NULL, NULL, minor(dev))) == NULL)
 			return ENOENT;
-
-		((struct partinfo *)data)->disklab = dmv->diskp->dk_label;
-		((struct partinfo *)data)->part = &dmv->diskp->dk_label->d_partitions[0];
+		
+		if (dmv->diskp->dk_info == NULL) {
+			dm_dev_unbusy(dmv);
+			return ENOTSUP;
+		} else
+			prop_dictionary_copyout_ioctl(pref, cmd,
+			    dmv->diskp->dk_info);
 
 		dm_dev_unbusy(dmv);
+		
 		break;
 	}
-	case DIOCWDINFO:
-	case DIOCSDINFO:
-	case DIOCKLABEL:
-	case DIOCWLABEL:
-	case DIOCGDEFLABEL:
-		
+	
 	default:
 		aprint_debug("unknown disk_ioctl called\n");
 		return 1;
@@ -504,55 +493,38 @@
 	bp->b_bcount = MIN(bp->b_bcount, MAXPHYS);
 }
 
- /*
-  * Load the label information on the named device
-  * Actually fabricate a disklabel.
-  *
-  * EVENTUALLY take information about different
-  * data tracks from the TOC and put it in the disklabel
-  *
-  * Copied from vnd code.
-  */
 void
-dmgetdisklabel(struct disklabel *lp, dm_table_head_t *head)
+dmgetproperties(struct disk *disk, dm_table_head_t *head)
 {
-	struct partition *pp;
+	prop_dictionary_t disk_info, odisk_info, geom;
 	int dmp_size;
-
+	
 	dmp_size = dm_table_size(head);
+	
+	disk_info = prop_dictionary_create();
 
-	/*
-	 * Size must be at least 2048 DEV_BSIZE blocks
-	 * (1M) in order to use this geometry.
-	 */
-		
-	lp->d_secperunit = dmp_size;
-	lp->d_secsize = DEV_BSIZE;
-	lp->d_nsectors = 32;
-	lp->d_ntracks = 64;
-	lp->d_ncylinders = dmp_size / (lp->d_nsectors * lp->d_ntracks);
-	lp->d_secpercyl = lp->d_ntracks * lp->d_nsectors;
-
-	strncpy(lp->d_typename, "lvm", sizeof(lp->d_typename));
-	lp->d_type = DTYPE_DM;
-	strncpy(lp->d_packname, "fictitious", sizeof(lp->d_packname));
-	lp->d_rpm = 3600;
-	lp->d_interleave = 1;
-	lp->d_flags = 0;
+	prop_dictionary_set_cstring_nocopy(disk_info, "type", "ESDI");
 
-	pp = &lp->d_partitions[0];
-	/*
-	 * This is logical offset and therefore it can be 0
-	 * I will consider table offsets later in dmstrategy.
-	 */
-	pp->p_offset = 0; 
-	pp->p_size = dmp_size * DEV_BSIZE;
-	pp->p_fstype = FS_BSDFFS;  /* default value */
-	lp->d_npartitions = 1;
-
-	lp->d_magic = DISKMAGIC;
-	lp->d_magic2 = DISKMAGIC;
-	lp->d_checksum = dkcksum(lp);
+	geom = prop_dictionary_create();
+
+	prop_dictionary_set_uint64(geom, "sectors-per-unit", dmp_size);
+
+	prop_dictionary_set_uint32(geom, "sector-size",
+	    DEV_BSIZE /* XXX 512? */);
+
+	prop_dictionary_set_uint32(geom, "sectors-per-track", 32);
+
+	prop_dictionary_set_uint32(geom, "tracks-per-cylinder", 64);
+
+	prop_dictionary_set_uint32(geom, "cylinders-per-unit", dmp_size / 2048);
+
+	prop_dictionary_set(disk_info, "geometry", geom);
+	prop_object_release(geom);
+
+	odisk_info = disk->dk_info;
 	
-	return;
-}
+	disk->dk_info = disk_info;
+
+	if (odisk_info != NULL)
+		prop_object_release(odisk_info);
+}	

Index: src/sys/dev/dm/dm.h
diff -u src/sys/dev/dm/dm.h:1.13 src/sys/dev/dm/dm.h:1.14
--- src/sys/dev/dm/dm.h:1.13	Fri Jun  5 19:56:40 2009
+++ src/sys/dev/dm/dm.h	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-/*        $NetBSD: dm.h,v 1.13 2009/06/05 19:56:40 haad Exp $      */
+/*        $NetBSD: dm.h,v 1.14 2009/06/05 21:52:31 haad Exp $      */
 
 /*
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -244,7 +244,7 @@
 };
 
 /* device-mapper */
-void dmgetdisklabel(struct disklabel *, dm_table_head_t *);
+void dmgetproperties(struct disk *, dm_table_head_t *);
 
 /* dm_ioctl.c */
 int dm_dev_create_ioctl(prop_dictionary_t);

Index: src/sys/dev/dm/dm_ioctl.c
diff -u src/sys/dev/dm/dm_ioctl.c:1.12 src/sys/dev/dm/dm_ioctl.c:1.13
--- src/sys/dev/dm/dm_ioctl.c:1.12	Fri Jun  5 19:56:40 2009
+++ src/sys/dev/dm/dm_ioctl.c	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-/*        $NetBSD: dm_ioctl.c,v 1.12 2009/06/05 19:56:40 haad Exp $      */
+/*        $NetBSD: dm_ioctl.c,v 1.13 2009/06/05 21:52:31 haad Exp $      */
 
 /*
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -247,6 +247,8 @@
 
 	disk_init(dmv->diskp, dmv->name, &dmdkdriver);
 	disk_attach(dmv->diskp);
+
+	dmv->diskp->dk_info = NULL;
 	
 	if ((r = dm_dev_insert(dmv)) != 0)		
 		dm_dev_free(dmv);
@@ -539,7 +541,7 @@
 		
 	DM_ADD_FLAG(flags, DM_EXISTS_FLAG);	
 
-	dmgetdisklabel(dmv->diskp->dk_label, &dmv->table_head);
+	dmgetproperties(dmv->diskp, &dmv->table_head);
 	
 	prop_dictionary_set_uint32(dm_dict, DM_IOCTL_OPEN, dmv->table_head.io_cnt);
 	prop_dictionary_set_uint32(dm_dict, DM_IOCTL_FLAGS, dmv->flags);

Index: src/sys/dev/isa/fd.c
diff -u src/sys/dev/isa/fd.c:1.92 src/sys/dev/isa/fd.c:1.93
--- src/sys/dev/isa/fd.c:1.92	Tue May 12 08:44:19 2009
+++ src/sys/dev/isa/fd.c	Fri Jun  5 21:52:31 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: fd.c,v 1.92 2009/05/12 08:44:19 cegger Exp $	*/
+/*	$NetBSD: fd.c,v 1.93 2009/06/05 21:52:31 haad 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.92 2009/05/12 08:44:19 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.93 2009/06/05 21:52:31 haad Exp $");
 
 #include "rnd.h"
 #include "opt_ddb.h"
@@ -1400,6 +1400,10 @@
 	struct disklabel newlabel;
 #endif
 
+	error = disk_ioctl(&fd->sc_dk, cmd, addr, flag, l);
+	if (error != EPASSTHROUGH)
+		return (error);
+
 	switch (cmd) {
 	case DIOCGDINFO:
 #ifdef __HAVE_OLD_DISKLABEL

Index: src/sys/dev/raidframe/rf_netbsdkintf.c
diff -u src/sys/dev/raidframe/rf_netbsdkintf.c:1.262 src/sys/dev/raidframe/rf_netbsdkintf.c:1.263
--- src/sys/dev/raidframe/rf_netbsdkintf.c:1.262	Tue May 12 13:19:50 2009
+++ src/sys/dev/raidframe/rf_netbsdkintf.c	Fri Jun  5 21:52:32 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: rf_netbsdkintf.c,v 1.262 2009/05/12 13:19:50 cegger Exp $	*/
+/*	$NetBSD: rf_netbsdkintf.c,v 1.263 2009/06/05 21:52:32 haad Exp $	*/
 /*-
  * Copyright (c) 1996, 1997, 1998, 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -139,7 +139,7 @@
  ***********************************************************/
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.262 2009/05/12 13:19:50 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.263 2009/06/05 21:52:32 haad Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -1731,6 +1731,10 @@
 	/*
 	 * Add support for "regular" device ioctls here.
 	 */
+	
+	error = disk_ioctl(&rs->sc_dkdev, cmd, addr, flag, l); 
+	if (error != EPASSTHROUGH)
+		return (error);
 
 	switch (cmd) {
 	case DIOCGDINFO:

Index: src/sys/dev/scsipi/cd.c
diff -u src/sys/dev/scsipi/cd.c:1.292 src/sys/dev/scsipi/cd.c:1.293
--- src/sys/dev/scsipi/cd.c:1.292	Tue Apr  7 18:35:17 2009
+++ src/sys/dev/scsipi/cd.c	Fri Jun  5 21:52:32 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd.c,v 1.292 2009/04/07 18:35:17 dyoung Exp $	*/
+/*	$NetBSD: cd.c,v 1.293 2009/06/05 21:52:32 haad 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.292 2009/04/07 18:35:17 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.293 2009/06/05 21:52:32 haad Exp $");
 
 #include "rnd.h"
 
@@ -1325,6 +1325,10 @@
 		}
 	}
 
+	error = disk_ioctl(&cd->sc_dk, cmd, addr, flag, l); 
+	if (error != EPASSTHROUGH)
+		return (error);
+
 	switch (cmd) {
 	case DIOCGDINFO:
 		*(struct disklabel *)addr = *(cd->sc_dk.dk_label);

Index: src/sys/dev/scsipi/sd.c
diff -u src/sys/dev/scsipi/sd.c:1.286 src/sys/dev/scsipi/sd.c:1.287
--- src/sys/dev/scsipi/sd.c:1.286	Wed May 20 03:26:21 2009
+++ src/sys/dev/scsipi/sd.c	Fri Jun  5 21:52:32 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: sd.c,v 1.286 2009/05/20 03:26:21 dyoung Exp $	*/
+/*	$NetBSD: sd.c,v 1.287 2009/06/05 21:52:32 haad 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.286 2009/05/20 03:26:21 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sd.c,v 1.287 2009/06/05 21:52:32 haad Exp $");
 
 #include "opt_scsi.h"
 #include "rnd.h"
@@ -1030,6 +1030,10 @@
 		}
 	}
 
+	error = disk_ioctl(&sd->sc_dk, cmd, addr, flag, l); 
+	if (error != EPASSTHROUGH)
+		return (error);
+
 	switch (cmd) {
 	case DIOCGDINFO:
 		*(struct disklabel *)addr = *(sd->sc_dk.dk_label);

Reply via email to