indefinite wait buffer take-II

Arno J. Klaassen arno at heho.snv.jussieu.fr
Sun Jun 4 21:06:26 UTC 2006


Hello,

I don't know if this is the right medium, the diff is against releng-6.
In my spare-time I try, still in vain, to find a reproducable configuration
for the 6.1 desired feature "swap_pager warnings when swapfiles are in use"
to produce a panic rather than deadlock (on amd64).

The first part of the attached diff has as goal to verify that,
till now, no (logged) "wait buffer timeout" ever is "indefinite",
the second part to disable a panic when rebooting after a test
which did not produce deadlock.

I test on a notebook with 1G RAM, 1G swap-slice and 3G pagingfile, using
the attached simple program to force insane swapping.

Without the second part of the diff, it panics as follows :

  Unread portion of the kernel message buffer:
  <118>May 29 00:46:12 demo syslogd: exiting on signal 15
  Waiting (max 60 seconds) for system process `vnlru' to stop...done
  Waiting (max 60 seconds) for system process `bufdaemon' to stop...done
  Waiting (max 60 seconds) for system process `syncer' to stop...
  Syncing disks, vnodes remaining...0 0 0 done
  All buffers synced.
  Swap device ad0s3b removed.
  swap_pager: I/O error - pagein failed; blkno 268319,size 4096, error 5
  panic: swap_pager_force_pagein: read from swap failed

  (I do not have the corresponding kernel any longer but the
   trace is something like :

   (kgdb) where
   #0  doadump () at pcpu.h:172
   #1  0x0000000000000004 in ?? ()
   #2  0xffffffff8029a093 in boot (howto=260)
       at /files/bsd/src6/sys/kern/kern_shutdown.c:409
   #3  0xffffffff8029a696 in panic (fmt=0xffffff00177d5be0 "@ãª\022")
       at /files/bsd/src6/sys/kern/kern_shutdown.c:565
   #4  0xffffffff803f1cac in swapoff_one (sp=0xffffff002f9d2880, 
       td=0xffffffff80628200) at /files/bsd/src6/sys/vm/swap_pager.c:1614
   #5  0xffffffff803f1fc4 in swapoff_all ()
       at /files/bsd/src6/sys/vm/swap_pager.c:2233
   #6  0xffffffff8029a2ba in boot (howto=0)
       at /files/bsd/src6/sys/kern/kern_shutdown.c:393
   #7  0xffffffff8029a427 in reboot (td=0x0, uap=0xffffffffa81ecbc0)
       at /files/bsd/src6/sys/kern/kern_shutdown.c:169
   #8  0xffffffff80427b41 in syscall (frame=
         {tf_rdi = 0, tf_rsi = 9, tf_rdx = -1, tf_rcx = 3, tf_r8 = -1099117536288, tf_r9 = 140737488350440, tf_rax = 55, tf_rbx = 2, tf_rbp = 232662, tf_r10 = -2140997928, tf_r11 = 518, tf_r12 = 0, tf_r13 = 0, tf_r14 = 0, tf_r15 = 0, tf_trapno = 12, tf_addr = 34367711392, tf_flags = 0, tf_err = 2, tf_rip = 34367517868, tf_cs = 43, tf_rflags = 514, tf_rsp = 140737488350440, tf_ss = 35})
       at /files/bsd/src6/sys/amd64/amd64/trap.c:792
   #9  0xffffffff80415648 in Xfast_syscall ()
       at /files/bsd/src6/sys/amd64/amd64/exception.S:270

   )

Maybe this gives a glue to someone; apart from the kernel message I have
no indication of a "real" I/O error (and VM_PAGER_FAIL and VM_PAGER_ERROR
seem valid return values for swap_pager_getpages() anyway).

Thanks very much.

Arno



-------------- next part --------------
A non-text attachment was scrubbed...
Name: testswap_pager.c
Type: application/octet-stream
Size: 1987 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20060604/ae2a3092/testswap_pager.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: swap_pager.diff
Type: text/x-patch
Size: 2398 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20060604/ae2a3092/swap_pager.bin
-------------- next part --------------

-- 

  Arno J. Klaassen

  SCITO S.A.
  8 rue des Haies
  F-75020 Paris, France
  http://scito.com



More information about the freebsd-current mailing list