Module Name: src Committed By: riastradh Date: Sun Mar 29 21:08:08 UTC 2015
Modified Files: src/share/man/man9: bufferio.9 Log Message: Remove \& from example code. Cargo-culted from I forget where. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/share/man/man9/bufferio.9 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/share/man/man9/bufferio.9 diff -u src/share/man/man9/bufferio.9:1.3 src/share/man/man9/bufferio.9:1.4 --- src/share/man/man9/bufferio.9:1.3 Sun Mar 29 21:06:26 2015 +++ src/share/man/man9/bufferio.9 Sun Mar 29 21:08:08 2015 @@ -1,4 +1,4 @@ -.\" $NetBSD: bufferio.9,v 1.3 2015/03/29 21:06:26 riastradh Exp $ +.\" $NetBSD: bufferio.9,v 1.4 2015/03/29 21:08:08 riastradh Exp $ .\" .\" Copyright (c) 2015 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -96,6 +96,7 @@ Caller must provide and must not call .Fn biowait bp . .El +which is zero. .It Fa bp Ns Li "->b_data" Pointer to kernel virtual address of source/target for transfer. .It Fa bp Ns Li "->b_bcount" @@ -198,51 +199,51 @@ or submitting the last nested I/O transf .Pp For example: .Bd -literal -offset abcd -\&struct buf *mbp, *bp; -\&size_t skipped = 0; -\&unsigned i; -\&int error = 0; -\& -\&mbp = getiobuf(vp, true); -\&mbp->b_data = data; -\&mbp->b_resid = mbp->b_bcount = datalen; -\&mbp->b_flags = B_WRITE; -\& -\&KASSERT(i < nsegs); -\&for (i = 0; i < nsegs; i++) { -\& struct vnode *devvp; -\& daddr_t blkno; -\& -\& vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); -\& error = VOP_BMAP(vp, i*segsz, &devvp, &blkno, NULL); -\& VOP_UNLOCK(vp); -\& if (error == 0 && nbn == -1) -\& error = EIO; -\& if (error) { -\& skipped += segsz; -\& break; -\& } -\& -\& bp = getiobuf(vp, true); -\& nestiobuf_setup(bp, mbp, i*segsz, segsz); -\& bp->b_blkno = blkno; -\& if (i == nsegs - 1) /* Last segment. */ -\& break; -\& VOP_STRATEGY(devvp, bp); -\&} -\& -\&/* -\& * Account v_numoutput for master write. -\& * (Must not vn_lock before last VOP_STRATEGY!) -\& */ -\&mutex_enter(&vp->v_interlock); -\&vp->v_numoutput++; -\&mutex_exit(&vp->v_interlock); -\& -\&if (skipped) -\& nestiobuf_done(mbp, skipped, error); -\&else -\& VOP_STRATEGY(devvp, bp); +struct buf *mbp, *bp; +size_t skipped = 0; +unsigned i; +int error = 0; + +mbp = getiobuf(vp, true); +mbp->b_data = data; +mbp->b_resid = mbp->b_bcount = datalen; +mbp->b_flags = B_WRITE; + +KASSERT(i < nsegs); +for (i = 0; i < nsegs; i++) { + struct vnode *devvp; + daddr_t blkno; + + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); + error = VOP_BMAP(vp, i*segsz, &devvp, &blkno, NULL); + VOP_UNLOCK(vp); + if (error == 0 && nbn == -1) + error = EIO; + if (error) { + skipped += segsz; + break; + } + + bp = getiobuf(vp, true); + nestiobuf_setup(bp, mbp, i*segsz, segsz); + bp->b_blkno = blkno; + if (i == nsegs - 1) /* Last segment. */ + break; + VOP_STRATEGY(devvp, bp); +} + +/* + * Account v_numoutput for master write. + * (Must not vn_lock before last VOP_STRATEGY!) + */ +mutex_enter(&vp->v_interlock); +vp->v_numoutput++; +mutex_exit(&vp->v_interlock); + +if (skipped) + nestiobuf_done(mbp, skipped, error); +else + VOP_STRATEGY(devvp, bp); .Ed .Sh BLOCK DEVICE DRIVERS Block device drivers implement a