--- fs/nfsclient/nfs_clbio.c.orig 2012-01-24 20:49:20.000000000 -0500 +++ fs/nfsclient/nfs_clbio.c 2012-01-24 20:49:51.000000000 -0500 @@ -480,7 +480,8 @@ ncl_bioread(struct vnode *vp, struct uio /* No caching/ no readaheads. Just read data into the user buffer */ return ncl_readrpc(vp, uio, cred); - biosize = vp->v_mount->mnt_stat.f_iosize; + KASSERT(vp->v_bufobj.bo_bsize != 0, ("nfscl bio: bo_bsize == 0")); + biosize = vp->v_bufobj.bo_bsize; seqcount = (int)((off_t)(ioflag >> IO_SEQSHIFT) * biosize / BKVASIZE); error = nfs_bioread_check_cons(vp, td, cred); @@ -960,7 +961,8 @@ flush_and_restart: if (vn_rlimit_fsize(vp, uio, td)) return (EFBIG); - biosize = vp->v_mount->mnt_stat.f_iosize; + KASSERT(vp->v_bufobj.bo_bsize != 0, ("nfscl bio: bo_bsize == 0")); + biosize = vp->v_bufobj.bo_bsize; /* * Find all of this file's B_NEEDCOMMIT buffers. If our writes * would exceed the local maximum per-file write commit size when @@ -1267,7 +1269,9 @@ nfs_getcacheblk(struct vnode *vp, daddr_ if (vp->v_type == VREG) { int biosize; - biosize = mp->mnt_stat.f_iosize; + KASSERT(vp->v_bufobj.bo_bsize != 0, + ("nfscl bio: bo_bsize == 0")); + biosize = vp->v_bufobj.bo_bsize; bp->b_blkno = bn * (biosize / DEV_BSIZE); } return (bp); @@ -1785,9 +1789,11 @@ ncl_meta_setsize(struct vnode *vp, struc { struct nfsnode *np = VTONFS(vp); u_quad_t tsize; - int biosize = vp->v_mount->mnt_stat.f_iosize; + int biosize; int error = 0; + KASSERT(vp->v_bufobj.bo_bsize != 0, ("nfscl bio: bo_bsize == 0")); + biosize = vp->v_bufobj.bo_bsize; mtx_lock(&np->n_mtx); tsize = np->n_size; np->n_size = nsize; --- nfsclient/nfs_bio.c.orig 2012-01-24 20:50:36.000000000 -0500 +++ nfsclient/nfs_bio.c 2012-01-24 20:52:09.000000000 -0500 @@ -474,7 +474,7 @@ nfs_bioread(struct vnode *vp, struct uio /* No caching/ no readaheads. Just read data into the user buffer */ return nfs_readrpc(vp, uio, cred); - biosize = vp->v_mount->mnt_stat.f_iosize; + biosize = vp->v_bufobj.bo_bsize; seqcount = (int)((off_t)(ioflag >> IO_SEQSHIFT) * biosize / BKVASIZE); error = nfs_bioread_check_cons(vp, td, cred); @@ -951,7 +951,7 @@ flush_and_restart: if (vn_rlimit_fsize(vp, uio, td)) return (EFBIG); - biosize = vp->v_mount->mnt_stat.f_iosize; + biosize = vp->v_bufobj.bo_bsize; /* * Find all of this file's B_NEEDCOMMIT buffers. If our writes * would exceed the local maximum per-file write commit size when @@ -1258,7 +1258,7 @@ nfs_getcacheblk(struct vnode *vp, daddr_ if (vp->v_type == VREG) { int biosize; - biosize = mp->mnt_stat.f_iosize; + biosize = vp->v_bufobj.bo_bsize; bp->b_blkno = bn * (biosize / DEV_BSIZE); } return (bp); @@ -1767,7 +1767,7 @@ nfs_meta_setsize(struct vnode *vp, struc { struct nfsnode *np = VTONFS(vp); u_quad_t tsize; - int biosize = vp->v_mount->mnt_stat.f_iosize; + int biosize = vp->v_bufobj.bo_bsize; int error = 0; mtx_lock(&np->n_mtx);