reassign instead of invalidating buffers associated with other vnodes
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 9 Feb 1990 05:54:59 +0000 (21:54 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 9 Feb 1990 05:54:59 +0000 (21:54 -0800)
when doing vinvalbuf (fix for itrunc from noemi@osf.org)

SCCS-vsn: sys/kern/vfs_bio.c 7.21
SCCS-vsn: sys/kern/vfs_cluster.c 7.21

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

index eea22b0..822b05e 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.20 (Berkeley) %G%
+ *     @(#)vfs_bio.c   7.21 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -700,7 +700,10 @@ vinvalbuf(vp, save)
                                (void) bwrite(bp);
                                break;
                        }
                                (void) bwrite(bp);
                                break;
                        }
-                       bp->b_flags |= B_INVAL;
+                       if (bp->b_vp != vp)
+                               reassignbuf(bp, bp->b_vp);
+                       else
+                               bp->b_flags |= B_INVAL;
                        brelse(bp);
                }
        }
                        brelse(bp);
                }
        }
index be0f6c0..b6ac975 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.20 (Berkeley) %G%
+ *     @(#)vfs_cluster.c       7.21 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -700,7 +700,10 @@ vinvalbuf(vp, save)
                                (void) bwrite(bp);
                                break;
                        }
                                (void) bwrite(bp);
                                break;
                        }
-                       bp->b_flags |= B_INVAL;
+                       if (bp->b_vp != vp)
+                               reassignbuf(bp, bp->b_vp);
+                       else
+                               bp->b_flags |= B_INVAL;
                        brelse(bp);
                }
        }
                        brelse(bp);
                }
        }