Deleted Added
full compact
nfs_vnops.c (39794) nfs_vnops.c (40790)
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_vnops.c 8.16 (Berkeley) 5/27/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_vnops.c 8.16 (Berkeley) 5/27/95
37 * $Id: nfs_vnops.c,v 1.108 1998/09/29 23:29:48 mckusick Exp $
37 * $Id: nfs_vnops.c,v 1.109 1998/09/29 23:39:37 mckusick Exp $
38 */
39
40
41/*
42 * vnode op calls for Sun NFS version 2 and 3
43 */
44
45#include "opt_inet.h"

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

2750 endoff = 0;
2751 bvecpos = 0;
2752 if (NFS_ISV3(vp) && commit) {
2753 s = splbio();
2754 /*
2755 * Count up how many buffers waiting for a commit.
2756 */
2757 bveccount = 0;
38 */
39
40
41/*
42 * vnode op calls for Sun NFS version 2 and 3
43 */
44
45#include "opt_inet.h"

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

2750 endoff = 0;
2751 bvecpos = 0;
2752 if (NFS_ISV3(vp) && commit) {
2753 s = splbio();
2754 /*
2755 * Count up how many buffers waiting for a commit.
2756 */
2757 bveccount = 0;
2758 for (bp = vp->v_dirtyblkhd.lh_first; bp; bp = nbp) {
2759 nbp = bp->b_vnbufs.le_next;
2758 for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) {
2759 nbp = TAILQ_NEXT(bp, b_vnbufs);
2760 if ((bp->b_flags & (B_BUSY | B_DELWRI | B_NEEDCOMMIT))
2761 == (B_DELWRI | B_NEEDCOMMIT))
2762 bveccount++;
2763 }
2764 /*
2765 * Allocate space to remember the list of bufs to commit. It is
2766 * important to use M_NOWAIT here to avoid a race with nfs_write.
2767 * If we can't get memory (for whatever reason), we will end up

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

2777 bvec = bvec_on_stack;
2778 bvecsize = NFS_COMMITBVECSIZ;
2779 } else
2780 bvecsize = bveccount;
2781 } else {
2782 bvec = bvec_on_stack;
2783 bvecsize = NFS_COMMITBVECSIZ;
2784 }
2760 if ((bp->b_flags & (B_BUSY | B_DELWRI | B_NEEDCOMMIT))
2761 == (B_DELWRI | B_NEEDCOMMIT))
2762 bveccount++;
2763 }
2764 /*
2765 * Allocate space to remember the list of bufs to commit. It is
2766 * important to use M_NOWAIT here to avoid a race with nfs_write.
2767 * If we can't get memory (for whatever reason), we will end up

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

2777 bvec = bvec_on_stack;
2778 bvecsize = NFS_COMMITBVECSIZ;
2779 } else
2780 bvecsize = bveccount;
2781 } else {
2782 bvec = bvec_on_stack;
2783 bvecsize = NFS_COMMITBVECSIZ;
2784 }
2785 for (bp = vp->v_dirtyblkhd.lh_first; bp; bp = nbp) {
2786 nbp = bp->b_vnbufs.le_next;
2785 for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) {
2786 nbp = TAILQ_NEXT(bp, b_vnbufs);
2787 if (bvecpos >= bvecsize)
2788 break;
2789 if ((bp->b_flags & (B_BUSY | B_DELWRI | B_NEEDCOMMIT))
2790 != (B_DELWRI | B_NEEDCOMMIT))
2791 continue;
2792 bremfree(bp);
2793 /*
2794 * Work out if all buffers are using the same cred

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

2875 }
2876 }
2877
2878 /*
2879 * Start/do any write(s) that are required.
2880 */
2881loop:
2882 s = splbio();
2787 if (bvecpos >= bvecsize)
2788 break;
2789 if ((bp->b_flags & (B_BUSY | B_DELWRI | B_NEEDCOMMIT))
2790 != (B_DELWRI | B_NEEDCOMMIT))
2791 continue;
2792 bremfree(bp);
2793 /*
2794 * Work out if all buffers are using the same cred

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

2875 }
2876 }
2877
2878 /*
2879 * Start/do any write(s) that are required.
2880 */
2881loop:
2882 s = splbio();
2883 for (bp = vp->v_dirtyblkhd.lh_first; bp; bp = nbp) {
2884 nbp = bp->b_vnbufs.le_next;
2883 for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) {
2884 nbp = TAILQ_NEXT(bp, b_vnbufs);
2885 if (bp->b_flags & B_BUSY) {
2886 if (waitfor != MNT_WAIT || passone)
2887 continue;
2888 bp->b_flags |= B_WANTED;
2889 error = tsleep((caddr_t)bp, slpflag | (PRIBIO + 1),
2890 "nfsfsync", slptimeo);
2891 splx(s);
2892 if (error) {

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

2930 goto done;
2931 }
2932 if (slpflag == PCATCH) {
2933 slpflag = 0;
2934 slptimeo = 2 * hz;
2935 }
2936 }
2937 }
2885 if (bp->b_flags & B_BUSY) {
2886 if (waitfor != MNT_WAIT || passone)
2887 continue;
2888 bp->b_flags |= B_WANTED;
2889 error = tsleep((caddr_t)bp, slpflag | (PRIBIO + 1),
2890 "nfsfsync", slptimeo);
2891 splx(s);
2892 if (error) {

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

2930 goto done;
2931 }
2932 if (slpflag == PCATCH) {
2933 slpflag = 0;
2934 slptimeo = 2 * hz;
2935 }
2936 }
2937 }
2938 if (vp->v_dirtyblkhd.lh_first && commit) {
2938 if (!TAILQ_EMPTY(&vp->v_dirtyblkhd) && commit) {
2939 goto loop;
2940 }
2941 }
2942 if (np->n_flag & NWRITEERR) {
2943 error = np->n_error;
2944 np->n_flag &= ~NWRITEERR;
2945 }
2946done:

--- 364 unchanged lines hidden ---
2939 goto loop;
2940 }
2941 }
2942 if (np->n_flag & NWRITEERR) {
2943 error = np->n_error;
2944 np->n_flag &= ~NWRITEERR;
2945 }
2946done:

--- 364 unchanged lines hidden ---