Hi,
hitting some panics coming through the swap code and it is a bit
annoying having them not show up in the ddb trace.
OK ?
Index: uvm/uvm_swap.c
===================================================================
RCS file: /home/cvs/src/sys/uvm/uvm_swap.c,v
retrieving revision 1.97
diff -u -p -r1.97 uvm_swap.c
--- uvm/uvm_swap.c 10 Sep 2010 16:34:09 -0000 1.97
+++ uvm/uvm_swap.c 24 Sep 2010 19:53:22 -0000
@@ -218,11 +218,11 @@ struct pool vndbuf_pool;
/*
* local variables
*/
-static struct extent *swapmap; /* controls the mapping of /dev/drum */
+struct extent *swapmap; /* controls the mapping of /dev/drum */
/* list of all active swap devices [by priority] */
LIST_HEAD(swap_priority, swappri);
-static struct swap_priority swap_priority;
+struct swap_priority swap_priority;
/* locks */
struct rwlock swap_syscall_lock = RWLOCK_INITIALIZER("swplk");
@@ -230,25 +230,25 @@ struct rwlock swap_syscall_lock = RWLOCK
/*
* prototypes
*/
-static void swapdrum_add(struct swapdev *, int);
-static struct swapdev *swapdrum_getsdp(int);
+void swapdrum_add(struct swapdev *, int);
+struct swapdev *swapdrum_getsdp(int);
-static struct swapdev *swaplist_find(struct vnode *, int);
-static void swaplist_insert(struct swapdev *,
- struct swappri *, int);
-static void swaplist_trim(void);
+struct swapdev *swaplist_find(struct vnode *, int);
+void swaplist_insert(struct swapdev *,
+ struct swappri *, int);
+void swaplist_trim(void);
-static int swap_on(struct proc *, struct swapdev *);
-static int swap_off(struct proc *, struct swapdev *);
+int swap_on(struct proc *, struct swapdev *);
+int swap_off(struct proc *, struct swapdev *);
-static void sw_reg_strategy(struct swapdev *, struct buf *, int);
+void sw_reg_strategy(struct swapdev *, struct buf *, int);
void sw_reg_iodone(struct buf *);
void sw_reg_iodone_internal(void *, void *);
-static void sw_reg_start(struct swapdev *);
+void sw_reg_start(struct swapdev *);
-static int uvm_swap_io(struct vm_page **, int, int, int);
+int uvm_swap_io(struct vm_page **, int, int, int);
-static void swapmount(void);
+void swapmount(void);
boolean_t uvm_swap_allocpages(struct vm_page **, int);
#ifdef UVM_SWAP_ENCRYPT
@@ -481,7 +481,7 @@ uvm_swap_finicrypt_all(void)
* FREE it if we don't need it... this it to prevent malloc blocking
* here while adding swap)
*/
-static void
+void
swaplist_insert(struct swapdev *sdp, struct swappri *newspp, int priority)
{
struct swappri *spp, *pspp;
@@ -533,7 +533,7 @@ swaplist_insert(struct swapdev *sdp, str
* => caller must hold both swap_syscall_lock and uvm.swap_data_lock
* => we return the swapdev we found (and removed)
*/
-static struct swapdev *
+struct swapdev *
swaplist_find(struct vnode *vp, boolean_t remove)
{
struct swapdev *sdp;
@@ -566,7 +566,7 @@ swaplist_find(struct vnode *vp, boolean_
*
* => caller must hold both swap_syscall_lock and uvm.swap_data_lock
*/
-static void
+void
swaplist_trim(void)
{
struct swappri *spp, *nextspp;
@@ -587,7 +587,7 @@ swaplist_trim(void)
* => caller must hold swap_syscall_lock
* => uvm.swap_data_lock should be unlocked (we may sleep)
*/
-static void
+void
swapdrum_add(struct swapdev *sdp, int npages)
{
u_long result;
@@ -607,7 +607,7 @@ swapdrum_add(struct swapdev *sdp, int np
* => each swapdev takes one big contig chunk of the drum
* => caller must hold uvm.swap_data_lock
*/
-static struct swapdev *
+struct swapdev *
swapdrum_getsdp(int pgno)
{
struct swapdev *sdp;
@@ -895,7 +895,7 @@ out:
* => caller should leave uvm.swap_data_lock unlocked, we may lock it
* if needed.
*/
-static int
+int
swap_on(struct proc *p, struct swapdev *sdp)
{
static int count = 0; /* static */
@@ -1094,7 +1094,7 @@ bad:
*
* => swap data should be locked, we will unlock.
*/
-static int
+int
swap_off(struct proc *p, struct swapdev *sdp)
{
int error = 0;
@@ -1243,7 +1243,7 @@ swstrategy(struct buf *bp)
/*
* sw_reg_strategy: handle swap i/o to regular files
*/
-static void
+void
sw_reg_strategy(struct swapdev *sdp, struct buf *bp, int bn)
{
struct vnode *vp;
@@ -1416,7 +1416,7 @@ out: /* Arrive here at splbio */
}
/* sw_reg_start: start an I/O request on the requested swapdev. */
-static void
+void
sw_reg_start(struct swapdev *sdp)
{
struct buf *bp;
@@ -1762,7 +1762,7 @@ uvm_swap_get(struct vm_page *page, int s
* uvm_swap_io: do an i/o operation to swap
*/
-static int
+int
uvm_swap_io(struct vm_page **pps, int startslot, int npages, int flags)
{
daddr64_t startblk;
@@ -2086,7 +2086,7 @@ uvm_swap_io(struct vm_page **pps, int st
return (result);
}
-static void
+void
swapmount(void)
{
struct swapdev *sdp;