nfs_srvsubs.c (44101) | nfs_srvsubs.c (47028) |
---|---|
1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Rick Macklem at The University of Guelph. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 20 unchanged lines hidden (view full) --- 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * 36 * @(#)nfs_subs.c 8.8 (Berkeley) 5/22/95 | 1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Rick Macklem at The University of Guelph. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 20 unchanged lines hidden (view full) --- 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * 36 * @(#)nfs_subs.c 8.8 (Berkeley) 5/22/95 |
37 * $Id: nfs_subs.c,v 1.72 1999/01/27 22:42:27 dillon Exp $ | 37 * $Id: nfs_subs.c,v 1.73 1999/02/17 13:59:29 bde Exp $ |
38 */ 39 40/* 41 * These functions support the macros and help fiddle mbuf chains for 42 * the nfs op functions. They do things like create the rpc header and 43 * copy data between mbuf chains and uio lists. 44 */ 45#include <sys/param.h> --- 1209 unchanged lines hidden (view full) --- 1255 md = *mdp; 1256 t1 = (mtod(md, caddr_t) + md->m_len) - *dposp; 1257 if ((error = nfsm_disct(mdp, dposp, NFSX_FATTR(v3), t1, &cp2)) != 0) 1258 return (error); 1259 fp = (struct nfs_fattr *)cp2; 1260 if (v3) { 1261 vtyp = nfsv3tov_type(fp->fa_type); 1262 vmode = fxdr_unsigned(u_short, fp->fa_mode); | 38 */ 39 40/* 41 * These functions support the macros and help fiddle mbuf chains for 42 * the nfs op functions. They do things like create the rpc header and 43 * copy data between mbuf chains and uio lists. 44 */ 45#include <sys/param.h> --- 1209 unchanged lines hidden (view full) --- 1255 md = *mdp; 1256 t1 = (mtod(md, caddr_t) + md->m_len) - *dposp; 1257 if ((error = nfsm_disct(mdp, dposp, NFSX_FATTR(v3), t1, &cp2)) != 0) 1258 return (error); 1259 fp = (struct nfs_fattr *)cp2; 1260 if (v3) { 1261 vtyp = nfsv3tov_type(fp->fa_type); 1262 vmode = fxdr_unsigned(u_short, fp->fa_mode); |
1263 rdev = makedev(fxdr_unsigned(int, fp->fa3_rdev.specdata1), | 1263 rdev = umakedev(fxdr_unsigned(int, fp->fa3_rdev.specdata1), |
1264 fxdr_unsigned(int, fp->fa3_rdev.specdata2)); 1265 fxdr_nfsv3time(&fp->fa3_mtime, &mtime); 1266 } else { 1267 vtyp = nfsv2tov_type(fp->fa_type); 1268 vmode = fxdr_unsigned(u_short, fp->fa_mode); 1269 /* 1270 * XXX 1271 * --- 35 unchanged lines hidden (view full) --- 1307 np = VTONFS(vp); 1308 if (vp->v_type != vtyp) { 1309 vp->v_type = vtyp; 1310 if (vp->v_type == VFIFO) { 1311 vp->v_op = fifo_nfsv2nodeop_p; 1312 } 1313 if (vp->v_type == VCHR || vp->v_type == VBLK) { 1314 vp->v_op = spec_nfsv2nodeop_p; | 1264 fxdr_unsigned(int, fp->fa3_rdev.specdata2)); 1265 fxdr_nfsv3time(&fp->fa3_mtime, &mtime); 1266 } else { 1267 vtyp = nfsv2tov_type(fp->fa_type); 1268 vmode = fxdr_unsigned(u_short, fp->fa_mode); 1269 /* 1270 * XXX 1271 * --- 35 unchanged lines hidden (view full) --- 1307 np = VTONFS(vp); 1308 if (vp->v_type != vtyp) { 1309 vp->v_type = vtyp; 1310 if (vp->v_type == VFIFO) { 1311 vp->v_op = fifo_nfsv2nodeop_p; 1312 } 1313 if (vp->v_type == VCHR || vp->v_type == VBLK) { 1314 vp->v_op = spec_nfsv2nodeop_p; |
1315 nvp = checkalias(vp, (dev_t)rdev, vp->v_mount); | 1315 nvp = checkalias(vp, rdev, vp->v_mount); |
1316 if (nvp) { 1317 /* 1318 * Discard unneeded vnode, but save its nfsnode. 1319 * Since the nfsnode does not have a lock, its 1320 * vnode lock has to be carried over. 1321 */ 1322 nvp->v_vnlock = vp->v_vnlock; 1323 vp->v_vnlock = NULL; --- 9 unchanged lines hidden (view full) --- 1333 *vpp = vp = nvp; 1334 } 1335 } 1336 np->n_mtime = mtime.tv_sec; 1337 } 1338 vap = &np->n_vattr; 1339 vap->va_type = vtyp; 1340 vap->va_mode = (vmode & 07777); | 1316 if (nvp) { 1317 /* 1318 * Discard unneeded vnode, but save its nfsnode. 1319 * Since the nfsnode does not have a lock, its 1320 * vnode lock has to be carried over. 1321 */ 1322 nvp->v_vnlock = vp->v_vnlock; 1323 vp->v_vnlock = NULL; --- 9 unchanged lines hidden (view full) --- 1333 *vpp = vp = nvp; 1334 } 1335 } 1336 np->n_mtime = mtime.tv_sec; 1337 } 1338 vap = &np->n_vattr; 1339 vap->va_type = vtyp; 1340 vap->va_mode = (vmode & 07777); |
1341 vap->va_rdev = (dev_t)rdev; | 1341 vap->va_rdev = rdev; |
1342 vap->va_mtime = mtime; 1343 vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0]; 1344 if (v3) { 1345 vap->va_nlink = fxdr_unsigned(u_short, fp->fa_nlink); 1346 vap->va_uid = fxdr_unsigned(uid_t, fp->fa_uid); 1347 vap->va_gid = fxdr_unsigned(gid_t, fp->fa_gid); 1348 fxdr_hyper(&fp->fa3_size, &vap->va_size); 1349 vap->va_blocksize = NFS_FABLKSIZE; --- 507 unchanged lines hidden (view full) --- 1857 fp->fa_nlink = txdr_unsigned(vap->va_nlink); 1858 fp->fa_uid = txdr_unsigned(vap->va_uid); 1859 fp->fa_gid = txdr_unsigned(vap->va_gid); 1860 if (nfsd->nd_flag & ND_NFSV3) { 1861 fp->fa_type = vtonfsv3_type(vap->va_type); 1862 fp->fa_mode = vtonfsv3_mode(vap->va_mode); 1863 txdr_hyper(&vap->va_size, &fp->fa3_size); 1864 txdr_hyper(&vap->va_bytes, &fp->fa3_used); | 1342 vap->va_mtime = mtime; 1343 vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0]; 1344 if (v3) { 1345 vap->va_nlink = fxdr_unsigned(u_short, fp->fa_nlink); 1346 vap->va_uid = fxdr_unsigned(uid_t, fp->fa_uid); 1347 vap->va_gid = fxdr_unsigned(gid_t, fp->fa_gid); 1348 fxdr_hyper(&fp->fa3_size, &vap->va_size); 1349 vap->va_blocksize = NFS_FABLKSIZE; --- 507 unchanged lines hidden (view full) --- 1857 fp->fa_nlink = txdr_unsigned(vap->va_nlink); 1858 fp->fa_uid = txdr_unsigned(vap->va_uid); 1859 fp->fa_gid = txdr_unsigned(vap->va_gid); 1860 if (nfsd->nd_flag & ND_NFSV3) { 1861 fp->fa_type = vtonfsv3_type(vap->va_type); 1862 fp->fa_mode = vtonfsv3_mode(vap->va_mode); 1863 txdr_hyper(&vap->va_size, &fp->fa3_size); 1864 txdr_hyper(&vap->va_bytes, &fp->fa3_used); |
1865 fp->fa3_rdev.specdata1 = txdr_unsigned(major(vap->va_rdev)); 1866 fp->fa3_rdev.specdata2 = txdr_unsigned(minor(vap->va_rdev)); | 1865 fp->fa3_rdev.specdata1 = txdr_unsigned(umajor(vap->va_rdev)); 1866 fp->fa3_rdev.specdata2 = txdr_unsigned(uminor(vap->va_rdev)); |
1867 fp->fa3_fsid.nfsuquad[0] = 0; 1868 fp->fa3_fsid.nfsuquad[1] = txdr_unsigned(vap->va_fsid); 1869 fp->fa3_fileid.nfsuquad[0] = 0; 1870 fp->fa3_fileid.nfsuquad[1] = txdr_unsigned(vap->va_fileid); 1871 txdr_nfsv3time(&vap->va_atime, &fp->fa3_atime); 1872 txdr_nfsv3time(&vap->va_mtime, &fp->fa3_mtime); 1873 txdr_nfsv3time(&vap->va_ctime, &fp->fa3_ctime); 1874 } else { --- 353 unchanged lines hidden --- | 1867 fp->fa3_fsid.nfsuquad[0] = 0; 1868 fp->fa3_fsid.nfsuquad[1] = txdr_unsigned(vap->va_fsid); 1869 fp->fa3_fileid.nfsuquad[0] = 0; 1870 fp->fa3_fileid.nfsuquad[1] = txdr_unsigned(vap->va_fileid); 1871 txdr_nfsv3time(&vap->va_atime, &fp->fa3_atime); 1872 txdr_nfsv3time(&vap->va_mtime, &fp->fa3_mtime); 1873 txdr_nfsv3time(&vap->va_ctime, &fp->fa3_ctime); 1874 } else { --- 353 unchanged lines hidden --- |