summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1994-10-25 07:06:20 +0000
committerdg <dg@FreeBSD.org>1994-10-25 07:06:20 +0000
commit2837d58a98db4b488a7e8c8c01db377bccc31278 (patch)
tree0bef512e1d6ff775f1cf2f75c4b12c7870fce32c
parentb882a12ed1f2d664c6828579a97fcb07da47fb3d (diff)
downloadFreeBSD-src-2837d58a98db4b488a7e8c8c01db377bccc31278.zip
FreeBSD-src-2837d58a98db4b488a7e8c8c01db377bccc31278.tar.gz
Improved I/O error reporting.
-rw-r--r--sys/vm/swap_pager.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index 85b69a5..9f0654b2 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -39,7 +39,7 @@
* from: Utah $Hdr: swap_pager.c 1.4 91/04/30$
*
* @(#)swap_pager.c 8.9 (Berkeley) 3/21/94
- * $Id: swap_pager.c,v 1.14 1994/10/15 13:33:06 davidg Exp $
+ * $Id: swap_pager.c,v 1.15 1994/10/22 02:17:59 davidg Exp $
*/
/*
@@ -1101,7 +1101,14 @@ swap_pager_input(swp, m, count, reqpage)
while ((bp->b_flags & B_DONE) == 0) {
tsleep((caddr_t)bp, PVM, "swread", 0);
}
- rv = (bp->b_flags & B_ERROR) ? VM_PAGER_FAIL : VM_PAGER_OK;
+
+ if (bp->b_flags & B_ERROR) {
+ printf("swap_pager: I/O error - pagein failed; blkno %d, size %d, error %d\n",
+ bp->b_blkno, bp->b_bcount, bp->b_error);
+ rv = VM_PAGER_FAIL;
+ } else {
+ rv = VM_PAGER_OK;
+ }
bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_DIRTY|B_CALL|B_DONE);
--swp->sw_piip;
@@ -1496,7 +1503,13 @@ retrygetspace:
while ((bp->b_flags & B_DONE) == 0) {
tsleep((caddr_t)bp, PVM, "swwrt", 0);
}
- rv = (bp->b_flags & B_ERROR) ? VM_PAGER_FAIL : VM_PAGER_OK;
+ if (bp->b_flags & B_ERROR) {
+ printf("swap_pager: I/O error - pageout failed; blkno %d, size %d, error %d\n",
+ bp->b_blkno, bp->b_bcount, bp->b_error);
+ rv = VM_PAGER_FAIL;
+ } else {
+ rv = VM_PAGER_OK;
+ }
bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_DIRTY|B_CALL|B_DONE);
--swp->sw_poip;
@@ -1659,8 +1672,9 @@ swap_pager_iodone(bp)
TAILQ_INSERT_TAIL(&swap_pager_done, spc, spc_list);
if (bp->b_flags & B_ERROR) {
spc->spc_flags |= SPC_ERROR;
- printf("error %d blkno %lu sz %ld ",
- bp->b_error, (u_long)bp->b_blkno, bp->b_bcount);
+ printf("swap_pager: I/O error - async %s failed; blkno %lu, size %ld, error %d",
+ (bp->b_flags & B_READ) ? "pagein" : "pageout",
+ bp->b_error, (u_long)bp->b_blkno, bp->b_bcount);
}
/*
OpenPOWER on IntegriCloud