Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Jun 2004 09:54:05 +0100
From:      Bruce M Simpson <bms@spc.org>
To:        Poul-Henning Kamp <phk@phk.freebsd.dk>
Cc:        Alan Cox <alc@cs.rice.edu>
Subject:   Re: kern/67898: page fault while in kernel mode
Message-ID:  <20040623085405.GI3838@empiric.dek.spc.org>
In-Reply-To: <15673.1087979812@critter.freebsd.dk>
References:  <20040623082822.GM18577@cs.rice.edu> <15673.1087979812@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jun 23, 2004 at 10:36:52AM +0200, Poul-Henning Kamp wrote:
> I don't really have a good idea.  The devtoname() is patently invalid
> in the face of paging to NFS so I guess we'd have to stick a name
> string in swdevt and print that if we don't just remove the devtoname()
> entirely.

The assumption which kvm_getswapinfo() currently makes is to simply
substitute the string "[NFS swap]" for the case of (dev == NODEV).

Therefore, might I suggest the following:
%%
Index: src/sys/vm/swap_pager.c
===================================================================
RCS file: /home/ncvs/src/sys/vm/swap_pager.c,v
retrieving revision 1.252
diff -u -r1.252 swap_pager.c
--- src/sys/vm/swap_pager.c	17 Jun 2004 17:16:53 -0000	1.252
+++ src/sys/vm/swap_pager.c	23 Jun 2004 08:53:28 -0000
@@ -1125,6 +1125,8 @@
 	 * cleared on completion.  If an I/O error occurs, SWAPBLK_NONE
 	 * is set in the meta-data.
 	 */
+#define GETSWDEVNAME(_bp) \
+	((_bp)->b_dev == NODEV ? "[NFS swap]" : devtoname(bp->b_dev))
 	s = splvm();
 	vm_page_lock_queues();
 	while ((mreq->flags & PG_SWAPINPROG) != 0) {
@@ -1134,11 +1136,12 @@
 			printf(
 			    "swap_pager: indefinite wait buffer: device:"
 				" %s, blkno: %ld, size: %ld\n",
-			    devtoname(bp->b_dev), (long)bp->b_blkno,
+			    GETSWDEVNAME(bp), (long)bp->b_blkno,
 			    bp->b_bcount
 			);
 		}
 	}
+#undef GETSWDEVNAME
 	vm_page_unlock_queues();
 	splx(s);
%%

Regards,
BMS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040623085405.GI3838>