- nbp = getvnbuf();
- off = bn % bsize;
- sz = min(bsize - off, resid);
- (void) VOP_BMAP(vn->sc_vp, bn / bsize, &vp, &nbn, NULL);
+ nra = 0;
+ error = VOP_BMAP(vn->sc_vp, bn / bsize, &vp, &nbn, &nra);
+ if (error == 0 && (long)nbn == -1)
+ error = EIO;
+#ifdef DEBUG
+ if (!dovncluster)
+ nra = 0;
+#endif
+
+ if (off = bn % bsize)
+ sz = bsize - off;
+ else
+ sz = (1 + nra) * bsize;
+ if (resid < sz)
+ sz = resid;