diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 2000-04-02 15:24:56 +0000 | 
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2000-04-02 15:24:56 +0000 | 
| commit | c244d2de435ed1913d6a7da017b205bffb44b36d (patch) | |
| tree | 46bc33c5a3d3f0f652e9af40acac38ed8c4492c6 /sys/kern/vfs_cluster.c | |
| parent | 4c9805fafa5fb041fa369df26cd26fee579223fe (diff) | |
Notes
Diffstat (limited to 'sys/kern/vfs_cluster.c')
| -rw-r--r-- | sys/kern/vfs_cluster.c | 16 | 
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c index d7e6f61c5ee1..44ac9858defa 100644 --- a/sys/kern/vfs_cluster.c +++ b/sys/kern/vfs_cluster.c @@ -247,7 +247,8 @@ single_block_read:  #endif  		if ((bp->b_flags & B_CLUSTER) == 0)  			vfs_busy_pages(bp, 0); -		bp->b_flags &= ~(B_ERROR|B_INVAL); +		bp->b_flags &= ~B_INVAL; +		bp->b_ioflags &= ~BIO_ERROR;  		if ((bp->b_flags & B_ASYNC) || bp->b_iodone != NULL)  			BUF_KERNPROC(bp);  		error = VOP_STRATEGY(vp, bp); @@ -282,7 +283,8 @@ single_block_read:  			if ((rbp->b_flags & B_CLUSTER) == 0)  				vfs_busy_pages(rbp, 0); -			rbp->b_flags &= ~(B_ERROR|B_INVAL); +			rbp->b_flags &= ~B_INVAL; +			rbp->b_ioflags &= ~BIO_ERROR;  			if ((rbp->b_flags & B_ASYNC) || rbp->b_iodone != NULL)  				BUF_KERNPROC(rbp);  			(void) VOP_STRATEGY(vp, rbp); @@ -468,7 +470,7 @@ cluster_callback(bp)  	/*  	 * Must propogate errors to all the components.  	 */ -	if (bp->b_flags & B_ERROR) +	if (bp->b_ioflags & BIO_ERROR)  		error = bp->b_error;  	pmap_qremove(trunc_page((vm_offset_t) bp->b_data), bp->b_npages); @@ -480,11 +482,12 @@ cluster_callback(bp)  		tbp; tbp = nbp) {  		nbp = TAILQ_NEXT(&tbp->b_cluster, cluster_entry);  		if (error) { -			tbp->b_flags |= B_ERROR; +			tbp->b_ioflags |= BIO_ERROR;  			tbp->b_error = error;  		} else {  			tbp->b_dirtyoff = tbp->b_dirtyend = 0; -			tbp->b_flags &= ~(B_ERROR|B_INVAL); +			tbp->b_flags &= ~B_INVAL; +			tbp->b_ioflags &= ~BIO_ERROR;  		}  		biodone(tbp);  	} @@ -837,7 +840,8 @@ cluster_wbuild(vp, size, start_lbn, len)  			s = splbio();  			bundirty(tbp); -			tbp->b_flags &= ~(B_DONE | B_ERROR); +			tbp->b_flags &= ~B_DONE; +			tbp->b_ioflags &= ~BIO_ERROR;  			tbp->b_flags |= B_ASYNC;  			tbp->b_iocmd = BIO_WRITE;  			reassignbuf(tbp, tbp->b_vp);	/* put on clean list */  | 
