Module Name: src Committed By: snj Date: Sat Jan 9 01:25:11 UTC 2010
Modified Files: src/sys/dev/dkwedge [netbsd-5]: dk.c Log Message: Pull up following revision(s) (requested by jakllsch in ticket #1213): sys/dev/dkwedge/dk.c: revision 1.52 Implement and use a dkminphys() that calls the parent device's minphys function with b_dev temporarily adjusted to the parent device's dev_t. Fixes PR/37390. To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.42.6.1 src/sys/dev/dkwedge/dk.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/dev/dkwedge/dk.c diff -u src/sys/dev/dkwedge/dk.c:1.42 src/sys/dev/dkwedge/dk.c:1.42.6.1 --- src/sys/dev/dkwedge/dk.c:1.42 Tue Jun 17 14:53:10 2008 +++ src/sys/dev/dkwedge/dk.c Sat Jan 9 01:25:10 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: dk.c,v 1.42 2008/06/17 14:53:10 reinoud Exp $ */ +/* $NetBSD: dk.c,v 1.42.6.1 2010/01/09 01:25:10 snj 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.42 2008/06/17 14:53:10 reinoud Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dk.c,v 1.42.6.1 2010/01/09 01:25:10 snj Exp $"); #include "opt_dkwedge.h" @@ -93,6 +93,7 @@ static void dkstart(struct dkwedge_softc *); static void dkiodone(struct buf *); static void dkrestart(void *); +static void dkminphys(struct buf *); static dev_type_open(dkopen); static dev_type_close(dkclose); @@ -1145,6 +1146,23 @@ } /* + * dkminphys: + * + * Call parent's minphys function. + */ +static void +dkminphys(struct buf *bp) +{ + struct dkwedge_softc *sc = dkwedge_lookup(bp->b_dev); + dev_t dev; + + dev = bp->b_dev; + bp->b_dev = sc->sc_pdev; + (*sc->sc_parent->dk_driver->d_minphys)(bp); + bp->b_dev = dev; +} + +/* * dkread: [devsw entry point] * * Read from a wedge. @@ -1157,8 +1175,7 @@ if (sc->sc_state != DKW_STATE_RUNNING) return (ENXIO); - return (physio(dkstrategy, NULL, dev, B_READ, - sc->sc_parent->dk_driver->d_minphys, uio)); + return (physio(dkstrategy, NULL, dev, B_READ, dkminphys, uio)); } /* @@ -1174,8 +1191,7 @@ if (sc->sc_state != DKW_STATE_RUNNING) return (ENXIO); - return (physio(dkstrategy, NULL, dev, B_WRITE, - sc->sc_parent->dk_driver->d_minphys, uio)); + return (physio(dkstrategy, NULL, dev, B_WRITE, dkminphys, uio)); } /*