From 05a0ddc9978ca603939f734f39580dc7748c35d0 Mon Sep 17 00:00:00 2001 From: Kirk McKusick Date: Thu, 8 Feb 1990 21:54:59 -0800 Subject: [PATCH] reassign instead of invalidating buffers associated with other vnodes 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 | 7 +++++-- usr/src/sys/kern/vfs_cluster.c | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/usr/src/sys/kern/vfs_bio.c b/usr/src/sys/kern/vfs_bio.c index eea22b097e..822b05edb6 100644 --- a/usr/src/sys/kern/vfs_bio.c +++ b/usr/src/sys/kern/vfs_bio.c @@ -14,7 +14,7 @@ * 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" @@ -700,7 +700,10 @@ vinvalbuf(vp, save) (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); } } diff --git a/usr/src/sys/kern/vfs_cluster.c b/usr/src/sys/kern/vfs_cluster.c index be0f6c0e96..b6ac975ba5 100644 --- a/usr/src/sys/kern/vfs_cluster.c +++ b/usr/src/sys/kern/vfs_cluster.c @@ -14,7 +14,7 @@ * 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" @@ -700,7 +700,10 @@ vinvalbuf(vp, save) (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); } } -- 2.20.1