Deleted Added
full compact
nfs_common.c (51906) nfs_common.c (54480)
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 * $FreeBSD: head/sys/nfs/nfs_common.c 51906 1999-10-03 12:18:29Z phk $
37 * $FreeBSD: head/sys/nfs/nfs_common.c 54480 1999-12-12 06:09:57Z dillon $
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>

--- 1306 unchanged lines hidden (view full) ---

1352 }
1353 if (vap->va_size != np->n_size) {
1354 if (vap->va_type == VREG) {
1355 if (np->n_flag & NMODIFIED) {
1356 if (vap->va_size < np->n_size)
1357 vap->va_size = np->n_size;
1358 else
1359 np->n_size = vap->va_size;
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>

--- 1306 unchanged lines hidden (view full) ---

1352 }
1353 if (vap->va_size != np->n_size) {
1354 if (vap->va_type == VREG) {
1355 if (np->n_flag & NMODIFIED) {
1356 if (vap->va_size < np->n_size)
1357 vap->va_size = np->n_size;
1358 else
1359 np->n_size = vap->va_size;
1360 } else
1360 } else {
1361 np->n_size = vap->va_size;
1361 np->n_size = vap->va_size;
1362 }
1362 vnode_pager_setsize(vp, np->n_size);
1363 vnode_pager_setsize(vp, np->n_size);
1363 } else
1364 } else {
1364 np->n_size = vap->va_size;
1365 np->n_size = vap->va_size;
1366 }
1365 }
1366 np->n_attrstamp = time_second;
1367 if (vaper != NULL) {
1368 bcopy((caddr_t)vap, (caddr_t)vaper, sizeof(*vap));
1369 if (np->n_flag & NCHG) {
1370 if (np->n_flag & NACC)
1371 vaper->va_atime = np->n_atim;
1372 if (np->n_flag & NUPD)

--- 66 unchanged lines hidden (view full) ---

1439 nfsstats.attrcache_hits++;
1440 if (vap->va_size != np->n_size) {
1441 if (vap->va_type == VREG) {
1442 if (np->n_flag & NMODIFIED) {
1443 if (vap->va_size < np->n_size)
1444 vap->va_size = np->n_size;
1445 else
1446 np->n_size = vap->va_size;
1367 }
1368 np->n_attrstamp = time_second;
1369 if (vaper != NULL) {
1370 bcopy((caddr_t)vap, (caddr_t)vaper, sizeof(*vap));
1371 if (np->n_flag & NCHG) {
1372 if (np->n_flag & NACC)
1373 vaper->va_atime = np->n_atim;
1374 if (np->n_flag & NUPD)

--- 66 unchanged lines hidden (view full) ---

1441 nfsstats.attrcache_hits++;
1442 if (vap->va_size != np->n_size) {
1443 if (vap->va_type == VREG) {
1444 if (np->n_flag & NMODIFIED) {
1445 if (vap->va_size < np->n_size)
1446 vap->va_size = np->n_size;
1447 else
1448 np->n_size = vap->va_size;
1447 } else
1449 } else {
1448 np->n_size = vap->va_size;
1450 np->n_size = vap->va_size;
1451 }
1449 vnode_pager_setsize(vp, np->n_size);
1452 vnode_pager_setsize(vp, np->n_size);
1450 } else
1453 } else {
1451 np->n_size = vap->va_size;
1454 np->n_size = vap->va_size;
1455 }
1452 }
1453 bcopy((caddr_t)vap, (caddr_t)vaper, sizeof(struct vattr));
1454 if (np->n_flag & NCHG) {
1455 if (np->n_flag & NACC)
1456 vaper->va_atime = np->n_atim;
1457 if (np->n_flag & NUPD)
1458 vaper->va_mtime = np->n_mtim;
1459 }

--- 685 unchanged lines hidden (view full) ---

2145 if (np->n_cookies.lh_first)
2146 np->n_cookies.lh_first->ndm_eocookie = 0;
2147}
2148
2149/*
2150 * The write verifier has changed (probably due to a server reboot), so all
2151 * B_NEEDCOMMIT blocks will have to be written again. Since they are on the
2152 * dirty block list as B_DELWRI, all this takes is clearing the B_NEEDCOMMIT
1456 }
1457 bcopy((caddr_t)vap, (caddr_t)vaper, sizeof(struct vattr));
1458 if (np->n_flag & NCHG) {
1459 if (np->n_flag & NACC)
1460 vaper->va_atime = np->n_atim;
1461 if (np->n_flag & NUPD)
1462 vaper->va_mtime = np->n_mtim;
1463 }

--- 685 unchanged lines hidden (view full) ---

2149 if (np->n_cookies.lh_first)
2150 np->n_cookies.lh_first->ndm_eocookie = 0;
2151}
2152
2153/*
2154 * The write verifier has changed (probably due to a server reboot), so all
2155 * B_NEEDCOMMIT blocks will have to be written again. Since they are on the
2156 * dirty block list as B_DELWRI, all this takes is clearing the B_NEEDCOMMIT
2153 * flag. Once done the new write verifier can be set for the mount point.
2157 * and B_CLUSTEROK flags. Once done the new write verifier can be set for the
2158 * mount point.
2159 *
2160 * B_CLUSTEROK must be cleared along with B_NEEDCOMMIT because stage 1 data
2161 * writes are not clusterable.
2154 */
2155void
2156nfs_clearcommit(mp)
2157 struct mount *mp;
2158{
2159 register struct vnode *vp, *nvp;
2160 register struct buf *bp, *nbp;
2161 int s;

--- 4 unchanged lines hidden (view full) ---

2166 if (vp->v_mount != mp) /* Paranoia */
2167 goto loop;
2168 nvp = vp->v_mntvnodes.le_next;
2169 for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) {
2170 nbp = TAILQ_NEXT(bp, b_vnbufs);
2171 if (BUF_REFCNT(bp) == 0 &&
2172 (bp->b_flags & (B_DELWRI | B_NEEDCOMMIT))
2173 == (B_DELWRI | B_NEEDCOMMIT))
2162 */
2163void
2164nfs_clearcommit(mp)
2165 struct mount *mp;
2166{
2167 register struct vnode *vp, *nvp;
2168 register struct buf *bp, *nbp;
2169 int s;

--- 4 unchanged lines hidden (view full) ---

2174 if (vp->v_mount != mp) /* Paranoia */
2175 goto loop;
2176 nvp = vp->v_mntvnodes.le_next;
2177 for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) {
2178 nbp = TAILQ_NEXT(bp, b_vnbufs);
2179 if (BUF_REFCNT(bp) == 0 &&
2180 (bp->b_flags & (B_DELWRI | B_NEEDCOMMIT))
2181 == (B_DELWRI | B_NEEDCOMMIT))
2174 bp->b_flags &= ~B_NEEDCOMMIT;
2182 bp->b_flags &= ~(B_NEEDCOMMIT | B_CLUSTEROK);
2175 }
2176 }
2177 splx(s);
2178}
2179
2180#ifndef NFS_NOSERVER
2181/*
2182 * Map errnos to NFS error numbers. For Version 3 also filter out error

--- 79 unchanged lines hidden ---
2183 }
2184 }
2185 splx(s);
2186}
2187
2188#ifndef NFS_NOSERVER
2189/*
2190 * Map errnos to NFS error numbers. For Version 3 also filter out error

--- 79 unchanged lines hidden ---