have to save v_mountf before vput'ing the vnode
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Sat, 23 Dec 1989 01:15:45 +0000 (17:15 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Sat, 23 Dec 1989 01:15:45 +0000 (17:15 -0800)
SCCS-vsn: sys/kern/vfs_bio.c 7.17
SCCS-vsn: sys/kern/vfs_cluster.c 7.17

usr/src/sys/kern/vfs_bio.c
usr/src/sys/kern/vfs_cluster.c

index 2c34932..a702845 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)vfs_bio.c   7.16 (Berkeley) %G%
+ *     @(#)vfs_bio.c   7.17 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -619,9 +619,11 @@ mntflushbuf(mountp, flags)
        int flags;
 {
        register struct vnode *vp;
        int flags;
 {
        register struct vnode *vp;
+       struct vnode *nvp;
 
 loop:
 
 loop:
-       for (vp = mountp->m_mounth; vp; vp = vp->v_mountf) {
+       for (vp = mountp->m_mounth; vp; vp = nvp) {
+               nvp = vp->v_mountf;
                if (vget(vp))
                        goto loop;
                vflushbuf(vp, flags);
                if (vget(vp))
                        goto loop;
                vflushbuf(vp, flags);
@@ -687,10 +689,12 @@ mntinvalbuf(mountp)
        struct mount *mountp;
 {
        register struct vnode *vp;
        struct mount *mountp;
 {
        register struct vnode *vp;
+       struct vnode *nvp;
        int dirty = 0;
 
 loop:
        int dirty = 0;
 
 loop:
-       for (vp = mountp->m_mounth; vp; vp = vp->v_mountf) {
+       for (vp = mountp->m_mounth; vp; vp = nvp) {
+               nvp = vp->v_mountf;
                if (vget(vp))
                        goto loop;
                dirty += vinvalbuf(vp, 1);
                if (vget(vp))
                        goto loop;
                dirty += vinvalbuf(vp, 1);
index 52fb6e9..2fdabc0 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)vfs_cluster.c       7.16 (Berkeley) %G%
+ *     @(#)vfs_cluster.c       7.17 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -619,9 +619,11 @@ mntflushbuf(mountp, flags)
        int flags;
 {
        register struct vnode *vp;
        int flags;
 {
        register struct vnode *vp;
+       struct vnode *nvp;
 
 loop:
 
 loop:
-       for (vp = mountp->m_mounth; vp; vp = vp->v_mountf) {
+       for (vp = mountp->m_mounth; vp; vp = nvp) {
+               nvp = vp->v_mountf;
                if (vget(vp))
                        goto loop;
                vflushbuf(vp, flags);
                if (vget(vp))
                        goto loop;
                vflushbuf(vp, flags);
@@ -687,10 +689,12 @@ mntinvalbuf(mountp)
        struct mount *mountp;
 {
        register struct vnode *vp;
        struct mount *mountp;
 {
        register struct vnode *vp;
+       struct vnode *nvp;
        int dirty = 0;
 
 loop:
        int dirty = 0;
 
 loop:
-       for (vp = mountp->m_mounth; vp; vp = vp->v_mountf) {
+       for (vp = mountp->m_mounth; vp; vp = nvp) {
+               nvp = vp->v_mountf;
                if (vget(vp))
                        goto loop;
                dirty += vinvalbuf(vp, 1);
                if (vget(vp))
                        goto loop;
                dirty += vinvalbuf(vp, 1);