Module Name: src
Committed By: riastradh
Date: Mon Mar 30 13:58:03 UTC 2015
Modified Files:
src/share/man/man9: bufferio.9
Log Message:
Fix example code and emphasize it doesn't handle holes.
To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 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.12 src/share/man/man9/bufferio.9:1.13
--- src/share/man/man9/bufferio.9:1.12 Mon Mar 30 13:40:01 2015
+++ src/share/man/man9/bufferio.9 Mon Mar 30 13:58:03 2015
@@ -1,4 +1,4 @@
-.\" $NetBSD: bufferio.9,v 1.12 2015/03/30 13:40:01 riastradh Exp $
+.\" $NetBSD: bufferio.9,v 1.13 2015/03/30 13:58:03 riastradh Exp $
.\"
.\" Copyright (c) 2015 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -235,7 +235,8 @@ mbp->b_data = data;
mbp->b_resid = mbp->b_bcount = datalen;
mbp->b_flags = B_WRITE;
-KASSERT(i < nsegs);
+KASSERT(0 < nsegs);
+KASSERT(datalen == nsegs*segsz);
for (i = 0; i < nsegs; i++) {
struct vnode *devvp;
daddr_t blkno;
@@ -246,7 +247,8 @@ for (i = 0; i < nsegs; i++) {
if (error == 0 && nbn == -1)
error = EIO;
if (error) {
- skipped += segsz;
+ /* Give up early, don't try to handle holes. */
+ skipped += datalen - i*segsz;
break;
}