Lines Matching defs:vp

65 static struct buf *nfs_getcacheblk(struct vnode *vp, daddr_t bn, int size,
67 static int nfs_directio_write(struct vnode *vp, struct uio *uiop,
84 struct vnode *vp;
92 vp = ap->a_vp;
93 np = VTONFS(vp);
96 nmp = VFSTONFS(vp->v_mount);
100 if ((object = vp->v_object) == NULL) {
107 if ((np->n_flag & NNONCACHE) && (vp->v_type == VREG)) {
120 (void)nfs_fsinfo(nmp, vp, cred, td);
166 error = (nmp->nm_rpcops->nr_readrpc)(vp, &uio, cred);
245 struct vnode *vp;
252 vp = ap->a_vp;
253 np = VTONFS(vp);
260 nmp = VFSTONFS(vp->v_mount);
271 (void)nfs_fsinfo(nmp, vp, cred, td);
277 (np->n_flag & NNONCACHE) && (vp->v_type == VREG)) {
322 error = (nmp->nm_rpcops->nr_writerpc)(vp, &uio, cred, &iomode, &must_commit);
331 nfs_clearcommit(vp->v_mount);
354 nfs_bioread_check_cons(struct vnode *vp, struct thread *td, struct ucred *cred)
358 struct nfsnode *np = VTONFS(vp);
360 struct nfsmount *nmp = VFSTONFS(vp->v_mount);
368 old_lock = nfs_upgrade_vnlock(vp);
369 if (vp->v_iflag & VI_DOOMED) {
370 nfs_downgrade_vnlock(vp, old_lock);
377 if (vp->v_type != VREG) {
378 if (vp->v_type != VDIR)
380 (nmp->nm_rpcops->nr_invaldir)(vp);
381 error = nfs_vinvalbuf(vp, V_SAVE, td, 1);
386 KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
387 error = VOP_GETATTR(vp, &vattr, cred);
395 error = VOP_GETATTR(vp, &vattr, cred);
402 if (vp->v_type == VDIR)
403 (nmp->nm_rpcops->nr_invaldir)(vp);
404 error = nfs_vinvalbuf(vp, V_SAVE, td, 1);
414 nfs_downgrade_vnlock(vp, old_lock);
422 nfs_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
424 struct nfsnode *np = VTONFS(vp);
428 struct nfsmount *nmp = VFSTONFS(vp->v_mount);
446 (void)nfs_fsinfo(nmp, vp, cred, td);
451 if (vp->v_type != VDIR &&
455 if (nfs_directio_enable && (ioflag & IO_DIRECT) && (vp->v_type == VREG))
457 return nfs_readrpc(vp, uio, cred);
459 biosize = vp->v_bufobj.bo_bsize;
462 error = nfs_bioread_check_cons(vp, td, cred);
473 switch (vp->v_type) {
486 if (incore(&vp->v_bufobj, rabn) == NULL) {
487 rabp = nfs_getcacheblk(vp, rabn, biosize, td);
517 bp = nfs_getcacheblk(vp, lbn, bcount, td);
532 error = nfs_doio(vp, bp, cred, td);
553 bp = nfs_getcacheblk(vp, (daddr_t)0, NFS_MAXPATHLEN, td);
561 error = nfs_doio(vp, bp, cred, td);
579 bp = nfs_getcacheblk(vp, lbn, NFS_DIRBLKSIZ, td);
587 error = nfs_doio(vp, bp, cred, td);
592 (nmp->nm_rpcops->nr_invaldir)(vp);
593 error = nfs_vinvalbuf(vp, 0, td, 1);
608 bp = nfs_getcacheblk(vp, i, NFS_DIRBLKSIZ, td);
616 error = nfs_doio(vp, bp, cred, td);
652 incore(&vp->v_bufobj, lbn + 1) == NULL) {
653 rabp = nfs_getcacheblk(vp, lbn + 1, NFS_DIRBLKSIZ, td);
687 nfs_printf(" nfs_bioread: type %x unexpected\n", vp->v_type);
695 if (vp->v_type == VLNK)
715 nfs_directio_write(vp, uiop, cred, ioflag)
716 struct vnode *vp;
722 struct nfsmount *nmp = VFSTONFS(vp->v_mount);
748 error = (nmp->nm_rpcops->nr_writerpc)(vp, &uio, cred,
822 bp->b_vp = vp;
859 struct vnode *vp = ap->a_vp;
860 struct nfsnode *np = VTONFS(vp);
865 struct nfsmount *nmp = VFSTONFS(vp->v_mount);
874 if (vp->v_type != VREG)
887 (void)nfs_fsinfo(nmp, vp, cred, td);
910 KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
911 error = nfs_vinvalbuf(vp, V_SAVE, td, 1);
924 KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
925 error = VOP_GETATTR(vp, &vattr, cred);
941 if (nfs_directio_enable && (ioflag & IO_DIRECT) && vp->v_type == VREG)
942 return nfs_directio_write(vp, uio, cred, ioflag);
948 if (vn_rlimit_fsize(vp, uio, td))
951 biosize = vp->v_bufobj.bo_bsize;
981 BO_LOCK(&vp->v_bufobj);
982 if (vp->v_bufobj.bo_dirty.bv_cnt != 0) {
983 TAILQ_FOREACH(bp, &vp->v_bufobj.bo_dirty.bv_hd,
989 BO_UNLOCK(&vp->v_bufobj);
1030 bp = nfs_getcacheblk(vp, lbn, bcount, td);
1038 vnode_pager_setsize(vp, np->n_size);
1059 bp = nfs_getcacheblk(vp, lbn, bcount, td);
1064 vnode_pager_setsize(vp, np->n_size);
1104 error = nfs_doio(vp, bp, cred, td);
1231 nfs_getcacheblk(struct vnode *vp, daddr_t bn, int size, struct thread *td)
1237 mp = vp->v_mount;
1244 bp = getblk(vp, bn, size, NFS_PCATCH, 0, 0);
1249 bp = getblk(vp, bn, size, 0, 2 * hz, 0);
1252 bp = getblk(vp, bn, size, 0, 0, 0);
1255 if (vp->v_type == VREG)
1256 bp->b_blkno = bn * (vp->v_bufobj.bo_bsize / DEV_BSIZE);
1265 nfs_vinvalbuf(struct vnode *vp, int flags, struct thread *td, int intrflg)
1267 struct nfsnode *np = VTONFS(vp);
1268 struct nfsmount *nmp = VFSTONFS(vp->v_mount);
1272 ASSERT_VOP_LOCKED(vp, "nfs_vinvalbuf");
1284 old_lock = nfs_upgrade_vnlock(vp);
1285 if (vp->v_iflag & VI_DOOMED) {
1291 nfs_downgrade_vnlock(vp, old_lock);
1298 if ((flags & V_SAVE) && (vp->v_bufobj.bo_object != NULL)) {
1299 VM_OBJECT_LOCK(vp->v_bufobj.bo_object);
1300 vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC);
1301 VM_OBJECT_UNLOCK(vp->v_bufobj.bo_object);
1311 error = vinvalbuf(vp, flags, slpflag, 0);
1315 error = vinvalbuf(vp, flags, 0, slptimeo);
1322 nfs_downgrade_vnlock(vp, old_lock);
1518 nfs_doio(struct vnode *vp, struct buf *bp, struct ucred *cr, struct thread *td)
1529 np = VTONFS(vp);
1530 nmp = VFSTONFS(vp->v_mount);
1552 switch (vp->v_type) {
1556 error = (nmp->nm_rpcops->nr_readrpc)(vp, uiop, cr);
1576 /* ASSERT_VOP_LOCKED(vp, "nfs_doio"); */
1577 if (p && (vp->v_vflag & VV_TEXT)) {
1591 error = (nmp->nm_rpcops->nr_readlinkrpc)(vp, uiop, cr);
1597 error = nfs_readdirplusrpc(vp, uiop, cr);
1602 error = nfs_readdirrpc(vp, uiop, cr);
1611 nfs_printf("nfs_doio: type %x unexpected\n", vp->v_type);
1628 vp, off, bp->b_dirtyend-bp->b_dirtyoff,
1638 nfs_clearcommit(vp->v_mount);
1664 error = (nmp->nm_rpcops->nr_writerpc)(vp, uiop, cr, &iomode, &must_commit);
1702 * the vp's paging queues so we cannot call bdirty(). The
1740 KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
1753 nfs_clearcommit(vp->v_mount);
1767 nfs_meta_setsize(struct vnode *vp, struct ucred *cred, struct thread *td, u_quad_t nsize)
1769 struct nfsnode *np = VTONFS(vp);
1771 int biosize = vp->v_bufobj.bo_bsize;
1789 error = vtruncbuf(vp, cred, td, nsize, biosize);
1792 bp = nfs_getcacheblk(vp, lbn, bufsize, td);
1802 vnode_pager_setsize(vp, nsize);