Changed B_AGE policy to work correctly in a world with relatively large

buffer caches. The old policy generally ended up caching nothing.
This commit is contained in:
David Greenman 1994-08-08 09:11:44 +00:00
parent 61d5ffaf10
commit 866dba7305
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=1937
8 changed files with 9 additions and 29 deletions

View File

@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_vnops.c 8.3 (Berkeley) 1/23/94
* $Id$
* $Id: cd9660_vnops.c,v 1.3 1994/08/02 07:41:36 davidg Exp $
*/
#include <sys/param.h>
@ -280,9 +280,6 @@ cd9660_read(ap)
}
error = uiomove(bp->b_un.b_addr + on, (int)n, uio);
if (n + on == imp->logical_block_size ||
uio->uio_offset == (off_t)ip->i_size)
bp->b_flags |= B_AGE;
brelse(bp);
} while (error == 0 && uio->uio_resid > 0 && n != 0);
return (error);

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spec_vnops.c 8.6 (Berkeley) 4/9/94
* $Id$
* $Id: spec_vnops.c,v 1.3 1994/08/02 07:45:27 davidg Exp $
*/
#include <sys/param.h>
@ -272,8 +272,6 @@ spec_read(ap)
return (error);
}
error = uiomove((char *)bp->b_data + on, n, uio);
if (n + on == bsize)
bp->b_flags |= B_AGE;
brelse(bp);
} while (error == 0 && uio->uio_resid > 0 && n != 0);
return (error);
@ -352,7 +350,6 @@ spec_write(ap)
}
error = uiomove((char *)bp->b_data + on, n, uio);
if (n + on == bsize) {
bp->b_flags |= B_AGE;
bawrite(bp);
} else
bdwrite(bp);

View File

@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_vnops.c 8.3 (Berkeley) 1/23/94
* $Id$
* $Id: cd9660_vnops.c,v 1.3 1994/08/02 07:41:36 davidg Exp $
*/
#include <sys/param.h>
@ -280,9 +280,6 @@ cd9660_read(ap)
}
error = uiomove(bp->b_un.b_addr + on, (int)n, uio);
if (n + on == imp->logical_block_size ||
uio->uio_offset == (off_t)ip->i_size)
bp->b_flags |= B_AGE;
brelse(bp);
} while (error == 0 && uio->uio_resid > 0 && n != 0);
return (error);

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_cluster.c 8.7 (Berkeley) 2/13/94
* $Id$
* $Id: vfs_cluster.c,v 1.3 1994/08/02 07:43:17 davidg Exp $
*/
#include <sys/param.h>
@ -696,7 +696,7 @@ cluster_wbuild(vp, last_bp, size, start_lbn, len, lbn)
tbp->b_bufsize -= size;
tbp->b_flags &= ~(B_READ | B_DONE | B_ERROR | B_DELWRI);
tbp->b_flags |= (B_ASYNC | B_AGE);
tbp->b_flags |= B_ASYNC;
s = splbio();
reassignbuf(tbp, tbp->b_vp); /* put on clean list */
++tbp->b_vp->v_numoutput;

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)spec_vnops.c 8.6 (Berkeley) 4/9/94
* $Id$
* $Id: spec_vnops.c,v 1.3 1994/08/02 07:45:27 davidg Exp $
*/
#include <sys/param.h>
@ -272,8 +272,6 @@ spec_read(ap)
return (error);
}
error = uiomove((char *)bp->b_data + on, n, uio);
if (n + on == bsize)
bp->b_flags |= B_AGE;
brelse(bp);
} while (error == 0 && uio->uio_resid > 0 && n != 0);
return (error);
@ -352,7 +350,6 @@ spec_write(ap)
}
error = uiomove((char *)bp->b_data + on, n, uio);
if (n + on == bsize) {
bp->b_flags |= B_AGE;
bawrite(bp);
} else
bdwrite(bp);

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_bio.c 8.5 (Berkeley) 1/4/94
* $Id$
* $Id: nfs_bio.c,v 1.3 1994/08/02 07:52:05 davidg Exp $
*/
#include <sys/param.h>
@ -329,8 +329,6 @@ nfs_bioread(vp, uio, ioflag, cred)
}
switch (vp->v_type) {
case VREG:
if (n + on == biosize || uio->uio_offset == np->n_size)
bp->b_flags |= B_AGE;
break;
case VLNK:
n = 0;

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_bio.c 8.5 (Berkeley) 1/4/94
* $Id$
* $Id: nfs_bio.c,v 1.3 1994/08/02 07:52:05 davidg Exp $
*/
#include <sys/param.h>
@ -329,8 +329,6 @@ nfs_bioread(vp, uio, ioflag, cred)
}
switch (vp->v_type) {
case VREG:
if (n + on == biosize || uio->uio_offset == np->n_size)
bp->b_flags |= B_AGE;
break;
case VLNK:
n = 0;

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_readwrite.c 8.7 (Berkeley) 1/21/94
* $Id$
* $Id: ufs_readwrite.c,v 1.3 1994/08/02 07:55:00 davidg Exp $
*/
#ifdef LFS_READWRITE
@ -147,9 +147,6 @@ READ(ap)
uiomove((char *)bp->b_data + blkoffset, (int)xfersize, uio))
break;
if (S_ISREG(mode) && (xfersize + blkoffset == fs->fs_bsize ||
uio->uio_offset == ip->i_size))
bp->b_flags |= B_AGE;
brelse(bp);
}
if (bp != NULL)
@ -268,7 +265,6 @@ WRITE(ap)
if (doclusterwrite)
cluster_write(bp, ip->i_size);
else {
bp->b_flags |= B_AGE;
bawrite(bp);
}
else