--- kernel/bsd/vfs/vfs_cluster.c 2018/04/24 18:26:06 1.1 +++ kernel/bsd/vfs/vfs_cluster.c 2018/04/24 18:31:23 1.1.1.2 @@ -77,7 +77,7 @@ struct buf *cluster_rbuild __P((struct vnode *, u_quad_t, struct buf *, daddr_t, daddr_t, long, int, long, long)); struct buf *cluster_create __P((struct vnode *, struct buf *, daddr_t, daddr_t, long, - int, long, daddr_t *)); + int, long, daddr_t *, int)); int cluster_block __P((struct vnode *, u_quad_t, struct buf *, long, long)); void cluster_wbuild __P((struct vnode *, struct buf *, long, daddr_t, int, daddr_t, long, int)); @@ -530,7 +530,7 @@ int cluster_block(vp, filesize, bp, size if ((u_quad_t)size * ((u_quad_t)(lbn + num_io)) > filesize) num_io = (filesize - ((u_quad_t)size * (u_quad_t)lbn)) / size; - cbp = cluster_create(vp, bp, lbn, blkno, size, num_io, secsize, &ioblkno); + cbp = cluster_create(vp, bp, lbn, blkno, size, num_io, secsize, &ioblkno, B_AGE); if (cbp) { (void) VOP_STRATEGY(cbp); @@ -606,7 +606,7 @@ advisory_read(vp, filesize, lblkno, size } num_io = min(num, num_io + 1); - cbp = cluster_create(vp, NULL, lblkno, blkno, size, num_io, secsize, &ioblkno); + cbp = cluster_create(vp, NULL, lblkno, blkno, size, num_io, secsize, &ioblkno, 0); if (cbp) { KERNEL_DEBUG((FSDBG_CODE(DBG_FSRW, 13)) | DBG_FUNC_NONE, @@ -764,7 +764,7 @@ cluster_rbuild(vp, filesize, bp, lbn, bl struct buf * -cluster_create(vp, bp, lbn, blkno, size, run, secsize, ioblkno) +cluster_create(vp, bp, lbn, blkno, size, run, secsize, ioblkno, flags) struct vnode *vp; struct buf *bp; daddr_t lbn; @@ -773,6 +773,7 @@ cluster_create(vp, bp, lbn, blkno, size, int run; long secsize; daddr_t *ioblkno; + int flags; { struct cluster_save *b_save; struct buf *tbp, *cbp; @@ -858,7 +859,7 @@ cluster_create(vp, bp, lbn, blkno, size, cp += size; if (tbp != bp) - tbp->b_flags |= (B_READ | B_ASYNC); + tbp->b_flags |= (B_READ | B_ASYNC | flags); b_save->bs_children[i] = tbp; b_save->bs_nchildren++; }