GENERIC from Sun Dec 6 23:53:31 2009 +0200, vm6 89b87f3, vmcore.387 KDB: debugger backends: ddb KDB: current backend: ddb 524288K of memory above 4GB ignored Copyright (c) 1992-2009 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 9.0-CURRENT #0 r200162+89b87f3-dirty: Mon Dec 7 10:26:04 CET 2009 root@:/var/tmp/deviant2/sys/i386/compile/PHO i386 WARNING: WITNESS option enabled, expect reduced performance. WARNING: DIAGNOSTIC option enabled, expect reduced performance. Timecounter "i8254" frequency 1193182 Hz quality 0 CPU: AMD Phenom(tm) 9150e Quad-Core Processor (1799.99-MHz 686-class CPU) Origin = "AuthenticAMD" Id = 0x100f23 Stepping = 3 Features=0x178bfbff Features2=0x802009 AMD Features=0xee500800 AMD Features2=0x7ff TSC: P-state invariant real memory = 4294967296 (4096 MB) avail memory = 3536183296 (3372 MB) : Trying to mount root from ufs:/dev/ad4s1a WARNING: / was not properly dismounted Entropy harvesting: interrupts ethernet point_to_point kickstart. /dev/ad4s1a: 17293 files, 796964 used, 216051 free (1843 frags, 26776 blocks, 0.2% fragmentation) /dev/ad4s1e: FREE BLK COUNT(S) WRONG IN SUPERBLK (SALVAGED) /dev/ad4s1e: 32048 files, 677445 used, 50099630 free (1806 frags, 6262228 blocks, 0.0% fragmentation) /dev/ad4s1f: 2183389 files, 18149332 used, 4189441 free (290065 frags, 487422 blocks, 1.3% fragmentation) /dev/ad4s1d: 802865 files, 37133987 used, 13643088 free (105456 frags, 1692204 blocks, 0.2% fragmentation) Additional TCP/IP options: rfc1323 extensions=NO no-ipv4-mapped-ipv6. re0: link state changed to DOWN Starting Network: lo0 re0 fwe0 fwip0. Starting Network: fwe0. Starting Network: fwip0. add net default: gateway 192.168.1.1 add net ::ffff:0.0.0.0: gateway ::1 add net ::0.0.0.0: gateway ::1 add net fe80::: gateway ::1 add net ff02::: gateway ::1 re0: link state changed to UP savecore: reboot Dec 7 12:36:53 x4 savecore: reboot lock order reversal: 1st 0xe70fc5f4 bufwait (bufwait) @ kern/vfs_bio.c:2559 2nd 0xc77fa600 dirhash (dirhash) @ ufs/ufs/ufs_dirhash.c:285 KDB: stack backtrace: db_trace_self_wrapper(c0c997f9,f649275c,c08ce195,c08bed8b,c0c9c74a,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08bed8b,c0c9c74a,c712e098,c7131978,f64927b8,...) at kdb_backtrace+0x29 _witness_debugger(c0c9c74a,c77fa600,c0cbe961,c7131978,c0cbe607,...) at _witness_debugger+0x25 witness_checkorder(c77fa600,9,c0cbe5fe,11d,0,...) at witness_checkorder+0x839 _sx_xlock(c77fa600,0,c0cbe5fe,11d,c7c6a000,...) at _sx_xlock+0x85 ufsdirhash_acquire(e70fc594,f64928d0,50,e768d6d8,f6492888,...) at ufsdirhash_acquire+0x48 ufsdirhash_add(c7c6a000,f64928d0,6d8,f6492874,f6492878,...) at ufsdirhash_add+0x13 ufs_direnter(c7c6c9bc,c7c6c42c,f64928d0,f6492bd0,0,...) at ufs_direnter+0x779 ufs_makeinode(f6492bd0,c0da2860,f6492abc,f6492a18,c0bde795,...) at ufs_makeinode+0x572 ufs_create(f6492abc,c0cd4144,0,0,f6492ba4,...) at ufs_create+0x30 VOP_CREATE_APV(c0da22e0,f6492abc,f6492bd0,f6492a54,0,...) at VOP_CREATE_APV+0xc5 vn_open_cred(f6492ba4,f6492c5c,180,0,c7175100,...) at vn_open_cred+0x205 vn_open(f6492ba4,f6492c5c,180,c7809c78,c0cbfe04,...) at vn_open+0x3b kern_openat(c7805900,ffffff9c,28300000,0,602,...) at kern_openat+0x11f kern_open(c7805900,28300000,0,601,180,...) at kern_open+0x35 open(c7805900,f6492cf8,c,c0cb8477,c0d8058c,...) at open+0x30 syscall(f6492d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (5, FreeBSD ELF32, open), eip = 0x2817f5f3, esp = 0xbfbfe2cc, ebp = 0xbfbfedf8 --- savecore: writing core to vmcore.386 Writing crash summary to /var/crash/core.txt.386. Additional ABI support: linux. Configuring syscons: keymap blanktime. Local package initialization:lock order reversal: 1st 0xc7895cdc ufs (ufs) @ kern/vfs_mount.c:1204 2nd 0xc789574c syncer (syncer) @ kern/vfs_subr.c:2190 KDB: stack backtrace: db_trace_self_wrapper(c0c997f9,f64bda60,c08ce195,c08bed8b,c0c9c74a,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08bed8b,c0c9c74a,c7131910,c71319e0,f64bdabc,...) at kdb_backtrace+0x29 _witness_debugger(c0c9c74a,c789574c,c0ca3ab3,c71319e0,c0ca3941,...) at _witness_debugger+0x25 witness_checkorder(c789574c,9,c0ca3938,88e,0,...) at witness_checkorder+0x839 __lockmgr_args(c789574c,80100,c78957b4,0,0,...) at __lockmgr_args+0x7b7 vop_stdlock(f64bdbc4,c091ce4a,c0ca3941,80100,c78956f4,...) at vop_stdlock+0x65 VOP_LOCK1_APV(c0d92360,f64bdbc4,c087b6d3,c0dbcca0,c78956f4,...) at VOP_LOCK1_APV+0xb5 _vn_lock(c78956f4,80100,c0ca3938,88e,c0f5e500,...) at _vn_lock+0x78 vrele(c78956f4,0,c0ca3136,4f9,80,...) at vrele+0x14f dounmount(c7a275a0,8000000,c7b13900,47e,ff1ca3a5,...) at dounmount+0x3ce unmount(c7b13900,f64bdcf8,8,c7b13900,c0d80768,...) at unmount+0x2ff syscall(f64bdd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (22, FreeBSD ELF32, unmount), eip = 0x280da14f, esp = 0xbfbfe69c, ebp = 0xbfbfe768 --- lock order reversal: 1st 0xc7895cdc ufs (ufs) @ kern/vfs_mount.c:1204 2nd 0xc7909a14 devfs (devfs) @ ufs/ffs/ffs_softdep.c:1031 KDB: stack backtrace: db_trace_self_wrapper(c0c997f9,f64bd9f0,c08ce195,c08bed8b,c0c9c74a,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08bed8b,c0c9c74a,c7131910,c71317d8,f64bda4c,...) at kdb_backtrace+0x29 _witness_debugger(c0c9c74a,c7909a14,c0c8aff5,c71317d8,c0cbc9a2,...) at _witness_debugger+0x25 witness_checkorder(c7909a14,9,c0cbc999,407,c7909a7c,...) at witness_checkorder+0x839 __lockmgr_args(c7909a14,80400,c7909a7c,0,0,...) at __lockmgr_args+0x7b7 vop_stdlock(f64bdb54,4,c0c94be1,80400,c79099bc,...) at vop_stdlock+0x65 VOP_LOCK1_APV(c0d7cbc0,f64bdb54,c0f69fc4,c0dbcca0,c79099bc,...) at VOP_LOCK1_APV+0xb5 _vn_lock(c79099bc,80400,c0cbc999,407,c7a275a0,...) at _vn_lock+0x78 softdep_flushworklist(c7a275a0,f64bdc00,c7b13900,52b,c78956f4,...) at softdep_flushworklist+0x47 ffs_sync(c7a275a0,1,c0ca3136,4f9,80,...) at ffs_sync+0x2fd dounmount(c7a275a0,8000000,c7b13900,47e,ff1ca3a5,...) at dounmount+0x44e unmount(c7b13900,f64bdcf8,8,c7b13900,c0d80768,...) at unmount+0x2ff syscall(f64bdd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (22, FreeBSD ELF32, unmount), eip = 0x280da14f, esp = 0xbfbfe69c, ebp = 0xbfbfe768 --- ** /dev/ad4s1e ** Last Mounted on /tmp ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 32048 files, 677445 used, 50099630 free (1806 frags, 6262228 blocks, 0.0% fragmentation) ***** FILE SYSTEM IS CLEAN ***** usage: kill [-s signal_name] pid ... kill -l [exit_status] kill -signal_name pid ... kill -signal_number pid ... fsck -y /tmp watchdogd. Mon Dec 7 12:38:58 CET 2009 FreeBSD/i386 (x4.osted.lan) (console) login: Dec 7 13:55:33 x4 su: pho to root on /dev/pts/0 Kernel page fault with the following non-sleepable locks held: exclusive sleep mutex vm object (standard object) r = 0 (0xcab3eee0) locked @ vm/vnode_pager.c:666 KDB: stack backtrace: db_trace_self_wrapper(c0c997f9,f66528bc,c08ce195,c0cc35c0,29a,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c0cc35c0,29a,ffffffff,c0f306b4,f66528f4,...) at kdb_backtrace+0x29 _witness_debugger(c0c9bcf6,f6652908,4,1,0,...) at _witness_debugger+0x25 witness_warn(5,0,c0cd10f7,cac81cdc,ca2267f8,...) at witness_warn+0x1fd trap(f6652994) at trap+0x19e calltrap() at calltrap+0x6 --- trap 0xc, eip = 0xc087ab43, esp = 0xf66529d4, ebp = 0xf66529e4 --- _mtx_assert(0,4,c0cc1d90,1d4,2,...) at _mtx_assert+0x53 vm_page_io_start(c40da9a8,1,f6652b60,1,f6652b64,...) at vm_page_io_start+0x2d vnode_pager_write(cac81c84,f6652c58,1,27c,f6652c58,...) at vnode_pager_write+0x67d vn_write_chunk(c777f900,1,0,ffffffff,0,...) at vn_write_chunk+0x11c vn_write(ca7bb690,f6652c58,c777f900,0,ca0086c0,...) at vn_write+0x13c dofilewrite(f6652c58,ffffffff,ffffffff,0,ca7bb690,...) at dofilewrite+0x95 kern_writev(ca0086c0,3,f6652c58,f6652c78,1,...) at kern_writev+0x58 write(ca0086c0,f6652cf8,c,f6652cc8,c0d80570,...) at write+0x4f syscall(f6652d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (4, FreeBSD ELF32, write), eip = 0x80e173f, esp = 0xbfbfe2bc, ebp = 0xbfbfe2f8 --- Fatal trap 12: page fault while in kernel mode cpuid = 2; apic id = 02 fault virtual address = 0x10 fault code = supervisor read, page not present instruction pointer = 0x20:0xc087ab43 stack pointer = 0x28:0xf66529d4 frame pointer = 0x28:0xf66529e4 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, def32 1, gran 1 processor eflags = interrupt enabled, resume, IOPL = 0 current process = 23160 (ld) [thread pid 23160 tid 100194 ] Stopped at _mtx_assert+0x53: movl 0x10(%edx),%eax db> run pho db:0:pho> bt Tracing pid 23160 tid 100194 td 0xca0086c0 _mtx_assert(0,4,c0cc1d90,1d4,2,...) at _mtx_assert+0x53 vm_page_io_start(c40da9a8,1,f6652b60,1,f6652b64,...) at vm_page_io_start+0x2d vnode_pager_write(cac81c84,f6652c58,1,27c,f6652c58,...) at vnode_pager_write+0x67d vn_write_chunk(c777f900,1,0,ffffffff,0,...) at vn_write_chunk+0x11c vn_write(ca7bb690,f6652c58,c777f900,0,ca0086c0,...) at vn_write+0x13c dofilewrite(f6652c58,ffffffff,ffffffff,0,ca7bb690,...) at dofilewrite+0x95 kern_writev(ca0086c0,3,f6652c58,f6652c78,1,...) at kern_writev+0x58 write(ca0086c0,f6652cf8,c,f6652cc8,c0d80570,...) at write+0x4f syscall(f6652d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (4, FreeBSD ELF32, write), eip = 0x80e173f, esp = 0xbfbfe2bc, ebp = 0xbfbfe2f8 --- db:0:bt> show allpcpu Current CPU: 2 cpuid = 0 dynamic pcpu = 0x667c80 curthread = 0xc82c56c0: pid 23158 "sh" curpcb = 0xf65c8d90 fpcurthread = none idlethread = 0xc7179480: pid 11 "idle: cpu0" APIC ID = 0 currentldt = 0x50 spin locks held: cpuid = 1 dynamic pcpu = 0x6026c80 curthread = 0xc82c76c0: pid 17175 "make" curpcb = 0xf65b3d90 fpcurthread = none idlethread = 0xc71796c0: pid 11 "idle: cpu1" APIC ID = 1 currentldt = 0x50 spin locks held: cpuid = 2 dynamic pcpu = 0x6029c80 curthread = 0xca0086c0: pid 23160 "ld" curpcb = 0xf6652d90 fpcurthread = none idlethread = 0xc7179900: pid 11 "idle: cpu2" APIC ID = 2 currentldt = 0x50 spin locks held: cpuid = 3 dynamic pcpu = 0x602cc80 curthread = 0xc7179b40: pid 11 "idle: cpu3" curpcb = 0xc6e04d90 fpcurthread = none idlethread = 0xc7179b40: pid 11 "idle: cpu3" APIC ID = 3 currentldt = 0x50 spin locks held: db:0:allpcpu> show alllocks Process 23160 (ld) thread 0xca0086c0 (100194) exclusive sleep mutex vm object (standard object) r = 0 (0xcab3eee0) locked @ vm/vnode_pager.c:666 Process 23158 (sh) thread 0xc82c56c0 (100165) exclusive sleep mutex pmap (pmap) r = 0 (0xc84798d8) locked @ i386/i386/pmap.c:4033 exclusive sleep mutex vm page queue mutex (vm page queue mutex) r = 0 (0xc0f6a980) locked @ i386/i386/pmap.c:4032 Process 23154 (cc1) thread 0xc78a6240 (100140) shared sx user map (user map) r = 0 (0xca795788) locked @ vm/vm_map.c:3532 Process 23153 (cc1) thread 0xc7804480 (100152) shared sx user map (user map) r = 0 (0xca7956a0) locked @ vm/vm_map.c:3532 Process 1711 (sshd) thread 0xc78a76c0 (100131) exclusive sx so_rcv_sx (so_rcv_sx) r = 0 (0xc82cf08c) locked @ kern/uipc_sockbuf.c:148 Process 891 (syslogd) thread 0xc7836d80 (100079) exclusive sleep mutex vm object (standard object) r = 0 (0xca9a8ee0) locked @ kern/vfs_bio.c:1549 exclusive lockmgr bufwait (bufwait) r = 0 (0xe7312620) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc7c02a14) locked @ vm/vm_readwrite.c:458 db:0:alllocks> show lockedvnods Locked vnodes 0xc7c029bc: tag ufs, type VREG usecount 1, writecount 1, refcount 2 mountedhere 0 flags () v_object 0xc8569880 ref 0 pages 1 lock type ufs: EXCL by thread 0xc7836d80 (pid 891) #0 0xc0873ca0 at __lockmgr_args+0xb90 #1 0xc0acbce1 at ffs_lock+0xa1 #2 0xc0bdd7c5 at VOP_LOCK1_APV+0xb5 #3 0xc092aaa8 at _vn_lock+0x78 #4 0xc0b00893 at vnode_pager_write+0x373 #5 0xc092ba7c at vn_write_chunk+0x11c #6 0xc092bc5c at vn_write+0x13c #7 0xc08d0895 at dofilewrite+0x95 #8 0xc08d1fe8 at kern_writev+0x58 #9 0xc08d2086 at writev+0x46 #10 0xc0bc4834 at syscall+0x2b4 #11 0xc0ba6b70 at Xint0x80_syscall+0x20 ino 2049043, on dev ad4s1d db:0:lockedvnods> show mount 0xc77aab40 /dev/ad4s1a on / (ufs) 0xc77ab000 devfs on /dev (devfs) 0xc7a2d000 /dev/ad4s1f on /usr (ufs) 0xc7a2cb40 /dev/ad4s1d on /var (ufs) 0xc7a2c870 procfs on /proc (procfs) 0xc7a2c5a0 linprocfs on /usr/compat/linux/proc (linprocfs) 0xc7a2c2d0 /dev/ad4s1e on /tmp (ufs) More info: show mount db:0:mount> ps pid ppid pgrp uid state wmesg wchan cmd 23160 23159 17175 0 R+ CPU 2 ld 23159 23138 17175 0 S+ wait 0xc856e7f8 sh 23158 23157 17175 0 R+ CPU 0 sh 23157 17175 17175 0 S+ wait 0xc856f7f8 sh 23156 23152 17175 0 S+ piperd 0xc828d188 as 23155 23150 17175 0 S+ piperd 0xc78ff620 as 23154 23152 17175 0 LL+ *vm page 0xc7904800 cc1 23153 23150 17175 0 LL+ *vm page 0xc7904800 cc1 23152 23151 17175 0 S+ wait 0xca5967f8 cc 23151 17175 17175 0 S+ wait 0xc7783000 sh 23150 23149 17175 0 S+ wait 0xc856e2a8 cc 23149 17175 17175 0 S+ wait 0xca225000 sh 23138 23135 17175 0 S+ select 0xc7d27aa4 make 23135 23130 17175 0 S+ wait 0xc7835aa0 sh 23130 23129 17175 0 S+ select 0xc7d302a4 make 23129 17175 17175 0 S+ wait 0xc82997f8 sh 17175 1758 17175 0 R+ CPU 1 make 1758 1754 1758 0 S+ wait 0xc86d5550 bash 1754 1750 1754 0 S+ pause 0xc8299058 csh 1750 1714 1750 1001 S+ wait 0xc7b03000 su 1714 1713 1714 1001 Ss+ wait 0xc856d2a8 bash 1713 1711 1711 1001 S select 0xc7ce6ba4 sshd 1711 1304 1711 0 Ss sbwait 0xc82cf0b8 sshd 1423 1 1423 0 Ss+ ttyin 0xc73c1e70 getty 1422 1 1422 0 Ss+ ttyin 0xc74fb470 getty 1421 1 1421 0 Ss+ ttyin 0xc74fbe70 getty 1420 1 1420 0 Ss+ ttyin 0xc74fba70 getty 1419 1 1419 0 Ss+ ttyin 0xc74fb670 getty 1418 1 1418 0 Ss+ ttyin 0xc74fbc70 getty 1417 1 1417 0 Ss+ ttyin 0xc74fc270 getty 1416 1 1416 0 Ss+ ttyin 0xc74fc070 getty 1415 1 1415 0 Ss+ ttyin 0xc73c0870 getty 1384 1 1384 0 Ss select 0xc7ce1e64 inetd 1348 1 1348 0 Ss nanslp 0xc0df1e44 watchdogd 1325 1 1325 0 Ss nanslp 0xc0df1e44 cron 1318 1 1318 25 Ss pause 0xc7b035a8 sendmail 1312 1 1312 0 Ss select 0xc7ce3da4 sendmail 1304 1 1304 0 Ss select 0xc7cee4a4 sshd 1259 1 1259 0 Ss select 0xc77af224 ntpd 1120 1 1120 0 Ss select 0xc7ce2a24 moused 1087 1 1087 0 Ss rpcsvc 0xc77af110 NLM: master 1080 1 1080 0 Ss select 0xc7ce2da4 rpc.statd 1073 1072 1072 0 S (threaded) nfsd 100148 S rpcsvc 0xc77afa50 nfsd: service 100147 S rpcsvc 0xc77b0410 nfsd: service 100146 S rpcsvc 0xc7ce4910 nfsd: service 100105 S rpcsvc 0xc7d26790 nfsd: master 1072 1 1072 0 Ss select 0xc7ce3064 nfsd 1063 1 1063 0 Ss select 0xc7ce6ae4 mountd 970 1 970 0 Ss select 0xc7830564 rpcbind 891 1 891 0 Ls *vm page 0xc7904800 syslogd 701 1 701 0 Ss select 0xc78308e4 devd 20 0 0 0 SL flowclea 0xc0f5e908 [flowcleaner] 19 0 0 0 SL sdflush 0xc0f6a020 [softdepflush] 18 0 0 0 SL syncer 0xc0f5e714 [syncer] 17 0 0 0 SL vlruwt 0xc7783aa0 [vnlru] 16 0 0 0 SL psleep 0xc0f5e448 [bufdaemon] 15 0 0 0 SL pgzero 0xc0f6ae18 [pagezero] 9 0 0 0 SL psleep 0xc0f6aa44 [vmdaemon] 8 0 0 0 SL psleep 0xc0f6aa0c [pagedaemon] 7 0 0 0 SL - 0xc73c063c [fdc0] 6 0 0 0 SL - 0xc73f4000 [fw0_probe] 14 0 0 0 SL (threaded) [usb] 100058 D - 0xc73d4d0c [usbus5] 100057 D - 0xc73d4cdc [usbus5] 100056 D - 0xc73d4cac [usbus5] 100055 D - 0xc73d4c7c [usbus5] 100053 D - 0xc73c6b5c [usbus4] 100052 D - 0xc73c6b2c [usbus4] 100051 D - 0xc73c6afc [usbus4] 100050 D - 0xc73c6acc [usbus4] 100049 D - 0xc73c2b5c [usbus3] 100048 D - 0xc73c2b2c [usbus3] 100047 D - 0xc73c2afc [usbus3] 100046 D - 0xc73c2acc [usbus3] 100045 D - 0xc73bbb5c [usbus2] 100044 D - 0xc73bbb2c [usbus2] 100043 D - 0xc73bbafc [usbus2] 100042 D - 0xc73bbacc [usbus2] 100040 D - 0xc73b6b5c [usbus1] 100039 D - 0xc73b6b2c [usbus1] 100038 D - 0xc73b6afc [usbus1] 100037 D - 0xc73b6acc [usbus1] 100035 D - 0xc73a7b5c [usbus0] 100034 D - 0xc73a7b2c [usbus0] 100033 D - 0xc73a7afc [usbus0] 100032 D - 0xc73a7acc [usbus0] 5 0 0 0 SL ccb_scan 0xc0dbe054 [xpt_thrd] 13 0 0 0 SL - 0xc0df1ca4 [yarrow] 4 0 0 0 SL - 0xc0defa64 [g_down] 3 0 0 0 SL - 0xc0defa60 [g_up] 2 0 0 0 SL - 0xc0defa58 [g_event] 12 0 0 0 WL (threaded) [intr] 100066 I [irq12: psm0] 100065 I [irq1: atkbd0] 100063 I [swi0: uart] 100060 I [irq20: fwohci0] 100059 I [irq14: ata0] 100054 I [irq19: ehci0] 100041 I [irq18: ohci2 ohci4] 100036 I [irq17: ohci1 ohci3] 100031 I [irq16: hdac1 ohci0] 100030 I [irq22: atapci0] 100029 I [irq256: hdac0] 100028 I [irq9: acpi0] 100027 I [swi5: +] 100025 I [swi2: cambio] 100020 I [swi6: task queue] 100019 I [swi6: Giant taskq] 100012 I [swi1: netisr 0] 100011 I [swi4: clock] 100010 I [swi4: clock] 100009 I [swi4: clock] 100008 I [swi4: clock] 100007 I [swi3: vm] 11 0 0 0 RL (threaded) [idle] 100006 CanRun [idle: cpu0] 100005 CanRun [idle: cpu1] 100004 CanRun [idle: cpu2] 100003 Run CPU 3 [idle: cpu3] 1 0 1 0 SLs wait 0xc7177d48 [init] 10 0 0 0 SL audit_wo 0xc0f69940 [audit] 0 0 0 0 SLs (threaded) [kernel] 100061 D - 0xc73a1880 [fw0_taskq] 100026 D - 0xc73440c0 [kqueue taskq] 100023 D - 0xc7344240 [acpi_task_2] 100022 D - 0xc7344240 [acpi_task_1] 100021 D - 0xc7344240 [acpi_task_0] 100018 D - 0xc7344540 [thread taskq] 100016 D - 0xc715ed80 [firmware taskq] 100000 D sched 0xc0defb40 [swapper] db:0:ps> allt Tracing command ld pid 23160 tid 100194 td 0xca0086c0 _mtx_assert(0,4,c0cc1d90,1d4,2,...) at _mtx_assert+0x53 vm_page_io_start(c40da9a8,1,f6652b60,1,f6652b64,...) at vm_page_io_start+0x2d vnode_pager_write(cac81c84,f6652c58,1,27c,f6652c58,...) at vnode_pager_write+0x67d vn_write_chunk(c777f900,1,0,ffffffff,0,...) at vn_write_chunk+0x11c vn_write(ca7bb690,f6652c58,c777f900,0,ca0086c0,...) at vn_write+0x13c dofilewrite(f6652c58,ffffffff,ffffffff,0,ca7bb690,...) at dofilewrite+0x95 kern_writev(ca0086c0,3,f6652c58,f6652c78,1,...) at kern_writev+0x58 write(ca0086c0,f6652cf8,c,f6652cc8,c0d80570,...) at write+0x4f syscall(f6652d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (4, FreeBSD ELF32, write), eip = 0x80e173f, esp = 0xbfbfe2bc, ebp = 0xbfbfe2f8 --- Tracing command sh pid 23159 tid 100160 td 0xc82c7240 sched_switch(c82c7240,0,104,191,b56bbb27,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c82c7240,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c856e7f8,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c856e7f8,c856e880,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(c82c7240,ffffffff,f65b9c74,2,0,...) at kern_wait+0xb76 wait4(c82c7240,f65b9cf8,10,c82c7240,c0d805c4,...) at wait4+0x3b syscall(f65b9d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2815e06b, esp = 0xbfbfe6ec, ebp = 0xbfbfe708 --- Tracing command sh pid 23158 tid 100165 td 0xc82c56c0 cpustop_handler(1,f65c8860,c0bc4ab6,c0898218,1261d435,...) at cpustop_handler+0x32 ipi_nmi_handler(c0898218,1261d435,7ffee20e,369e99,c856daa0,...) at ipi_nmi_handler+0x2f trap(f65c886c) at trap+0x36 calltrap() at calltrap+0x6 --- trap 0x13, eip = 0xc0bc8a79, esp = 0xf65c88ac, ebp = 0xf65c88c8 --- DELAY(1,c82c56c0,c0e043f4,0,f65c8908,...) at DELAY+0x89 _mtx_lock_spin(c0e043f4,c82c56c0,0,c0ccf210,462,...) at _mtx_lock_spin+0x6c _mtx_lock_spin_flags(c0e043f4,0,c0ccf210,462,f5,...) at _mtx_lock_spin_flags+0x146 smp_tlb_shootdown(f65c8958,c0bbb66f,c5616000,c5617000,e,...) at smp_tlb_shootdown+0x66 smp_invlpg_range(c5616000,c5617000,e,c4ee1ba0,c5617000,...) at smp_invlpg_range+0x1c pmap_invalidate_range(c0fbd9e0,c5616000,c5617000) at pmap_invalidate_range+0x4f pmap_qremove(c5616000,1,c0ccfcaf,fc1,c0f30550,...) at pmap_qremove+0x54 pmap_remove_pages(c84798d8,0,c0c91643,3f1,f65c8a08,...) at pmap_remove_pages+0x56f exec_new_vmspace(f65c8bc0,c0dae9a0,8,f65c8a40,c087b22c,...) at exec_new_vmspace+0x19d exec_elf32_imgact(f65c8bc0,0,c0c91643,16e,c0cbfe04,...) at exec_elf32_imgact+0x407 kern_execve(c82c56c0,f65c8c58,0,2833ec60,2833edb0,f04a1000,f04a1000,f04a123f,f04a15b0,f04e1000,3fa50,2a,29,0) at kern_execve+0x479 execve(c82c56c0,f65c8cf8,c,c82c56c0,c0d80b74,...) at execve+0x4c syscall(f65c8d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (59, FreeBSD ELF32, execve), eip = 0x2815e02b, esp = 0xbfbfe85c, ebp = 0xbfbfe878 --- Tracing command sh pid 23157 tid 100186 td 0xca00a900 sched_switch(ca00a900,0,104,191,b41cfa73,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(ca00a900,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c856f7f8,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c856f7f8,c856f880,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(ca00a900,ffffffff,f6620c74,2,0,...) at kern_wait+0xb76 wait4(ca00a900,f6620cf8,10,ca00a900,c0d805c4,...) at wait4+0x3b syscall(f6620d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2815e06b, esp = 0xbfbfe81c, ebp = 0xbfbfe838 --- Tracing command as pid 23156 tid 100193 td 0xca008900 sched_switch(ca008900,0,104,191,b19dc9d0,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,4c,...) at mi_switch+0x200 sleepq_switch(ca008900,0,c0c9a906,18b,4c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c828d188,4c,c0c9ccfc,100,0,...) at sleepq_wait_sig+0x17 _sleep(c828d188,c828d2f8,14c,c0c9ccfc,0,...) at _sleep+0x354 pipe_read(ca0e02d8,f664fc58,c777f900,0,ca008900,...) at pipe_read+0x417 dofileread(f664fc58,ffffffff,ffffffff,0,ca0e02d8,...) at dofileread+0x96 kern_readv(ca008900,0,f664fc58,f664fc78,1,...) at kern_readv+0x58 read(ca008900,f664fcf8,c,ca008900,c0d80554,...) at read+0x4f syscall(f664fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x80e2c33, esp = 0xbfbfe60c, ebp = 0xbfbfe638 --- Tracing command as pid 23155 tid 100221 td 0xc7bf5d80 sched_switch(c7bf5d80,0,104,191,bb64a5fc,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,4c,...) at mi_switch+0x200 sleepq_switch(c7bf5d80,0,c0c9a906,18b,4c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c78ff620,4c,c0c9ccfc,100,0,...) at sleepq_wait_sig+0x17 _sleep(c78ff620,c78ff790,14c,c0c9ccfc,0,...) at _sleep+0x354 pipe_read(c7808930,f66dac58,c777f900,0,c7bf5d80,...) at pipe_read+0x417 dofileread(f66dac58,ffffffff,ffffffff,0,c7808930,...) at dofileread+0x96 kern_readv(c7bf5d80,0,f66dac58,f66dac78,1,...) at kern_readv+0x58 read(c7bf5d80,f66dacf8,c,c7bf5d80,c0d80554,...) at read+0x4f syscall(f66dad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x80e2c33, esp = 0xbfbfe5cc, ebp = 0xbfbfe5f8 --- Tracing command cc1 pid 23154 tid 100140 td 0xc78a6240 sched_switch(c78a6240,0,103,18c,be269642,...) at sched_switch+0x406 mi_switch(103,0,c0c9b148,2e1,c7904800,...) at mi_switch+0x200 turnstile_wait(c7904800,c82c56c0,0,1ac,c0f6a980,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f6a980,c78a6240,0,c0ccfcaf,c44,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f6a980,0,c0ccfcaf,c44,f6555ac0,...) at _mtx_lock_flags+0xf7 pmap_enter(ca7957f0,28aad000,2,c43d7060,3,...) at pmap_enter+0x75 vm_fault(ca795740,28aad000,2,0,28aad000,...) at vm_fault+0x1802 trap_pfault(5,0,c0cd10f7,c0c98033,c8297d48,...) at trap_pfault+0x10d trap(f6555d38) at trap+0x2d0 calltrap() at calltrap+0x6 --- trap 0xc, eip = 0x84acf6f, esp = 0xbfbfe170, ebp = 0xbfbfe1a8 --- Tracing command cc1 pid 23153 tid 100152 td 0xc7804480 sched_switch(c7804480,0,103,18c,bd1408b2,...) at sched_switch+0x406 mi_switch(103,0,c0c9b148,2e1,c7904800,...) at mi_switch+0x200 turnstile_wait(c7904800,c82c56c0,0,1ac,c0f6a980,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f6a980,c7804480,0,c0ccfcaf,c44,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f6a980,0,c0ccfcaf,c44,f657cac0,...) at _mtx_lock_flags+0xf7 pmap_enter(ca795708,28b70000,2,c43c8738,3,...) at pmap_enter+0x75 vm_fault(ca795658,28b70000,2,0,28b70004,...) at vm_fault+0x1802 trap_pfault(5,0,c0cd10f7,4,c77ffaa0,...) at trap_pfault+0x10d trap(f657cd38) at trap+0x2d0 calltrap() at calltrap+0x6 --- trap 0xc, eip = 0x84acf76, esp = 0xbfbfe130, ebp = 0xbfbfe158 --- Tracing command cc pid 23152 tid 100208 td 0xca247000 sched_switch(ca247000,0,104,191,b187f04a,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(ca247000,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(ca5967f8,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(ca5967f8,ca596880,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(ca247000,5a72,f667cc74,0,0,...) at kern_wait+0xb76 wait4(ca247000,f667ccf8,10,c0cb8477,c0d805c4,...) at wait4+0x3b syscall(f667cd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x805e78b, esp = 0xbfbfe50c, ebp = 0xbfbfe528 --- Tracing command sh pid 23151 tid 100082 td 0xc74e7480 sched_switch(c74e7480,0,104,191,a65380b4,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c74e7480,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7783000,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c7783000,c7783088,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(c74e7480,ffffffff,f6445c74,2,0,...) at kern_wait+0xb76 wait4(c74e7480,f6445cf8,10,c74e7480,c0d805c4,...) at wait4+0x3b syscall(f6445d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2815e06b, esp = 0xbfbfe81c, ebp = 0xbfbfe838 --- Tracing command cc pid 23150 tid 100162 td 0xc82c5d80 sched_switch(c82c5d80,0,104,191,af28397b,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c82c5d80,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c856e2a8,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c856e2a8,c856e330,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(c82c5d80,5a71,f65bfc74,0,0,...) at kern_wait+0xb76 wait4(c82c5d80,f65bfcf8,10,c0cb8477,c0d805c4,...) at wait4+0x3b syscall(f65bfd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x805e78b, esp = 0xbfbfe51c, ebp = 0xbfbfe538 --- Tracing command sh pid 23149 tid 100203 td 0xca247b40 sched_switch(ca247b40,0,104,191,a56dfa70,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(ca247b40,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(ca225000,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(ca225000,ca225088,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(ca247b40,ffffffff,f666dc74,2,0,...) at kern_wait+0xb76 wait4(ca247b40,f666dcf8,10,ca247b40,c0d805c4,...) at wait4+0x3b syscall(f666dd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2815e06b, esp = 0xbfbfe81c, ebp = 0xbfbfe838 --- Tracing command make pid 23138 tid 100176 td 0xc85706c0 sched_switch(c85706c0,0,104,191,b5635154,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c85706c0,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f6602a4c,c087b2ba,c7d27a90,0,c85706c0,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c7d27aa4,0,f6602a7c,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c7d27aa4,c7d27a90,7d1,603,c78ac888,...) at _cv_timedwait_sig+0x250 seltdwait(f6602c28,f6602c30,c777f900,c85706c0,246,...) at seltdwait+0x8a kern_select(c85706c0,7,bfbfdb28,0,0,f6602c70,20,2,0) at kern_select+0x4f4 select(c85706c0,f6602cf8,14,c0c9cf15,c0d80f2c,...) at select+0x66 syscall(f6602d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x808ea23, esp = 0xbfbfdafc, ebp = 0xbfbfdbb8 --- Tracing command sh pid 23135 tid 100114 td 0xc7902b40 sched_switch(c7902b40,0,104,191,6ab90e67,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c7902b40,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7835aa0,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c7835aa0,c7835b28,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(c7902b40,ffffffff,f64e4c74,2,0,...) at kern_wait+0xb76 wait4(c7902b40,f64e4cf8,10,c7902b40,c0d805c4,...) at wait4+0x3b syscall(f64e4d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2815e06b, esp = 0xbfbfe66c, ebp = 0xbfbfe688 --- Tracing command make pid 23130 tid 100184 td 0xc82c8480 sched_switch(c82c8480,0,104,191,b5638959,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c82c8480,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f661aa4c,c087b2ba,c7d30290,0,c82c8480,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c7d302a4,0,f661aa7c,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c7d302a4,c7d30290,7d1,603,c8573ab8,...) at _cv_timedwait_sig+0x250 seltdwait(f661ac28,f661ac30,c777f900,c82c8480,246,...) at seltdwait+0x8a kern_select(c82c8480,7,bfbfdb68,0,0,f661ac70,20,2,0) at kern_select+0x4f4 select(c82c8480,f661acf8,14,c0c9cf15,c0d80f2c,...) at select+0x66 syscall(f661ad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x808ea23, esp = 0xbfbfdb3c, ebp = 0xbfbfdbf8 --- Tracing command sh pid 23129 tid 100172 td 0xc8571000 sched_switch(c8571000,0,104,191,668b42eb,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c8571000,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c82997f8,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c82997f8,c8299880,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(c8571000,ffffffff,f65ddc74,2,0,...) at kern_wait+0xb76 wait4(c8571000,f65ddcf8,10,c8571000,c0d805c4,...) at wait4+0x3b syscall(f65ddd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2815e06b, esp = 0xbfbfe7bc, ebp = 0xbfbfe7d8 --- Tracing command make pid 17175 tid 100158 td 0xc82c76c0 cpustop_handler(2,f65b3a88,c0bc4ab6,c0864a3a,c71578d0,...) at cpustop_handler+0x32 ipi_nmi_handler(c0864a3a,c71578d0,c0cc0cf3,c712b178,c856ed48,...) at ipi_nmi_handler+0x2f trap(f65b3a94) at trap+0x36 calltrap() at calltrap+0x6 --- trap 0x13, eip = 0xc0bb6bc8, esp = 0xf65b3ad4, ebp = 0xf65b3af4 --- smp_tlb_shootdown(f65b3b1c,c0bbb66f,f66db000,f66dc000,c0aec1e7,...) at smp_tlb_shootdown+0x98 smp_invlpg_range(f66db000,f66dc000,c0aec1e7,c1890000,f66dc000,...) at smp_invlpg_range+0x1c pmap_invalidate_range(c0fbd9e0,f66db000,f66dc000) at pmap_invalidate_range+0x4f pmap_qremove(f66db000,1,0,171,cab3bd48,...) at pmap_qremove+0x54 vm_thread_new(c7bf5b40,2,2,2,f65b3c60,...) at vm_thread_new+0x15e thread_alloc(2,0,2,60f,6,...) at thread_alloc+0x4f fork1(c82c76c0,80000034,0,f65b3c78,c0c94be1,...) at fork1+0x207 vfork(c82c76c0,f65b3cf8,0,c0c7fa87,c0d80c38,...) at vfork+0x29 syscall(f65b3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x805e158, esp = 0xbfbfdc50, ebp = 0xbfbfdca8 --- Tracing command bash pid 1758 tid 100181 td 0xc82c8b40 sched_switch(c82c8b40,0,104,191,b39ee006,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c82c8b40,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c86d5550,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c86d5550,c86d55d8,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(c82c8b40,ffffffff,f6611c74,6,0,...) at kern_wait+0xb76 wait4(c82c8b40,f6611cf8,10,c0c9cfd4,c0d805c4,...) at wait4+0x3b syscall(f6611d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x282be06b, esp = 0xbfbfe68c, ebp = 0xbfbfe6a8 --- Tracing command csh pid 1754 tid 100133 td 0xc78a7240 sched_switch(c78a7240,0,104,191,238e7e3b,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,68,...) at mi_switch+0x200 sleepq_switch(c78a7240,0,c0c9a906,18b,68,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c8299058,68,c0c4a4b5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c8299058,c8299088,168,c0c4a4b5,0,...) at _sleep+0x354 kern_sigsuspend(c78a7240,0,0,0,0,...) at kern_sigsuspend+0xae sigsuspend(c78a7240,f6540cf8,4,c0c9cfd4,c0d82a4c,...) at sigsuspend+0x4d syscall(f6540d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (4, FreeBSD ELF32, write), eip = 0x2817af0b, esp = 0xbfbfe60c, ebp = 0xbfbfe678 --- Tracing command su pid 1750 tid 100098 td 0xc7805480 sched_switch(c7805480,0,104,191,c8d723b4,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c7805480,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7b03000,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c7b03000,c7b03088,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(c7805480,6da,f6498c74,2,0,...) at kern_wait+0xb76 wait4(c7805480,f6498cf8,10,c7805480,c0d805c4,...) at wait4+0x3b syscall(f6498d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2811f06b, esp = 0xbfbfe62c, ebp = 0xbfbfe648 --- Tracing command bash pid 1714 tid 100168 td 0xc82c5000 sched_switch(c82c5000,0,104,191,ba6a49ec,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c82c5000,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c856d2a8,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c856d2a8,c856d330,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(c82c5000,ffffffff,f65d1c74,6,0,...) at kern_wait+0xb76 wait4(c82c5000,f65d1cf8,10,c0c9cfd4,c0d805c4,...) at wait4+0x3b syscall(f65d1d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x282be06b, esp = 0xbfbfe9ac, ebp = 0xbfbfe9c8 --- Tracing command sshd pid 1713 tid 100077 td 0xc7839240 sched_switch(c7839240,0,104,191,b562f6a1,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7839240,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087b2ba,c7ce6b90,0,c0c94be1,c7839240,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7ce6ba4,0,f6431a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c7ce6ba4,c7ce6b90,c0c9cb4b,603,c7c5b5e8,...) at _cv_wait_sig+0x240 seltdwait(c7c5b5e8,58,c7704480,c7839240,200246,...) at seltdwait+0xa2 kern_select(c7839240,c,286030b8,286030dc,0,0,20,0,28100c70) at kern_select+0x4f4 select(c7839240,f6431cf8,14,c0c7e81f,c0d80f2c,...) at select+0x66 syscall(f6431d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x283ce023, esp = 0xbfbfde5c, ebp = 0xbfbfdea8 --- Tracing command sshd pid 1711 tid 100131 td 0xc78a76c0 sched_switch(c78a76c0,0,104,191,4d208bd,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,58,...) at mi_switch+0x200 sleepq_switch(c78a76c0,0,c0c9a906,18b,58,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c82cf0b8,58,c0ca0680,100,0,...) at sleepq_wait_sig+0x17 _sleep(c82cf0b8,c82cf078,158,c0ca0680,0) at _sleep+0x354 sbwait(c82cf054,4,c0ca074f,5c5,c82cf078,...) at sbwait+0x76 soreceive_generic(c82cf000,0,f653ac58,0,0,...) at soreceive_generic+0x3f0 soreceive(c82cf000,0,f653ac58,0,0,0) at soreceive+0x38 soo_read(c7c5b690,f653ac58,c782ce00,0,c78a76c0,...) at soo_read+0x4e dofileread(f653ac58,ffffffff,ffffffff,0,c7c5b690,...) at dofileread+0x96 kern_readv(c78a76c0,5,f653ac58,f653ac78,1,...) at kern_readv+0x58 read(c78a76c0,f653acf8,c,c0cb8477,c0d80554,...) at read+0x4f syscall(f653ad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x283ce0a3, esp = 0xbfbfde4c, ebp = 0xbfbfde88 --- Tracing command getty pid 1423 tid 100130 td 0xc7804d80 sched_switch(c7804d80,0,104,191,213e1ccf,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7804d80,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,c7804d80,c7804d80,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c73c1e70,0,c0c9eec8,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c73c1e70,c0df15f0,c0c9e87f,510,0,...) at _cv_wait_sig+0x240 tty_wait(c73c1e00,c73c1e70,f6536c58,1,0,...) at tty_wait+0x71 ttydisc_read(c73c1e00,f6536c58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c74ef900,f6536c58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c7bfa968,f6536c58,c7175100,0,c7804d80,...) at devfs_read_f+0x7e dofileread(f6536c58,ffffffff,ffffffff,0,c7bfa968,...) at dofileread+0x96 kern_readv(c7804d80,0,f6536c58,f6536c78,1,...) at kern_readv+0x58 read(c7804d80,f6536cf8,c,c0cae591,c0d80554,...) at read+0x4f syscall(f6536d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0a3, esp = 0xbfbfedcc, ebp = 0xbfbfedf8 --- Tracing command getty pid 1422 tid 100137 td 0xc78a6900 sched_switch(c78a6900,0,104,191,21288355,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c78a6900,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,c78a6900,c78a6900,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c74fb470,0,c0c9eec8,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c74fb470,c0df15f0,c0c9e87f,510,0,...) at _cv_wait_sig+0x240 tty_wait(c74fb400,c74fb470,f654cc58,1,0,...) at tty_wait+0x71 ttydisc_read(c74fb400,f654cc58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c74ef800,f654cc58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c78a28c0,f654cc58,c7175100,0,c78a6900,...) at devfs_read_f+0x7e dofileread(f654cc58,ffffffff,ffffffff,0,c78a28c0,...) at dofileread+0x96 kern_readv(c78a6900,0,f654cc58,f654cc78,1,...) at kern_readv+0x58 read(c78a6900,f654ccf8,c,c0cae591,c0d80554,...) at read+0x4f syscall(f654cd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0a3, esp = 0xbfbfedcc, ebp = 0xbfbfedf8 --- Tracing command getty pid 1421 tid 100095 td 0xc7805b40 sched_switch(c7805b40,0,104,191,213690de,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7805b40,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,c7805b40,c7805b40,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c74fbe70,0,c0c9eec8,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c74fbe70,c0df15f0,c0c9e87f,510,0,...) at _cv_wait_sig+0x240 tty_wait(c74fbe00,c74fbe70,f648fc58,1,0,...) at tty_wait+0x71 ttydisc_read(c74fbe00,f648fc58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c74ef700,f648fc58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c7809268,f648fc58,c7175100,0,c7805b40,...) at devfs_read_f+0x7e dofileread(f648fc58,ffffffff,ffffffff,0,c7809268,...) at dofileread+0x96 kern_readv(c7805b40,0,f648fc58,f648fc78,1,...) at kern_readv+0x58 read(c7805b40,f648fcf8,c,c0cae591,c0d80554,...) at read+0x4f syscall(f648fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0a3, esp = 0xbfbfedcc, ebp = 0xbfbfedf8 --- Tracing command getty pid 1420 tid 100099 td 0xc7805240 sched_switch(c7805240,0,104,191,2112f3fc,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7805240,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,c7805240,c7805240,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c74fba70,0,c0c9eec8,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c74fba70,c0df15f0,c0c9e87f,510,0,...) at _cv_wait_sig+0x240 tty_wait(c74fba00,c74fba70,f649bc58,1,0,...) at tty_wait+0x71 ttydisc_read(c74fba00,f649bc58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c74ef600,f649bc58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c7bfa1c0,f649bc58,c7175100,0,c7805240,...) at devfs_read_f+0x7e dofileread(f649bc58,ffffffff,ffffffff,0,c7bfa1c0,...) at dofileread+0x96 kern_readv(c7805240,0,f649bc58,f649bc78,1,...) at kern_readv+0x58 read(c7805240,f649bcf8,c,c0cae591,c0d80554,...) at read+0x4f syscall(f649bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0a3, esp = 0xbfbfedcc, ebp = 0xbfbfedf8 --- Tracing command getty pid 1419 tid 100120 td 0xc7906b40 sched_switch(c7906b40,0,104,191,2135e1e5,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7906b40,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,c7906b40,c7906b40,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c74fb670,0,c0c9eec8,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c74fb670,c0df15f0,c0c9e87f,510,0,...) at _cv_wait_sig+0x240 tty_wait(c74fb600,c74fb670,f6501c58,1,0,...) at tty_wait+0x71 ttydisc_read(c74fb600,f6501c58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c74ef500,f6501c58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c7820af0,f6501c58,c7175100,0,c7906b40,...) at devfs_read_f+0x7e dofileread(f6501c58,ffffffff,ffffffff,0,c7820af0,...) at dofileread+0x96 kern_readv(c7906b40,0,f6501c58,f6501c78,1,...) at kern_readv+0x58 read(c7906b40,f6501cf8,c,c0cae591,c0d80554,...) at read+0x4f syscall(f6501d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0a3, esp = 0xbfbfedcc, ebp = 0xbfbfedf8 --- Tracing command getty pid 1418 tid 100132 td 0xc78a7480 sched_switch(c78a7480,0,104,191,2119192f,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c78a7480,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,c78a7480,c78a7480,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c74fbc70,0,c0c9eec8,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c74fbc70,c0df15f0,c0c9e87f,510,0,...) at _cv_wait_sig+0x240 tty_wait(c74fbc00,c74fbc70,f653dc58,1,0,...) at tty_wait+0x71 ttydisc_read(c74fbc00,f653dc58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c74ef400,f653dc58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c7bfa150,f653dc58,c7175100,0,c78a7480,...) at devfs_read_f+0x7e dofileread(f653dc58,ffffffff,ffffffff,0,c7bfa150,...) at dofileread+0x96 kern_readv(c78a7480,0,f653dc58,f653dc78,1,...) at kern_readv+0x58 read(c78a7480,f653dcf8,c,c0cae591,c0d80554,...) at read+0x4f syscall(f653dd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0a3, esp = 0xbfbfedcc, ebp = 0xbfbfedf8 --- Tracing command getty pid 1417 tid 100085 td 0xc74e7240 sched_switch(c74e7240,0,104,191,21300d20,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c74e7240,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,c74e7240,c74e7240,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c74fc270,0,c0c9eec8,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c74fc270,c0df15f0,c0c9e87f,510,0,...) at _cv_wait_sig+0x240 tty_wait(c74fc200,c74fc270,f6451c58,1,0,...) at tty_wait+0x71 ttydisc_read(c74fc200,f6451c58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c74ef300,f6451c58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c7bfaa80,f6451c58,c7175100,0,c74e7240,...) at devfs_read_f+0x7e dofileread(f6451c58,ffffffff,ffffffff,0,c7bfaa80,...) at dofileread+0x96 kern_readv(c74e7240,0,f6451c58,f6451c78,1,...) at kern_readv+0x58 read(c74e7240,f6451cf8,c,c0cae591,c0d80554,...) at read+0x4f syscall(f6451d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0a3, esp = 0xbfbfedcc, ebp = 0xbfbfedf8 --- Tracing command getty pid 1416 tid 100123 td 0xc7906480 sched_switch(c7906480,0,104,191,21159303,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7906480,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,c7906480,c7906480,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c74fc070,0,c0c9eec8,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c74fc070,c0df15f0,c0c9e87f,510,0,...) at _cv_wait_sig+0x240 tty_wait(c74fc000,c74fc070,f650ac58,1,0,...) at tty_wait+0x71 ttydisc_read(c74fc000,f650ac58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c74ef200,f650ac58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c78099d8,f650ac58,c7175100,0,c7906480,...) at devfs_read_f+0x7e dofileread(f650ac58,ffffffff,ffffffff,0,c78099d8,...) at dofileread+0x96 kern_readv(c7906480,0,f650ac58,f650ac78,1,...) at kern_readv+0x58 read(c7906480,f650acf8,c,c0cae591,c0d80554,...) at read+0x4f syscall(f650ad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0a3, esp = 0xbfbfedcc, ebp = 0xbfbfedf8 --- Tracing command getty pid 1415 tid 100121 td 0xc7906900 sched_switch(c7906900,0,104,191,c96e7fc0,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7906900,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087b2ba,c73c0804,0,c0c94be1,c7906900,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c73c0870,0,f6504b0c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c73c0870,c73c0804,c0c9e87f,510,0,...) at _cv_wait_sig+0x240 tty_wait(c73c0800,c73c0870,f6504c58,1,0,...) at tty_wait+0x71 ttydisc_read(c73c0800,f6504c58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c7166700,f6504c58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c78a2850,f6504c58,c7175100,0,c7906900,...) at devfs_read_f+0x7e dofileread(f6504c58,ffffffff,ffffffff,0,c78a2850,...) at dofileread+0x96 kern_readv(c7906900,0,f6504c58,f6504c78,1,...) at kern_readv+0x58 read(c7906900,f6504cf8,c,c0cae591,c0d80554,...) at read+0x4f syscall(f6504d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0a3, esp = 0xbfbfedbc, ebp = 0xbfbfede8 --- Tracing command inetd pid 1384 tid 100100 td 0xc7b146c0 sched_switch(c7b146c0,0,104,191,eae68097,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7b146c0,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087b2ba,c7ce1e50,0,c0c94be1,c7b146c0,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7ce1e64,0,f649ea7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c7ce1e64,c7ce1e50,c0c9cb4b,603,c78ac6c8,...) at _cv_wait_sig+0x240 seltdwait(c78ac6c8,58,c7175100,c7b146c0,c08cdfdc,...) at seltdwait+0xa2 kern_select(c7b146c0,8,bfbfdfe0,0,0,0,20,0,281b6478) at kern_select+0x4f4 select(c7b146c0,f649ecf8,14,c0c9d131,c0d80f2c,...) at select+0x66 syscall(f649ed38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x281a2023, esp = 0xbfbfdf9c, ebp = 0xbfbfee28 --- Tracing command watchdogd pid 1348 tid 100102 td 0xc7b14240 sched_switch(c7b14240,0,104,191,592c3782,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c7b14240,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(ea61,c08c48a0,c7b14240,0,100,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c0df1e44,5c,c0c97757,100,0,...) at sleepq_timedwait_sig+0x1a _sleep(c0df1e44,0,15c,c0c97757,ea61,...) at _sleep+0x31e kern_nanosleep(c7b14240,f64a4c64,f64a4c6c,3c,0,...) at kern_nanosleep+0xc1 nanosleep(c7b14240,f64a4cf8,8,c0cae591,c0d81f40,...) at nanosleep+0x6f syscall(f64a4d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (240, FreeBSD ELF32, nanosleep), eip = 0x28185ac7, esp = 0xbfbfecec, ebp = 0xbfbfed18 --- Tracing command cron pid 1325 tid 100088 td 0xc74e7000 sched_switch(c74e7000,0,104,191,f299b8cd,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c74e7000,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(ea61,c08c48a0,c74e7000,2,100,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c0df1e44,5c,c0c97757,100,0,...) at sleepq_timedwait_sig+0x1a _sleep(c0df1e44,0,15c,c0c97757,ea61,...) at _sleep+0x31e kern_nanosleep(c74e7000,f645dc64,f645dc6c,3c,0,...) at kern_nanosleep+0xc1 nanosleep(c74e7000,f645dcf8,8,c0c9d222,c0d81f40,...) at nanosleep+0x6f syscall(f645dd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (240, FreeBSD ELF32, nanosleep), eip = 0x28178ac7, esp = 0xbfbfec8c, ebp = 0xbfbfecb8 --- Tracing command sendmail pid 1318 tid 100096 td 0xc7805900 sched_switch(c7805900,0,104,191,f0166493,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,68,...) at mi_switch+0x200 sleepq_switch(c7805900,0,c0c9a906,18b,68,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7b035a8,68,c0c4a4b5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c7b035a8,c7b035d8,168,c0c4a4b5,0,...) at _sleep+0x354 kern_sigsuspend(c7805900,0,0,0,0,...) at kern_sigsuspend+0xae sigsuspend(c7805900,f6492cf8,4,c0c9cfd4,c0d82a4c,...) at sigsuspend+0x4d syscall(f6492d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (4, FreeBSD ELF32, write), eip = 0x28332f0b, esp = 0xbfbfcf9c, ebp = 0xbfbfcfc8 --- Tracing command sendmail pid 1312 tid 100117 td 0xc7b13240 sched_switch(c7b13240,0,104,191,998fdb85,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7b13240,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f64f8a4c,c087b2ba,c7ce3d90,0,c7b13240,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c7ce3da4,0,f64f8a7c,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c7ce3da4,c7ce3d90,1389,603,c7808d58,...) at _cv_timedwait_sig+0x250 seltdwait(f64f8c28,f64f8c30,c77b7380,c7b13240,c188b014,...) at seltdwait+0x8a kern_select(c7b13240,5,bfbfc520,0,0,f64f8c70,20,5,0) at kern_select+0x4f4 select(c7b13240,f64f8cf8,14,c0c9d4f8,c0d80f2c,...) at select+0x66 syscall(f64f8d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x283d7023, esp = 0xbfbfc48c, ebp = 0xbfbfcfb8 --- Tracing command sshd pid 1304 tid 100119 td 0xc7906d80 sched_switch(c7906d80,0,104,191,d034fff0,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7906d80,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087b2ba,c7cee490,0,c0c94be1,c7906d80,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7cee4a4,0,f64fea7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c7cee4a4,c7cee490,c0c9cb4b,603,c7808230,...) at _cv_wait_sig+0x240 seltdwait(c7808230,58,c789dd80,c7906d80,0,...) at seltdwait+0xa2 kern_select(c7906d80,5,286090b0,0,0,0,20,0,a) at kern_select+0x4f4 select(c7906d80,f64fecf8,14,c0c9d94a,c0d80f2c,...) at select+0x66 syscall(f64fed38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x283ce023, esp = 0xbfbfdf1c, ebp = 0xbfbfee38 --- Tracing command ntpd pid 1259 tid 100135 td 0xc78a6d80 sched_switch(c78a6d80,0,104,191,8f0e530e,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c78a6d80,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087b2ba,c77af210,0,c0c94be1,c78a6d80,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c77af224,0,f6546a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c77af224,c77af210,c0c9cb4b,603,c78accb0,...) at _cv_wait_sig+0x240 seltdwait(c78accb0,58,c7175100,c78a6d80,0,...) at seltdwait+0xa2 kern_select(c78a6d80,1c,bfbfed28,0,0,0,20,f6546c98,246) at kern_select+0x4f4 select(c78a6d80,f6546cf8,14,c78a6d80,c0d80f2c,...) at select+0x66 syscall(f6546d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x28353023, esp = 0xbfbfecfc, ebp = 0xbfbfedc8 --- Tracing command moused pid 1120 tid 100078 td 0xc7839000 sched_switch(c7839000,0,104,191,b9c067c8,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7839000,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087b2ba,c7ce2a10,0,c0c94be1,c7839000,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7ce2a24,0,f6435a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c7ce2a24,c7ce2a10,c0c9cb4b,603,c7809540,...) at _cv_wait_sig+0x240 seltdwait(c7809540,58,c7175100,c7839000,0,...) at seltdwait+0xa2 kern_select(c7839000,6,bfbfea34,0,0,0,20,0,0) at kern_select+0x4f4 select(c7839000,f6435cf8,14,c0cae591,c0d80f2c,...) at select+0x66 syscall(f6435d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x281ab023, esp = 0xbfbfe9bc, ebp = 0xbfbfeb58 --- Tracing command rpc.lockd pid 1087 tid 100084 td 0xc7836480 sched_switch(c7836480,0,104,191,fba4a6cf,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7836480,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f644d9fc,c087b2ba,c77b9380,0,c7836480,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c77af110,0,f644da2c,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c77af110,c77b9380,1388,3af,c7bdb200,...) at _cv_timedwait_sig+0x250 svc_run_internal(c78365e4,14,c0cb9bfe,c0cb92f3,f644db8c,...) at svc_run_internal+0x356 svc_run(c77b9380,0,4,c0a72f40,f644db8c,...) at svc_run+0x7f nlm_syscall(c7836480,f644dcf8,10,c0c9d938,c0d815d8,...) at nlm_syscall+0x77d syscall(f644dd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (154, FreeBSD ELF32, nlm_syscall), eip = 0x280fab0b, esp = 0xbfbfed5c, ebp = 0xbfbfee28 --- Tracing command rpc.statd pid 1080 tid 100149 td 0xc7804b40 sched_switch(c7804b40,0,104,191,7e08266c,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7804b40,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f6570a4c,c087b2ba,c7ce2d90,0,c7804b40,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c7ce2da4,0,f6570a7c,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c7ce2da4,c7ce2d90,7531,603,c78a2498,...) at _cv_timedwait_sig+0x250 seltdwait(f6570c28,f6570c30,c7175100,c7804b40,c768ab00,...) at seltdwait+0x8a kern_select(c7804b40,8,bfbfed44,0,0,f6570c70,20,1e,0) at kern_select+0x4f4 select(c7804b40,f6570cf8,14,c0c9d222,c0d80f2c,...) at select+0x66 syscall(f6570d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x28187023, esp = 0xbfbfec9c, ebp = 0xbfbfedd8 --- Tracing command nfsd pid 1073 tid 100148 td 0xc82c7b40 sched_switch(c82c7b40,0,104,191,e4918f7a,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c82c7b40,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f656dbf8,c087b2ba,c74dae80,0,c82c7b40,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c77afa50,0,f656dc28,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c77afa50,c74dae80,1388,3af,5a5a5a5a,...) at _cv_timedwait_sig+0x250 svc_run_internal(f656dd24,c08610e8,c74dae80,f656dd38,c0c9192a,...) at svc_run_internal+0x356 svc_thread_start(c74dae80,f656dd38,c0c9192a,343,c7901d48,...) at svc_thread_start+0x10 fork_exit(c0a80f80,c74dae80,f656dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0x2e, eip = 0xc, esp = 0x33, ebp = 0 --- Tracing command nfsd pid 1073 tid 100147 td 0xc82c7d80 sched_switch(c82c7d80,0,104,191,f72bc9f4,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c82c7d80,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f656abf8,c087b2ba,c74dae80,0,c82c7d80,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c77b0410,0,f656ac28,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c77b0410,c74dae80,1388,3af,0,...) at _cv_timedwait_sig+0x250 svc_run_internal(f656ad24,c08610e8,c74dae80,f656ad38,c0c9192a,...) at svc_run_internal+0x356 svc_thread_start(c74dae80,f656ad38,c0c9192a,343,c7901d48,...) at svc_thread_start+0x10 fork_exit(c0a80f80,c74dae80,f656ad38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0x2e, eip = 0xc, esp = 0x33, ebp = 0 --- Tracing command nfsd pid 1073 tid 100146 td 0xc82c8000 sched_switch(c82c8000,0,104,191,be57d83a,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c82c8000,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f6567bf8,c087b2ba,c74dae80,0,c82c8000,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c7ce4910,0,f6567c28,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c7ce4910,c74dae80,1388,3af,bfbfdc74,...) at _cv_timedwait_sig+0x250 svc_run_internal(f6567d24,c08610e8,c74dae80,f6567d38,c0c9192a,...) at svc_run_internal+0x356 svc_thread_start(c74dae80,f6567d38,c0c9192a,343,c7901d48,...) at svc_thread_start+0x10 fork_exit(c0a80f80,c74dae80,f6567d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0x2e, eip = 0xc, esp = 0x33, ebp = 0 --- Tracing command nfsd pid 1073 tid 100105 td 0xc7b13b40 sched_switch(c7b13b40,0,104,191,dc47bba8,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7b13b40,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f64afae8,c087b2ba,c74dae80,0,c7b13b40,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c7d26790,0,f64afb18,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c7d26790,c74dae80,1388,3af,f64afb60,...) at _cv_timedwait_sig+0x250 svc_run_internal(c7b13ca4,14,c0cb9bfe,c0cb86b2,f64afc3c,...) at svc_run_internal+0x356 svc_run(c74dae80,0,c0cb89b6,1fd,0,...) at svc_run+0x7f nfssvc_nfsd(bfbfe8c0,f64afc3c,c,c7175100,f64afc50,...) at nfssvc_nfsd+0xad nfssvc_nfsserver(c7b13b40,f64afcf8,bfbfe8c0,c7b13b40,c7901d48,...) at nfssvc_nfsserver+0x24f nfssvc(c7b13b40,f64afcf8,8,c0c9d4f8,c0d815f4,...) at nfssvc+0x83 syscall(f64afd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (155, FreeBSD ELF32, nfssvc), eip = 0x280daaeb, esp = 0xbfbfe87c, ebp = 0xbfbfeae8 --- Tracing command nfsd pid 1072 tid 100106 td 0xc7905900 sched_switch(c7905900,0,104,191,9c9d034f,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7905900,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087b2ba,c7ce3050,0,c0c94be1,c7905900,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7ce3064,0,f64b5a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c7ce3064,c7ce3050,c0c9cb4b,603,c7808738,...) at _cv_wait_sig+0x240 seltdwait(c7808738,58,c7175100,c7905900,ebe,...) at seltdwait+0xa2 kern_select(c7905900,5,bfbfecf0,0,0,0,20,bfbffff4,1) at kern_select+0x4f4 select(c7905900,f64b5cf8,14,c7905900,c0d80f2c,...) at select+0x66 syscall(f64b5d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x2817e023, esp = 0xbfbfeaec, ebp = 0xbfbfee28 --- Tracing command mountd pid 1063 tid 100129 td 0xc7bf6000 sched_switch(c7bf6000,0,104,191,be7d73fd,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7bf6000,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087b2ba,c7ce6ad0,0,c0c94be1,c7bf6000,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7ce6ae4,0,f651ca7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c7ce6ae4,c7ce6ad0,c0c9cb4b,603,c7820ab8,...) at _cv_wait_sig+0x240 seltdwait(c7820ab8,58,c7175100,c7bf6000,c0f313c0,...) at seltdwait+0xa2 kern_select(c7bf6000,9,bfbfed7c,0,0,0,20,0,281a6478) at kern_select+0x4f4 select(c7bf6000,f651ccf8,14,c0cb8477,c0d80f2c,...) at select+0x66 syscall(f651cd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x28192023, esp = 0xbfbfed4c, ebp = 0xbfbfee18 --- Tracing command rpcbind pid 970 tid 100101 td 0xc7b14480 sched_switch(c7b14480,0,104,191,7d033002,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7b14480,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(f64a1aa8,c087b2ba,c7830550,0,c7b14480,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c7830564,0,f64a1ad8,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c7830564,c7830550,7531,603,f64a1b8c,...) at _cv_timedwait_sig+0x250 seltdwait(f64a1c5c,f64a1c64,511,c7b14480,f64a1b5c,...) at seltdwait+0x8a poll(c7b14480,f64a1cf8,c,c0c9d222,c0d81bdc,...) at poll+0x300 syscall(f64a1d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (209, FreeBSD ELF32, poll), eip = 0x2813f00f, esp = 0xbfbfcc0c, ebp = 0xbfbfedd8 --- Tracing command syslogd pid 891 tid 100079 td 0xc7836d80 sched_switch(c7836d80,0,103,18c,c731eccd,...) at sched_switch+0x406 mi_switch(103,0,c0c9b148,2e1,c7904800,...) at mi_switch+0x200 turnstile_wait(c7904800,c82c56c0,0,1ac,c0f6a980,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f6a980,c7836d80,0,c0ca152e,60e,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f6a980,0,c0ca152e,60e,e73125c0,...) at _mtx_lock_flags+0xf7 vfs_vmio_release(c0f5e490,0,c0ca152e,748,0,...) at vfs_vmio_release+0x54 getnewbuf(800,4000,0,a72,1f0,...) at getnewbuf+0x2e8 getblk(c7c029bc,0,0,800,0,...) at getblk+0x412 breadn(c7c029bc,0,0,800,0,...) at breadn+0x44 bread(c7c029bc,0,0,800,0,...) at bread+0x4c ffs_balloc_ufs2(c7c029bc,d3,0,1,c7175100,...) at ffs_balloc_ufs2+0xe59 ffs_extend(f6439b64,c0cd33f3,0,c7c029bc,f6439a40,...) at ffs_extend+0xbc VOP_EXTEND_APV(c0da22e0,f6439b64,c0cc2fb0,1ca,100000,...) at VOP_EXTEND_APV+0xd6 vnode_pager_write(c7c029bc,ca4d9a80,30003,27c,ca4d9a80,...) at vnode_pager_write+0x3d0 vn_write_chunk(c7175100,30003,0,ffffffff,0,...) at vn_write_chunk+0x11c vn_write(c7820c40,ca4d9a80,c7175100,0,c7836d80,...) at vn_write+0x13c dofilewrite(ca4d9a80,ffffffff,ffffffff,0,c7820c40,...) at dofilewrite+0x95 kern_writev(c7836d80,b,ca4d9a80,ca4d9a80,bfbfd6ac,...) at kern_writev+0x58 writev(c7836d80,f6439cf8,c,c7836d80,c0d8123c,...) at writev+0x46 syscall(f6439d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (121, FreeBSD ELF32, writev), eip = 0x281777db, esp = 0xbfbfd62c, ebp = 0xbfbfdd28 --- Tracing command devd pid 701 tid 100097 td 0xc78056c0 sched_switch(c78056c0,0,104,191,caf6e2,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c78056c0,0,c0c9a906,18b,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087b2ba,c78308d0,0,c0c94be1,c78056c0,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c78308e4,0,f6495a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c78308e4,c78308d0,c0c9cb4b,603,c7808b98,...) at _cv_wait_sig+0x240 seltdwait(c7808b98,58,c7175100,c78056c0,c0c8e4d3,...) at seltdwait+0xa2 kern_select(c78056c0,6,bfbfe9b0,0,0,0,20,0,10) at kern_select+0x4f4 select(c78056c0,f6495cf8,14,c0c35adc,c0d80f2c,...) at select+0x66 syscall(f6495d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x8088b73, esp = 0xbfbfe97c, ebp = 0xbfbfee58 --- Tracing command flowcleaner pid 20 tid 100074 td 0xc74e76c0 sched_switch(c74e76c0,0,104,191,444ef9e9,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c74e76c0,0,c0c9a906,26e,c74e76c0,...) at sleepq_switch+0x15f sleepq_timedwait(c0f5e908,0,f4239cc4,1,0,...) at sleepq_timedwait+0x6b _cv_timedwait(c0f5e908,c0f5e910,2710,3f0,0,...) at _cv_timedwait+0x250 flowtable_cleaner(0,f4239d38,c0c9192a,343,c77832a8,...) at flowtable_cleaner+0x1bf fork_exit(c09343c0,0,f4239d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4239d70, ebp = 0 --- Tracing command softdepflush pid 19 tid 100073 td 0xc74e7900 sched_switch(c74e7900,0,104,191,96853e40,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,44,...) at mi_switch+0x200 sleepq_switch(c74e7900,0,c0c9a906,26e,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0f6a020,44,c0cbd6d8,0,0,...) at sleepq_timedwait+0x6b _sleep(c0f6a020,c0f69fc4,44,c0cbd6d8,3e8,...) at _sleep+0x339 softdep_flush(0,f4236d38,c0c9192a,343,c7783550,...) at softdep_flush+0x244 fork_exit(c0ac1c90,0,f4236d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4236d70, ebp = 0 --- Tracing command syncer pid 18 tid 100072 td 0xc74e7b40 sched_switch(c74e7b40,0,104,191,9b7f0a24,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c74e7b40,0,c0c9a906,26e,c74e7b40,...) at sleepq_switch+0x15f sleepq_timedwait(c0f5e714,0,f4233c88,1,0,...) at sleepq_timedwait+0x6b _cv_timedwait(c0f5e714,c0f5e700,3e8,6ce,4e20,...) at _cv_timedwait+0x250 sched_sync(0,f4233d38,c0c9192a,343,c77837f8,...) at sched_sync+0x502 fork_exit(c091ee80,0,f4233d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4233d70, ebp = 0 --- Tracing command vnlru pid 17 tid 100071 td 0xc74e7d80 sched_switch(c74e7d80,0,104,191,89b9d83b,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,50,...) at mi_switch+0x200 sleepq_switch(c74e7d80,0,c0c9a906,26e,0,...) at sleepq_switch+0x15f sleepq_timedwait(c7783aa0,50,c0ca4908,0,0,...) at sleepq_timedwait+0x6b _sleep(c7783aa0,c0f5e6d4,250,c0ca4908,3e8,...) at _sleep+0x339 vnlru_proc(0,f4230d38,c0c9192a,343,c7783aa0,...) at vnlru_proc+0xe7 fork_exit(c091fa50,0,f4230d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4230d70, ebp = 0 --- Tracing command bufdaemon pid 16 tid 100070 td 0xc74e9000 sched_switch(c74e9000,0,104,191,91040b33,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,44,...) at mi_switch+0x200 sleepq_switch(c74e9000,0,c0c9a906,26e,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0f5e448,44,c0ca1e72,0,0,...) at sleepq_timedwait+0x6b _sleep(c0f5e448,c0f5e44c,44,c0ca1e72,3e8,...) at _sleep+0x339 buf_daemon(0,f422dd38,c0c9192a,343,c7783d48,...) at buf_daemon+0x138 fork_exit(c0906fb0,0,f422dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf422dd70, ebp = 0 --- Tracing command pagezero pid 15 tid 100069 td 0xc74e9240 sched_switch(c74e9240,0,104,191,60265cf1,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c74e9240,0,c0c9a906,26e,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0f6ae18,0,c0cc3563,0,0,...) at sleepq_timedwait+0x6b _sleep(c0f6ae18,c0f6a900,0,c0cc3563,493e0,...) at _sleep+0x339 vm_pagezero(0,f422ad38,c0c9192a,343,c71782a8,...) at vm_pagezero+0xdc fork_exit(c0b02ad0,0,f422ad38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf422ad70, ebp = 0 --- Tracing command vmdaemon pid 9 tid 100068 td 0xc74e9480 sched_switch(c74e9480,0,104,191,6dc9b35e,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,68,...) at mi_switch+0x200 sleepq_switch(c74e9480,0,c0c9a906,24b,0,...) at sleepq_switch+0x15f sleepq_wait(c0f6aa44,68,c0ca1e72,0,0,...) at sleepq_wait+0x63 _sleep(c0f6aa44,c0f6aa48,68,c0ca1e72,0,...) at _sleep+0x36b vm_daemon(0,f4227d38,c0c9192a,343,c7178550,...) at vm_daemon+0x59 fork_exit(c0afb930,0,f4227d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4227d70, ebp = 0 --- Tracing command pagedaemon pid 8 tid 100067 td 0xc74e96c0 sched_switch(c74e96c0,0,104,191,fab5a1b8,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,44,...) at mi_switch+0x200 sleepq_switch(c74e96c0,0,c0c9a906,26e,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0f6aa0c,44,c0ca1e72,0,0,...) at sleepq_timedwait+0x6b _sleep(c0f6aa0c,c0f6a900,44,c0ca1e72,1388,...) at _sleep+0x339 vm_pageout(0,f4224d38,c0c9192a,343,c71787f8,...) at vm_pageout+0x2bb fork_exit(c0afc7e0,0,f4224d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4224d70, ebp = 0 --- Tracing command fdc0 pid 7 tid 100064 td 0xc74e9d80 sched_switch(c74e9d80,0,104,191,850f4814,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,4c,...) at mi_switch+0x200 sleepq_switch(c74e9d80,0,c0c9a906,26e,0,...) at sleepq_switch+0x15f sleepq_timedwait(c73c063c,4c,c0c8bea6,0,0,...) at sleepq_timedwait+0x6b _sleep(c73c063c,c73c06f0,4c,c0c8bea6,3e8,...) at _sleep+0x339 fdc_thread(c73c0600,f41bbd38,c0c9192a,343,c7178aa0,...) at fdc_thread+0x27d fork_exit(c0b80050,c73c0600,f41bbd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf41bbd70, ebp = 0 --- Tracing command fw0_probe pid 6 tid 100062 td 0xc73ba480 sched_switch(c73ba480,0,104,191,758843f4,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c73ba480,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c73f4000,5c,c0c8bea6,100,0,...) at sleepq_wait_sig+0x17 _sleep(c73f4000,c73f8488,15c,c0c8bea6,0,...) at _sleep+0x354 fw_bus_probe_thread(c73f4000,f41abd38,c0c9192a,343,c7178d48,...) at fw_bus_probe_thread+0xa08 fork_exit(c065a0c0,c73f4000,f41abd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf41abd70, ebp = 0 --- Tracing command usb pid 14 tid 100058 td 0xc73bad80 sched_switch(c73bad80,0,104,191,51640329,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73bad80,0,c0c9a906,24b,c73bad80,...) at sleepq_switch+0x15f sleepq_wait(c73d4d0c,0,f4194cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73d4d0c,c73d4dac,c0c84f3e,6c,c73d4d14,...) at _cv_wait+0x240 usb_process(c73d4d04,f4194d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73d4d04,f4194d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4194d70, ebp = 0 --- Tracing command usb pid 14 tid 100057 td 0xc73cc000 sched_switch(c73cc000,0,104,191,d423cd76,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73cc000,0,c0c9a906,24b,c73cc000,...) at sleepq_switch+0x15f sleepq_wait(c73d4cdc,0,f4191cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73d4cdc,c73d4dac,c0c84f3e,6c,c73d4ce4,...) at _cv_wait+0x240 usb_process(c73d4cd4,f4191d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73d4cd4,f4191d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4191d70, ebp = 0 --- Tracing command usb pid 14 tid 100056 td 0xc73cc240 sched_switch(c73cc240,0,104,191,50fdd0be,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73cc240,0,c0c9a906,24b,c73cc240,...) at sleepq_switch+0x15f sleepq_wait(c73d4cac,0,f418ecbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73d4cac,c73d4dac,c0c84f3e,6c,c73d4cb4,...) at _cv_wait+0x240 usb_process(c73d4ca4,f418ed38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73d4ca4,f418ed38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf418ed70, ebp = 0 --- Tracing command usb pid 14 tid 100055 td 0xc73cc480 sched_switch(c73cc480,0,104,191,50fdbf8e,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73cc480,0,c0c9a906,24b,c73cc480,...) at sleepq_switch+0x15f sleepq_wait(c73d4c7c,0,f418bcbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73d4c7c,c73d4dac,c0c84f3e,6c,c73d4c84,...) at _cv_wait+0x240 usb_process(c73d4c74,f418bd38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73d4c74,f418bd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf418bd70, ebp = 0 --- Tracing command usb pid 14 tid 100053 td 0xc73cc900 sched_switch(c73cc900,0,104,191,50fdac0e,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73cc900,0,c0c9a906,24b,c73cc900,...) at sleepq_switch+0x15f sleepq_wait(c73c6b5c,0,f4183cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73c6b5c,c73c6bfc,c0c84f3e,6c,c73c6b64,...) at _cv_wait+0x240 usb_process(c73c6b54,f4183d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73c6b54,f4183d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4183d70, ebp = 0 --- Tracing command usb pid 14 tid 100052 td 0xc73ccb40 sched_switch(c73ccb40,0,104,191,c2fc46b1,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73ccb40,0,c0c9a906,24b,c73ccb40,...) at sleepq_switch+0x15f sleepq_wait(c73c6b2c,0,f4180cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73c6b2c,c73c6bfc,c0c84f3e,6c,c73c6b34,...) at _cv_wait+0x240 usb_process(c73c6b24,f4180d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73c6b24,f4180d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4180d70, ebp = 0 --- Tracing command usb pid 14 tid 100051 td 0xc73ccd80 sched_switch(c73ccd80,0,104,191,509a196f,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73ccd80,0,c0c9a906,24b,c73ccd80,...) at sleepq_switch+0x15f sleepq_wait(c73c6afc,0,f417dcbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73c6afc,c73c6bfc,c0c84f3e,6c,c73c6b04,...) at _cv_wait+0x240 usb_process(c73c6af4,f417dd38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73c6af4,f417dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf417dd70, ebp = 0 --- Tracing command usb pid 14 tid 100050 td 0xc736c6c0 sched_switch(c736c6c0,0,104,191,509a070c,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c736c6c0,0,c0c9a906,24b,c736c6c0,...) at sleepq_switch+0x15f sleepq_wait(c73c6acc,0,f417acbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73c6acc,c73c6bfc,c0c84f3e,6c,c73c6ad4,...) at _cv_wait+0x240 usb_process(c73c6ac4,f417ad38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73c6ac4,f417ad38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf417ad70, ebp = 0 --- Tracing command usb pid 14 tid 100049 td 0xc736c900 sched_switch(c736c900,0,104,191,5099f5c5,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c736c900,0,c0c9a906,24b,c736c900,...) at sleepq_switch+0x15f sleepq_wait(c73c2b5c,0,f4176cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73c2b5c,c73c2bfc,c0c84f3e,6c,c73c2b64,...) at _cv_wait+0x240 usb_process(c73c2b54,f4176d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73c2b54,f4176d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4176d70, ebp = 0 --- Tracing command usb pid 14 tid 100048 td 0xc736cb40 sched_switch(c736cb40,0,104,191,c2fb8632,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c736cb40,0,c0c9a906,24b,c736cb40,...) at sleepq_switch+0x15f sleepq_wait(c73c2b2c,0,f4173cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73c2b2c,c73c2bfc,c0c84f3e,6c,c73c2b34,...) at _cv_wait+0x240 usb_process(c73c2b24,f4173d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73c2b24,f4173d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4173d70, ebp = 0 --- Tracing command usb pid 14 tid 100047 td 0xc736cd80 sched_switch(c736cd80,0,104,191,5036b701,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c736cd80,0,c0c9a906,24b,c736cd80,...) at sleepq_switch+0x15f sleepq_wait(c73c2afc,0,f4170cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73c2afc,c73c2bfc,c0c84f3e,6c,c73c2b04,...) at _cv_wait+0x240 usb_process(c73c2af4,f4170d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73c2af4,f4170d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4170d70, ebp = 0 --- Tracing command usb pid 14 tid 100046 td 0xc73b9000 sched_switch(c73b9000,0,104,191,5036a443,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73b9000,0,c0c9a906,24b,c73b9000,...) at sleepq_switch+0x15f sleepq_wait(c73c2acc,0,f416dcbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73c2acc,c73c2bfc,c0c84f3e,6c,c73c2ad4,...) at _cv_wait+0x240 usb_process(c73c2ac4,f416dd38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73c2ac4,f416dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf416dd70, ebp = 0 --- Tracing command usb pid 14 tid 100045 td 0xc73b9240 sched_switch(c73b9240,0,104,191,503691e4,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73b9240,0,c0c9a906,24b,c73b9240,...) at sleepq_switch+0x15f sleepq_wait(c73bbb5c,0,f4169cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73bbb5c,c73bbbfc,c0c84f3e,6c,c73bbb64,...) at _cv_wait+0x240 usb_process(c73bbb54,f4169d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73bbb54,f4169d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4169d70, ebp = 0 --- Tracing command usb pid 14 tid 100044 td 0xc73b9480 sched_switch(c73b9480,0,104,191,c2fae6ce,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73b9480,0,c0c9a906,24b,c73b9480,...) at sleepq_switch+0x15f sleepq_wait(c73bbb2c,0,f4166cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73bbb2c,c73bbbfc,c0c84f3e,6c,c73bbb34,...) at _cv_wait+0x240 usb_process(c73bbb24,f4166d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73bbb24,f4166d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4166d70, ebp = 0 --- Tracing command usb pid 14 tid 100043 td 0xc73b96c0 sched_switch(c73b96c0,0,104,191,4fd21bd6,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73b96c0,0,c0c9a906,24b,c73b96c0,...) at sleepq_switch+0x15f sleepq_wait(c73bbafc,0,f4163cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73bbafc,c73bbbfc,c0c84f3e,6c,c73bbb04,...) at _cv_wait+0x240 usb_process(c73bbaf4,f4163d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73bbaf4,f4163d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4163d70, ebp = 0 --- Tracing command usb pid 14 tid 100042 td 0xc73b9900 sched_switch(c73b9900,0,104,191,4fd2092e,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73b9900,0,c0c9a906,24b,c73b9900,...) at sleepq_switch+0x15f sleepq_wait(c73bbacc,0,f4160cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73bbacc,c73bbbfc,c0c84f3e,6c,c73bbad4,...) at _cv_wait+0x240 usb_process(c73bbac4,f4160d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73bbac4,f4160d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4160d70, ebp = 0 --- Tracing command usb pid 14 tid 100040 td 0xc73b9d80 sched_switch(c73b9d80,0,104,191,4fd1f30f,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73b9d80,0,c0c9a906,24b,c73b9d80,...) at sleepq_switch+0x15f sleepq_wait(c73b6b5c,0,f4159cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73b6b5c,c73b6bfc,c0c84f3e,6c,c73b6b64,...) at _cv_wait+0x240 usb_process(c73b6b54,f4159d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73b6b54,f4159d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4159d70, ebp = 0 --- Tracing command usb pid 14 tid 100039 td 0xc73ba000 sched_switch(c73ba000,0,104,191,c2f9f9dc,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73ba000,0,c0c9a906,24b,c73ba000,...) at sleepq_switch+0x15f sleepq_wait(c73b6b2c,0,f4156cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73b6b2c,c73b6bfc,c0c84f3e,6c,c73b6b34,...) at _cv_wait+0x240 usb_process(c73b6b24,f4156d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73b6b24,f4156d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4156d70, ebp = 0 --- Tracing command usb pid 14 tid 100038 td 0xc7350d80 sched_switch(c7350d80,0,104,191,4f6c66e6,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7350d80,0,c0c9a906,24b,c7350d80,...) at sleepq_switch+0x15f sleepq_wait(c73b6afc,0,f4153cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73b6afc,c73b6bfc,c0c84f3e,6c,c73b6b04,...) at _cv_wait+0x240 usb_process(c73b6af4,f4153d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73b6af4,f4153d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4153d70, ebp = 0 --- Tracing command usb pid 14 tid 100037 td 0xc736a000 sched_switch(c736a000,0,104,191,4f6c5504,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c736a000,0,c0c9a906,24b,c736a000,...) at sleepq_switch+0x15f sleepq_wait(c73b6acc,0,f4150cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73b6acc,c73b6bfc,c0c84f3e,6c,c73b6ad4,...) at _cv_wait+0x240 usb_process(c73b6ac4,f4150d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73b6ac4,f4150d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4150d70, ebp = 0 --- Tracing command usb pid 14 tid 100035 td 0xc736a480 sched_switch(c736a480,0,104,191,4f6c3f85,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c736a480,0,c0c9a906,24b,c736a480,...) at sleepq_switch+0x15f sleepq_wait(c73a7b5c,0,f4149cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73a7b5c,c73a7bfc,c0c84f3e,6c,c73a7b64,...) at _cv_wait+0x240 usb_process(c73a7b54,f4149d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73a7b54,f4149d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4149d70, ebp = 0 --- Tracing command usb pid 14 tid 100034 td 0xc736a6c0 sched_switch(c736a6c0,0,104,191,c2f90737,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c736a6c0,0,c0c9a906,24b,c736a6c0,...) at sleepq_switch+0x15f sleepq_wait(c73a7b2c,0,f4146cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73a7b2c,c73a7bfc,c0c84f3e,6c,c73a7b34,...) at _cv_wait+0x240 usb_process(c73a7b24,f4146d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73a7b24,f4146d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4146d70, ebp = 0 --- Tracing command usb pid 14 tid 100033 td 0xc736a900 sched_switch(c736a900,0,104,191,4f017500,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c736a900,0,c0c9a906,24b,c736a900,...) at sleepq_switch+0x15f sleepq_wait(c73a7afc,0,f4143cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73a7afc,c73a7bfc,c0c84f3e,6c,c73a7b04,...) at _cv_wait+0x240 usb_process(c73a7af4,f4143d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73a7af4,f4143d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4143d70, ebp = 0 --- Tracing command usb pid 14 tid 100032 td 0xc736ab40 sched_switch(c736ab40,0,104,191,4f01623b,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c736ab40,0,c0c9a906,24b,c736ab40,...) at sleepq_switch+0x15f sleepq_wait(c73a7acc,0,f4140cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c73a7acc,c73a7bfc,c0c84f3e,6c,c73a7ad4,...) at _cv_wait+0x240 usb_process(c73a7ac4,f4140d38,c0c9192a,343,c7346000,...) at usb_process+0x193 fork_exit(c07bdea0,c73a7ac4,f4140d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf4140d70, ebp = 0 --- Tracing command xpt_thrd pid 5 tid 100024 td 0xc71bfd80 sched_switch(c71bfd80,0,104,191,4f01479d,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,4c,...) at mi_switch+0x200 sleepq_switch(c71bfd80,0,c0c9a906,24b,0,...) at sleepq_switch+0x15f sleepq_wait(c0dbe054,4c,c0c30c1a,0,0,...) at sleepq_wait+0x63 _sleep(c0dbe054,c0dbe06c,4c,c0c30c1a,0,...) at _sleep+0x36b xpt_scanner_thread(0,c6e44d38,c0c9192a,343,c73462a8,...) at xpt_scanner_thread+0x4a fork_exit(c0484470,0,c6e44d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e44d70, ebp = 0 --- Tracing command yarrow pid 13 tid 100017 td 0xc717b240 sched_switch(c717b240,0,104,191,af4b56ed,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c717b240,0,c0c9a906,26e,2,...) at sleepq_switch+0x15f sleepq_timedwait(c0df1ca4,0,c0c8bea6,2,0,...) at sleepq_timedwait+0x6b _sleep(c0df1ca4,0,0,c0c8bea6,64,...) at _sleep+0x339 pause(c0c8bea6,64,c0c78efd,111,0,...) at pause+0x47 random_kthread(0,c6e2fd38,c0c9192a,343,c7346550,...) at random_kthread+0x1ef fork_exit(c07368c0,0,c6e2fd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e2fd70, ebp = 0 --- Tracing command g_down pid 4 tid 100015 td 0xc717b6c0 sched_switch(c717b6c0,0,104,191,b5f782ab,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,4c,...) at mi_switch+0x200 sleepq_switch(c717b6c0,0,c0c9a906,24b,0,...) at sleepq_switch+0x15f sleepq_wait(c0defa64,4c,c0c8bea6,0,0,...) at sleepq_wait+0x63 _sleep(c0defa64,c0def9c8,24c,c0c8bea6,0,...) at _sleep+0x36b g_io_schedule_down(c717b6c0,0,c0c8d56e,74,0,...) at g_io_schedule_down+0x56 g_down_procbody(0,c6e29d38,c0c9192a,343,c7177000,...) at g_down_procbody+0x8d fork_exit(c0827e20,0,c6e29d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e29d70, ebp = 0 --- Tracing command g_up pid 3 tid 100014 td 0xc717b900 sched_switch(c717b900,0,104,191,b610d1a1,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,4c,...) at mi_switch+0x200 sleepq_switch(c717b900,0,c0c9a906,24b,0,...) at sleepq_switch+0x15f sleepq_wait(c0defa60,4c,c0c8bea6,0,0,...) at sleepq_wait+0x63 _sleep(c0defa60,c0def9e8,24c,c0c8bea6,0,...) at _sleep+0x36b g_io_schedule_up(c717b900,0,c0c8d56e,5d,0,...) at g_io_schedule_up+0x11e g_up_procbody(0,c6e26d38,c0c9192a,343,c71772a8,...) at g_up_procbody+0x8d fork_exit(c0827eb0,0,c6e26d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e26d70, ebp = 0 --- Tracing command g_event pid 2 tid 100013 td 0xc717bb40 sched_switch(c717bb40,0,104,191,e8184405,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,4c,...) at mi_switch+0x200 sleepq_switch(c717bb40,0,c0c9a906,26e,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0defa58,4c,c0c8bea6,0,0,...) at sleepq_timedwait+0x6b _sleep(c0defa58,0,4c,c0c8bea6,64,...) at _sleep+0x339 g_event_procbody(0,c6e23d38,c0c9192a,343,c7177550,...) at g_event_procbody+0xcb fork_exit(c0827f40,0,c6e23d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e23d70, ebp = 0 --- Tracing command intr pid 12 tid 100066 td 0xc74e9900 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100065 td 0xc74e9b40 sched_switch(c74e9b40,0,109,191,4efdf702,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c7175070,...) at mi_switch+0x200 ithread_loop(c74e0390,f41bed38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c74e0390,f41bed38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf41bed70, ebp = 0 --- Tracing command intr pid 12 tid 100063 td 0xc73ba240 sched_switch(c73ba240,0,109,191,c96e6ba4,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c74db0f0,...) at mi_switch+0x200 ithread_loop(c74e0840,f41aed38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c74e0840,f41aed38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf41aed70, ebp = 0 --- Tracing command intr pid 12 tid 100060 td 0xc73ba900 sched_switch(c73ba900,0,109,191,4ee5fa16,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71be0f0,...) at mi_switch+0x200 ithread_loop(c73ebbf0,f41a2d38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c73ebbf0,f41a2d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf41a2d70, ebp = 0 --- Tracing command intr pid 12 tid 100059 td 0xc73bab40 sched_switch(c73bab40,0,109,191,5bcb6926,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71be3f0,...) at mi_switch+0x200 ithread_loop(c73eb450,f419ad38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c73eb450,f419ad38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf419ad70, ebp = 0 --- Tracing command intr pid 12 tid 100054 td 0xc73cc6c0 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100041 td 0xc73b9b40 sched_switch(c73b9b40,0,109,191,78b9d477,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71be1f0,...) at mi_switch+0x200 ithread_loop(c739f690,f415dd38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c739f690,f415dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf415dd70, ebp = 0 --- Tracing command intr pid 12 tid 100036 td 0xc736a240 sched_switch(c736a240,0,109,191,780e9324,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71be270,...) at mi_switch+0x200 ithread_loop(c739f9f0,f414dd38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c739f9f0,f414dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf414dd70, ebp = 0 --- Tracing command intr pid 12 tid 100031 td 0xc736ad80 sched_switch(c736ad80,0,109,191,d3cacf6f,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71be2f0,...) at mi_switch+0x200 ithread_loop(c73ad110,f413dd38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c73ad110,f413dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf413dd70, ebp = 0 --- Tracing command intr pid 12 tid 100030 td 0xc736c000 sched_switch(c736c000,0,109,191,b607eae1,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71bdef0,...) at mi_switch+0x200 ithread_loop(c739f500,c6f87d38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c739f500,c6f87d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6f87d70, ebp = 0 --- Tracing command intr pid 12 tid 100029 td 0xc736c240 sched_switch(c736c240,0,109,191,67983dce,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c738c0f0,...) at mi_switch+0x200 ithread_loop(c73928d0,c6e81d38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c73928d0,c6e81d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e81d70, ebp = 0 --- Tracing command intr pid 12 tid 100028 td 0xc736c480 sched_switch(c736c480,0,109,191,4efe95e0,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c7174b70,...) at mi_switch+0x200 ithread_loop(c7176600,c6e77d38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c7176600,c6e77d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e77d70, ebp = 0 --- Tracing command intr pid 12 tid 100027 td 0xc71bf6c0 sched_switch(c71bf6c0,0,109,191,b565d107,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c73517f0,...) at mi_switch+0x200 ithread_loop(c7176460,c6e4dd38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c7176460,c6e4dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e4dd70, ebp = 0 --- Tracing command intr pid 12 tid 100025 td 0xc71bfb40 sched_switch(c71bfb40,0,109,191,6c5668ab,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c7351870,...) at mi_switch+0x200 ithread_loop(c71763b0,c6e47d38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c71763b0,c6e47d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e47d70, ebp = 0 --- Tracing command intr pid 12 tid 100020 td 0xc73506c0 sched_switch(c73506c0,0,109,191,d086a7ee,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c7351a70,...) at mi_switch+0x200 ithread_loop(c710ca20,c6e38d38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c710ca20,c6e38d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e38d70, ebp = 0 --- Tracing command intr pid 12 tid 100019 td 0xc7350900 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100012 td 0xc717bd80 sched_switch(c717bd80,0,109,191,a7b97cc6,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71bdb70,...) at mi_switch+0x200 ithread_loop(c71761b0,c6e20d38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c71761b0,c6e20d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e20d70, ebp = 0 --- Tracing command intr pid 12 tid 100011 td 0xc71bf000 sched_switch(c71bf000,0,109,191,e8182321,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71bdbf0,...) at mi_switch+0x200 ithread_loop(c71761c0,c6e1dd38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c71761c0,c6e1dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e1dd70, ebp = 0 --- Tracing command intr pid 12 tid 100010 td 0xc71bf240 sched_switch(c71bf240,0,109,191,af4b02c2,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71bdc70,...) at mi_switch+0x200 ithread_loop(c71761d0,c6e1ad38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c71761d0,c6e1ad38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e1ad70, ebp = 0 --- Tracing command intr pid 12 tid 100009 td 0xc71bf480 sched_switch(c71bf480,0,109,191,ada9e53b,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71bdcf0,...) at mi_switch+0x200 ithread_loop(c71761e0,c6e17d38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c71761e0,c6e17d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e17d70, ebp = 0 --- Tracing command intr pid 12 tid 100008 td 0xc7179000 sched_switch(c7179000,0,109,191,eea676c5,...) at sched_switch+0x406 mi_switch(109,0,c0c91ba9,52d,c71bdd70,...) at mi_switch+0x200 ithread_loop(c71761f0,c6e14d38,c0c9192a,343,c71777f8,...) at ithread_loop+0x1f6 fork_exit(c08640d0,c71761f0,c6e14d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e14d70, ebp = 0 --- Tracing command intr pid 12 tid 100007 td 0xc7179240 fork_trampoline() at fork_trampoline Tracing command idle pid 11 tid 100006 td 0xc7179480 sched_switch(c7179480,0,60c,18c,b5716f1c,...) at sched_switch+0x406 mi_switch(60c,0,c0c98033,815,0,...) at mi_switch+0x200 sched_preempt(c7179480,0,ca0086c0,c6e0dcb4,c0ba71fe,...) at sched_preempt+0x9f ipi_bitmap_handler(8,28,28,1,c0df5bc0,...) at ipi_bitmap_handler+0x34 Xipi_intr_bitmap_handler() at Xipi_intr_bitmap_handler+0x2e --- interrupt, eip = 0xc087bd87, esp = 0xc6e0dc8c, ebp = 0xc6e0dcb4 --- _thread_lock_flags(c7179480,0,c0c98033,a07,c7179480,...) at _thread_lock_flags+0x177 sched_idletd(0,c6e0dd38,c0c9192a,343,c7177aa0,...) at sched_idletd+0x271 fork_exit(c08ade70,0,c6e0dd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e0dd70, ebp = 0 --- Tracing command idle pid 11 tid 100005 td 0xc71796c0 sched_switch(c71796c0,0,108,18c,b610e3c1,...) at sched_switch+0x406 mi_switch(108,0,c0c98033,3ae,c71796c0,...) at mi_switch+0x200 sched_idletd(0,c6e0ad38,c0c9192a,343,c7177aa0,...) at sched_idletd+0x19b fork_exit(c08ade70,0,c6e0ad38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e0ad70, ebp = 0 --- Tracing command idle pid 11 tid 100004 td 0xc7179900 sched_switch(c7179900,0,108,18c,b5f6fb18,...) at sched_switch+0x406 mi_switch(108,0,c0c98033,3ae,c7179900,...) at mi_switch+0x200 sched_idletd(0,c6e07d38,c0c9192a,343,c7177aa0,...) at sched_idletd+0x19b fork_exit(c08ade70,0,c6e07d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e07d70, ebp = 0 --- Tracing command idle pid 11 tid 100003 td 0xc7179b40 cpustop_handler(8,c6e04c20,c0bc4ab6,c6e04bb0,c087af04,...) at cpustop_handler+0x32 ipi_nmi_handler(c6e04bb0,c087af04,c0df1f28,4,c7177aa0,...) at ipi_nmi_handler+0x2f trap(c6e04c2c) at trap+0x36 calltrap() at calltrap+0x6 --- trap 0x13, eip = 0xc0b9b2f5, esp = 0xc6e04c6c, ebp = 0xc6e04c6c --- acpi_cpu_c1(3,c6e04cd4,3,ffffffff,c6e04cb4,...) at acpi_cpu_c1+0x5 acpi_cpu_idle(ffffffff,0,c6e04cb4,c0bb2a4b,1,...) at acpi_cpu_idle+0x11c cpu_idle_amdc1e(1,c6e04cf8,c08ae0ae,1,c6e04cd4,...) at cpu_idle_amdc1e+0x56 cpu_idle(1,c6e04cd4,c0c98033,3b0,c7179b40,...) at cpu_idle+0x1b sched_idletd(0,c6e04d38,c0c9192a,343,c7177aa0,...) at sched_idletd+0x23e fork_exit(c08ade70,0,c6e04d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e04d70, ebp = 0 --- Tracing command init pid 1 tid 100002 td 0xc7179d80 sched_switch(c7179d80,0,104,191,16cfcf17,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,5c,...) at mi_switch+0x200 sleepq_switch(c7179d80,0,c0c9a906,18b,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0c9a906,15b,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c7177d48,5c,c0c9d0e5,100,0,...) at sleepq_wait_sig+0x17 _sleep(c7177d48,c7177dd0,15c,c0c9d0e5,0,...) at _sleep+0x354 kern_wait(c7179d80,ffffffff,c6e00c74,0,0,...) at kern_wait+0xb76 wait4(c7179d80,c6e00cf8,10,c7179d80,c0d805c4,...) at wait4+0x3b syscall(c6e00d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x8054dbf, esp = 0xbfbfe90c, ebp = 0xbfbfe928 --- Tracing command audit pid 10 tid 100001 td 0xc717b000 sched_switch(c717b000,0,104,191,4eff000f,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c717b000,0,c0c9a906,24b,c717b000,...) at sleepq_switch+0x15f sleepq_wait(c0f69940,0,c6dfdc9c,1,0,...) at sleepq_wait+0x63 _cv_wait(c0f69940,c0f69924,c0cba95a,194,0,...) at _cv_wait+0x240 audit_worker(0,c6dfdd38,c0c9192a,343,c7178000,...) at audit_worker+0x84 fork_exit(c0a910a0,0,c6dfdd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6dfdd70, ebp = 0 --- Tracing command kernel pid 0 tid 100061 td 0xc73ba6c0 sched_switch(c73ba6c0,0,104,191,e75ab452,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c73ba6c0,0,c0c9a906,24b,c73ba6c0,...) at sleepq_switch+0x15f sleepq_wait(c73a1880,0,c0c9709f,c0c8bea6,0,...) at sleepq_wait+0x63 msleep_spin(c73a1880,c73a1898,c0c8bea6,0,c0c94be1,...) at msleep_spin+0x21d taskqueue_thread_loop(c73f849c,f41a8d38,c0c9192a,343,c0defb40,...) at taskqueue_thread_loop+0x94 fork_exit(c08c7290,c73f849c,f41a8d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf41a8d70, ebp = 0 --- Tracing command kernel pid 0 tid 100026 td 0xc71bf900 sched_switch(c71bf900,0,104,191,517430db,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c71bf900,0,c0c9a906,24b,0,...) at sleepq_switch+0x15f sleepq_wait(c73440c0,0,c0c8bea6,0,0,...) at sleepq_wait+0x63 _sleep(c73440c0,c73440d8,0,c0c8bea6,0,...) at _sleep+0x36b taskqueue_thread_loop(c0df03d0,c6e4ad38,c0c9192a,343,c0defb40,...) at taskqueue_thread_loop+0xba fork_exit(c08c7290,c0df03d0,c6e4ad38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e4ad70, ebp = 0 --- Tracing command kernel pid 0 tid 100023 td 0xc7350000 sched_switch(c7350000,0,104,191,51741e5f,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7350000,0,c0c9a906,24b,c7350000,...) at sleepq_switch+0x15f sleepq_wait(c7344240,0,c0c9709f,c0c8bea6,0,...) at sleepq_wait+0x63 msleep_spin(c7344240,c7344258,c0c8bea6,0,c0c94be1,...) at msleep_spin+0x21d taskqueue_thread_loop(c0dc0ea0,c6e41d38,c0c9192a,343,c0defb40,...) at taskqueue_thread_loop+0x94 fork_exit(c08c7290,c0dc0ea0,c6e41d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e41d70, ebp = 0 --- Tracing command kernel pid 0 tid 100022 td 0xc7350240 sched_switch(c7350240,0,104,191,51740eca,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7350240,0,c0c9a906,24b,c7350240,...) at sleepq_switch+0x15f sleepq_wait(c7344240,0,c0c9709f,c0c8bea6,0,...) at sleepq_wait+0x63 msleep_spin(c7344240,c7344258,c0c8bea6,0,c0c94be1,...) at msleep_spin+0x21d taskqueue_thread_loop(c0dc0ea0,c6e3ed38,c0c9192a,343,c0defb40,...) at taskqueue_thread_loop+0x94 fork_exit(c08c7290,c0dc0ea0,c6e3ed38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e3ed70, ebp = 0 --- Tracing command kernel pid 0 tid 100021 td 0xc7350480 sched_switch(c7350480,0,104,191,5173fdcf,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7350480,0,c0c9a906,24b,c7350480,...) at sleepq_switch+0x15f sleepq_wait(c7344240,0,c0c9709f,c0c8bea6,0,...) at sleepq_wait+0x63 msleep_spin(c7344240,c7344258,c0c8bea6,0,c0c94be1,...) at msleep_spin+0x21d taskqueue_thread_loop(c0dc0ea0,c6e3bd38,c0c9192a,343,c0defb40,...) at taskqueue_thread_loop+0x94 fork_exit(c08c7290,c0dc0ea0,c6e3bd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e3bd70, ebp = 0 --- Tracing command kernel pid 0 tid 100018 td 0xc7350b40 sched_switch(c7350b40,0,104,191,6c58543d,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c7350b40,0,c0c9a906,24b,0,...) at sleepq_switch+0x15f sleepq_wait(c7344540,0,c0c8bea6,0,0,...) at sleepq_wait+0x63 _sleep(c7344540,c7344558,0,c0c8bea6,0,...) at _sleep+0x36b taskqueue_thread_loop(c0e04648,c6e32d38,c0c9192a,343,c0defb40,...) at taskqueue_thread_loop+0xba fork_exit(c08c7290,c0e04648,c6e32d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e32d70, ebp = 0 --- Tracing command kernel pid 0 tid 100016 td 0xc717b480 sched_switch(c717b480,0,104,191,71a917cd,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,0,...) at mi_switch+0x200 sleepq_switch(c717b480,0,c0c9a906,24b,0,...) at sleepq_switch+0x15f sleepq_wait(c715ed80,0,c0c8bea6,0,0,...) at sleepq_wait+0x63 _sleep(c715ed80,c715ed98,0,c0c8bea6,0,...) at _sleep+0x36b taskqueue_thread_loop(c0e030e0,c6e2cd38,c0c9192a,343,c0defb40,...) at taskqueue_thread_loop+0xba fork_exit(c08c7290,c0e030e0,c6e2cd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc6e2cd70, ebp = 0 --- Tracing command kernel pid 0 tid 100000 td 0xc0defdf0 sched_switch(c0defdf0,0,104,191,acd2819f,...) at sched_switch+0x406 mi_switch(104,0,c0c9a906,1d6,44,...) at mi_switch+0x200 sleepq_switch(c0defdf0,0,c0c9a906,26e,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0defb40,44,c0c988a8,0,0,...) at sleepq_timedwait+0x6b _sleep(c0defb40,0,44,c0c988a8,2710,...) at _sleep+0x339 scheduler(0,141ec00,141ec00,141e000,1425000,...) at scheduler+0x23e mi_startup() at mi_startup+0x96 begin() at begin+0x2c db:0:allt> call doadump Physical memory: 3439 MB Dumping 248 MB: 233 217 201 185 169 153 137 121 105 89 73 57 41 25 9 Dump complete = 0xf db:0:doadump> reset cpu_reset: Restarting BSP cpu_reset_proxy: Stopped CPU 2 (kgdb) bt #0 doadump () at pcpu.h:246 #1 0xc04cff39 in db_fncall (dummy1=0xc087ab43, dummy2=0x0, dummy3=0xffffffff, dummy4=0xf6652670 "\204&eö") at ../../../ddb/db_command.c:548 #2 0xc04d036f in db_command (last_cmdp=0xc0dbf07c, cmd_table=0x0, dopager=0x0) at ../../../ddb/db_command.c:445 #3 0xc04d0424 in db_command_script (command=0xc0dbff88 "call doadump") at ../../../ddb/db_command.c:516 #4 0xc04d45a0 in db_script_exec (scriptname=0xc0dbf8e0 "doadump", warnifnotfound=Variable "warnifnotfound" is not available. ) at ../../../ddb/db_script.c:302 #5 0xc04d4631 in db_run_cmd (addr=0x1, have_addr=0x0, count=0xc0fbe760, modif=0xf66527a8 "") at ../../../ddb/db_script.c:375 #6 0xc04d0331 in db_command (last_cmdp=0xc0dbf07c, cmd_table=0x0, dopager=0x1) at ../../../ddb/db_command.c:445 #7 0xc04d048a in db_command_loop () at ../../../ddb/db_command.c:498 #8 0xc04d232d in db_trap (type=0xc, code=0x0) at ../../../ddb/db_main.c:229 #9 0xc08ba9d6 in kdb_trap (type=0xc, code=0x0, tf=0xf6652994) at ../../../kern/subr_kdb.c:535 #10 0xc0bc432f in trap_fatal (frame=0xf6652994, eva=0x10) at ../../../i386/i386/trap.c:927 #11 0xc0bc4c2c in trap (frame=0xf6652994) at ../../../i386/i386/trap.c:328 #12 0xc0ba6b0b in calltrap () at ../../../i386/i386/exception.s:165 #13 0xc087ab43 in _mtx_assert (m=0x0, what=0x4, file=0xc0cc1d90 "../../../vm/vm_page.c", line=0x1d4) at ../../../kern/kern_mutex.c:707 #14 0xc0af86bd in vm_page_io_start (m=0xc40da9a8) at ../../../vm/vm_page.c:468 #15 0xc0b00b9d in vnode_pager_write (vp=0xcac81c84, uio=0xf6652c58, ioflags=0x1) at ../../../vm/vm_readwrite.c:530 #16 0xc092ba7c in vn_write_chunk (vp=0xcac81c84, uio=0xf6652c58, active_cred=0xc777f900, fcred=0xc777f900, ioflag=0x1) at ../../../kern/vfs_vnops.c:643 #17 0xc092bc5c in vn_write (fp=0xca7bb690, uio=0xf6652c58, active_cred=0xc777f900, flags=0x0, td=0xca0086c0) at ../../../kern/vfs_vnops.c:698 #18 0xc08d0895 in dofilewrite (td=0xca0086c0, fd=0x3, fp=0xca7bb690, auio=0xf6652c58, offset=0xffffffffffffffff, flags=0x0) at file.h:241 #19 0xc08d1fe8 in kern_writev (td=0xca0086c0, fd=0x3, auio=0xf6652c58) at ../../../kern/sys_generic.c:446 #20 0xc08d20ff in write (td=0xca0086c0, uap=0xf6652cf8) at ../../../kern/sys_generic.c:362 #21 0xc0bc4834 in syscall (frame=0xf6652d38) at ../../../i386/i386/trap.c:1076 #22 0xc0ba6b70 in Xint0x80_syscall () at ../../../i386/i386/exception.s:261 #23 0x00000033 in ?? () Previous frame inner to this frame (corrupt stack?) (kgdb) f 14 #14 0xc0af86bd in vm_page_io_start (m=0xc40da9a8) at ../../../vm/vm_page.c:468 468 VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); (kgdb) p *m $1 = {pageq = {tqe_next = 0xc2a21a20, tqe_prev = 0xc22e0e40}, listq = {tqe_next = 0xc2a2d600, tqe_prev = 0xc417f620}, left = 0xc417f618, right = 0xc2a2d600, object = 0x0, pindex = 0x7, phys_addr = 0x8ecce000, md = {pv_list = { tqh_first = 0x0, tqh_last = 0xc40da9d0}, pat_mode = 0x6}, queue = 0x0, segind = 0x2, flags = 0x2, order = 0x0, pool = 0x0, cow = 0x0, wire_count = 0x0, hold_count = 0x0, oflags = 0x0, act_count = 0x0, busy = 0x0, valid = 0x0, dirty = 0x0} (kgdb) up #15 0xc0b00b9d in vnode_pager_write (vp=0xcac81c84, uio=0xf6652c58, ioflags=0x1) at ../../../vm/vm_readwrite.c:530 warning: Source file is more recent than executable. 530 vm_page_io_start(ma[i]); (kgdb) p *vp $2 = {v_type = VREG, v_tag = 0xc0c8f0a2 "ufs", v_op = 0xc0da22e0, v_data = 0xcac88740, v_mount = 0xc7a2d000, v_nmntvnodes = {tqe_next = 0x0, tqe_prev = 0xcac9a708}, v_un = {vu_mount = 0x0, vu_socket = 0x0, vu_cdev = 0x0, vu_fifoinfo = 0x0, vu_yield = 0x0}, v_hashlist = {le_next = 0xc8f50de8, le_prev = 0xc753c8ac}, v_hash = 0x4bf3af, v_cache_src = {lh_first = 0x0}, v_cache_dst = {tqh_first = 0x0, tqh_last = 0xcac81cb4}, v_cache_dd = 0x0, v_cstart = 0x0, v_lasta = 0x0, v_lastw = 0x0, v_clen = 0x0, v_lock = {lock_object = {lo_name = 0xc0c8f0a2 "ufs", lo_flags = 0x57b0000, lo_data = 0x0, lo_witness = 0xc7131910}, lk_lock = 0x1, lk_timo = 0x33, lk_pri = 0x50, lk_stack = { depth = 0xc, pcs = {0xc0873692, 0xc0acbce1, 0xc0bdd7c5, 0xc092aaa8, 0xc0b00a76, 0xc092ba7c, 0xc092bc5c, 0xc08d0895, 0xc08d1fe8, 0xc08d20ff, 0xc0bc4834, 0xc0ba6b70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, v_interlock = {lock_object = { lo_name = 0xc0c9c96d "vnode interlock", lo_flags = 0x1030000, lo_data = 0x0, lo_witness = 0xc712b248}, mtx_lock = 0x4}, v_vnlock = 0xcac81cdc, v_holdcnt = 0x3, v_usecount = 0x1, v_iflag = 0x400, v_vflag = 0x0, v_writecount = 0x1, v_freelist = {tqe_next = 0x0, tqe_prev = 0x0}, v_bufobj = {bo_mtx = {lock_object = {lo_name = 0xc0ca48dd "bufobj interlock", lo_flags = 0x1030000, lo_data = 0x0, lo_witness = 0xc71301e8}, mtx_lock = 0x4}, bo_clean = {bv_hd = { tqh_first = 0xe729fe48, tqh_last = 0xe729fe80}, bv_root = 0xe729fe48, bv_cnt = 0x1}, bo_dirty = {bv_hd = {tqh_first = 0x0, tqh_last = 0xcac81d9c}, bv_root = 0x0, bv_cnt = 0x0}, bo_numoutput = 0x0, bo_flag = 0x0, bo_ops = 0xc0d90d40, bo_bsize = 0x4000, bo_object = 0xcab3eee0, bo_synclist = {le_next = 0x0, le_prev = 0x0}, bo_private = 0xcac81c84, __bo_vnode = 0xcac81c84}, v_pollinfo = 0x0, v_label = 0x0, v_lockf = 0x0, v_rl = {rl_waiters = { tqh_first = 0xc785ec30, tqh_last = 0xc785ec30}, rl_currdep = 0x0}} (kgdb) info loc obj = 0xcab3eee0 off = 0xd30 idx = 0x6 reserv = 0xc2a21a20 vattr = {va_type = 4133825272, va_mode = 0xa035, va_nlink = 0xc0bd, va_uid = 0xf6652b08, va_gid = 0xcac81c84, va_fsid = 0xf6652b28, va_fileid = 0xcac81c84, va_size = 0xc091d9dff6652b14, va_blocksize = 0xc0da22e0, va_atime = { tv_sec = 0xf6652b08, tv_nsec = 0xc0dbc8e0}, va_mtime = {tv_sec = 0xcac81c84, tv_nsec = 0xf6652b58}, va_ctime = {tv_sec = 0xf6652b20, tv_nsec = 0xc090ccea}, va_birthtime = {tv_sec = 0xcac81cdc, tv_nsec = 0xf6652b38}, va_gen = 0xc0bda035, va_flags = 0xf6652b48, va_rdev = 0xc0bdd7e1, va_bytes = 0xcac81c84f6652b58, va_filerev = 0xc091d9dff6652b54, va_vaflags = 0xc0da22e0, va_spare = 0xf6652b48} size = 0x447 osize1 = 0x10880 resid = 0x447 sresid = 0x441 error = 0x0 vn_locked = 0x80000 wp = 0x2 i = Variable "i" is not available. (kgdb) git diff master diff --git a/sys/conf/files b/sys/conf/files index 1e9d80d..626e2fb 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -2012,6 +2012,7 @@ kern/kern_poll.c optional device_polling kern/kern_priv.c standard kern/kern_proc.c standard kern/kern_prot.c standard +kern/kern_rangelock.c standard kern/kern_resource.c standard kern/kern_rmlock.c standard kern/kern_rwlock.c standard @@ -2699,6 +2700,7 @@ vm/vm_page.c standard vm/vm_pageout.c standard vm/vm_pager.c standard vm/vm_phys.c standard +vm/vm_readwrite.c standard vm/vm_reserv.c standard vm/vm_unix.c standard vm/vm_zeroidle.c standard diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c index 87e5ac9..01008bf 100644 --- a/sys/dev/md/md.c +++ b/sys/dev/md/md.c @@ -619,8 +619,12 @@ mdstart_swap(struct md_s *sc, struct bio *bp) for (i = bp->bio_offset / PAGE_SIZE; i <= lastp; i++) { len = ((i == lastp) ? lastend : PAGE_SIZE) - offs; - m = vm_page_grab(sc->object, i, - VM_ALLOC_NORMAL|VM_ALLOC_RETRY); + /* + * Write cleans pages of the buffer, give it a + * priority. + */ + m = vm_page_grab(sc->object, i, (bp->bio_cmd == BIO_WRITE ? + VM_ALLOC_SYSTEM : VM_ALLOC_NORMAL) | VM_ALLOC_RETRY); VM_OBJECT_UNLOCK(sc->object); sched_pin(); sf = sf_buf_alloc(m, SFB_CPUPRIVATE); diff --git a/sys/kern/kern_rangelock.c b/sys/kern/kern_rangelock.c new file mode 100644 index 0000000..6002ad3 --- /dev/null +++ b/sys/kern/kern_rangelock.c @@ -0,0 +1,166 @@ +/*- + * Copyright (c) 2009 Konstantin Belousov + * All rights reserved. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include + +uma_zone_t rl_entry_zone; + +static void +rangelock_sys_init(void) +{ + + rl_entry_zone = uma_zcreate("rl_entry", sizeof(struct rl_q_entry), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); +} +SYSINIT(vfs, SI_SUB_VFS, SI_ORDER_ANY, rangelock_sys_init, NULL); + +void +rangelock_init(struct rangelock *lock) +{ + + TAILQ_INIT(&lock->rl_waiters); + lock->rl_currdep = NULL; +} + +void +rangelock_destroy(struct rangelock *lock) +{ + + KASSERT(TAILQ_EMPTY(&lock->rl_waiters), ("Dangling waiters")); +} + +static int +rangelock_incompatible(const struct rl_q_entry *e1, + const struct rl_q_entry *e2) +{ + + if ((e1->rl_q_flags & RL_LOCK_TYPE_MASK) == RL_LOCK_READ && + (e2->rl_q_flags & RL_LOCK_TYPE_MASK) == RL_LOCK_READ) + return (0); +#define IN_RANGE(a, e) (a >= e->rl_q_start && a < e->rl_q_end) + if (IN_RANGE(e1->rl_q_start, e2) || IN_RANGE(e2->rl_q_start, e1) || + IN_RANGE(e1->rl_q_end, e2) || IN_RANGE(e2->rl_q_end, e1)) + return (1); +#undef IN_RANGE + return (0); +} + +static void +rangelock_calc_block(struct rangelock *lock) +{ + struct rl_q_entry *entry, *entry1, *whead; + + if (lock->rl_currdep == TAILQ_FIRST(&lock->rl_waiters) && + lock->rl_currdep != NULL) + lock->rl_currdep = TAILQ_NEXT(lock->rl_currdep, rl_q_link); + for (entry = lock->rl_currdep; entry; + entry = TAILQ_NEXT(entry, rl_q_link)) { + TAILQ_FOREACH(entry1, &lock->rl_waiters, rl_q_link) { + if (rangelock_incompatible(entry, entry1)) + goto out; + if (entry1 == entry) + break; + } + } +out: + lock->rl_currdep = entry; + TAILQ_FOREACH(whead, &lock->rl_waiters, rl_q_link) { + if (whead == lock->rl_currdep) + break; + if (!(whead->rl_q_flags & RL_LOCK_GRANTED)) { + whead->rl_q_flags |= RL_LOCK_GRANTED; + wakeup(whead); + } + } +} + +static void +rangelock_unlock_vp_locked(struct vnode *vp, struct rl_q_entry *entry) +{ + + ASSERT_VI_LOCKED(vp, "rangelock"); + KASSERT(entry != vp->v_rl.rl_currdep, ("stuck currdep")); + TAILQ_REMOVE(&vp->v_rl.rl_waiters, entry, rl_q_link); + rangelock_calc_block(&vp->v_rl); + VI_UNLOCK(vp); + uma_zfree(rl_entry_zone, entry); +} + +void +rangelock_unlock(struct vnode *vp, void *cookie) +{ + struct rl_q_entry *entry; + + entry = cookie; + VI_LOCK(vp); + rangelock_unlock_vp_locked(vp, entry); +} + +void * +rangelock_unlock_range(struct vnode *vp, void *cookie, off_t base, size_t len) +{ + struct rl_q_entry *entry; + + entry = cookie; + VI_LOCK(vp); + KASSERT(entry->rl_q_flags & RL_LOCK_GRANTED, ("XXX")); + KASSERT(entry->rl_q_start == base, ("XXX")); + KASSERT(entry->rl_q_end >= base + len, ("XXX")); + if (entry->rl_q_end == base + len) { + rangelock_unlock_vp_locked(vp, cookie); + return (NULL); + } + entry->rl_q_end = base + len; + rangelock_calc_block(&vp->v_rl); + VI_UNLOCK(vp); + return (cookie); +} + +static void * +rangelock_enqueue(struct vnode *vp, struct rl_q_entry *entry) +{ + + VI_LOCK(vp); + TAILQ_INSERT_TAIL(&vp->v_rl.rl_waiters, entry, rl_q_link); + if (vp->v_rl.rl_currdep == NULL) + vp->v_rl.rl_currdep = entry; + rangelock_calc_block(&vp->v_rl); + while (!(entry->rl_q_flags & RL_LOCK_GRANTED)) + msleep(entry, &vp->v_interlock, 0, "range", 0); + VI_UNLOCK(vp); + return (entry); +} + +void * +rangelock_rlock(struct vnode *vp, off_t base, size_t len) +{ + struct rl_q_entry *entry; + + entry = uma_zalloc(rl_entry_zone, M_WAITOK); + entry->rl_q_flags = RL_LOCK_READ; + entry->rl_q_start = base; + entry->rl_q_end = base + len; + return (rangelock_enqueue(vp, entry)); +} + +void * +rangelock_wlock(struct vnode *vp, off_t base, size_t len) +{ + struct rl_q_entry *entry; + + entry = uma_zalloc(rl_entry_zone, M_WAITOK); + entry->rl_q_flags = RL_LOCK_WRITE; + entry->rl_q_start = base; + entry->rl_q_end = base + len; + return (rangelock_enqueue(vp, entry)); +} diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c index 1ab263c..d249e44 100644 --- a/sys/kern/vfs_cluster.c +++ b/sys/kern/vfs_cluster.c @@ -71,8 +71,8 @@ static int write_behind = 1; SYSCTL_INT(_vfs, OID_AUTO, write_behind, CTLFLAG_RW, &write_behind, 0, "Cluster write-behind; 0: disable, 1: enable, 2: backed off"); -static int read_max = 8; -SYSCTL_INT(_vfs, OID_AUTO, read_max, CTLFLAG_RW, &read_max, 0, +int vfs_read_max = 8; +SYSCTL_INT(_vfs, OID_AUTO, read_max, CTLFLAG_RW, &vfs_read_max, 0, "Cluster read-ahead max block count"); /* Page expended to mark partially backed buffers */ @@ -109,7 +109,7 @@ cluster_read(vp, filesize, lblkno, size, cred, totread, seqcount, bpp) */ racluster = vp->v_mount->mnt_iosize_max / size; maxra = seqcount; - maxra = min(read_max, maxra); + maxra = min(vfs_read_max, maxra); maxra = min(nbuf/8, maxra); if (((u_quad_t)(lblkno + maxra + 1) * size) > filesize) maxra = (filesize / size) - lblkno; @@ -803,7 +803,9 @@ cluster_wbuild(vp, size, start_lbn, len) (tbp->b_bcount != tbp->b_bufsize) || (tbp->b_bcount != size) || (len == 1) || - ((bp = getpbuf(&cluster_pbuf_freecnt)) == NULL)) { + ((bp = (vp->v_vflag & VV_MD) ? + trypbuf(&cluster_pbuf_freecnt) : + getpbuf(&cluster_pbuf_freecnt)) == NULL)) { totalwritten += tbp->b_bufsize; bawrite(tbp); ++start_lbn; diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index b80d03d..3636360 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -77,6 +77,8 @@ static int dirent_exists(struct vnode *vp, const char *dirname, #define DIRENT_MINSIZE (sizeof(struct dirent) - (MAXNAMLEN+1) + 4) +static int vop_stdextend(struct vop_extend_args *ap); + /* * This vnode table stores what we want to do if the filesystem doesn't * implement a particular VOP. @@ -118,6 +120,7 @@ struct vop_vector default_vnodeops = { .vop_unlock = vop_stdunlock, .vop_vptocnp = vop_stdvptocnp, .vop_vptofh = vop_stdvptofh, + .vop_extend = vop_stdextend, }; /* @@ -825,6 +828,23 @@ out: return (error); } +static int +vop_stdextend(struct vop_extend_args *ap) +{ + struct vattr vattr, oattr; + int error; + + + error = VOP_GETATTR(ap->a_vp, &oattr, ap->a_cred); + if (error != 0) + return (error); + if (oattr.va_size >= ap->a_size) + return (0); + VATTR_NULL(&vattr); + vattr.va_size = ap->a_size; + return (VOP_SETATTR(ap->a_vp, &vattr, ap->a_cred)); +} + /* * vfs default ops * used to fill the vfs function table to get reasonable default return values. diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 9453f73..ea735f3 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -853,6 +853,7 @@ vdestroy(struct vnode *vp) /* XXX Elsewhere we can detect an already freed vnode via NULL v_op. */ vp->v_op = NULL; #endif + rangelock_destroy(&vp->v_rl); lockdestroy(vp->v_vnlock); mtx_destroy(&vp->v_interlock); mtx_destroy(BO_MTX(bo)); @@ -1007,6 +1008,7 @@ alloc: if ((mp->mnt_kern_flag & MNTK_NOKNOTE) != 0) vp->v_vflag |= VV_NOKNOTE; } + rangelock_init(&vp->v_rl); *vpp = vp; return (0); diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 03e8d93..3e473f3 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -37,12 +37,14 @@ #include __FBSDID("$FreeBSD$"); +#include #include #include #include #include #include #include +#include #include #include #include @@ -62,6 +64,13 @@ __FBSDID("$FreeBSD$"); #include +#include +#include + +static int vmio_enabled = 1; +SYSCTL_INT(_vfs, OID_AUTO, vmio_enabled, CTLFLAG_RW, &vmio_enabled, 0, + "Use vm pages copyin/out instead of vops for read/write"); + static fo_rdwr_t vn_read; static fo_rdwr_t vn_write; static fo_truncate_t vn_truncate; @@ -83,6 +92,9 @@ struct fileops vnops = { .fo_flags = DFLAG_PASSABLE | DFLAG_SEEKABLE }; +static int vn_write_chunk(struct vnode *, struct uio *, struct ucred *, + struct ucred *, int); + int vn_open(ndp, flagp, cmode, fp) struct nameidata *ndp; @@ -333,7 +345,7 @@ sequential_heuristic(struct uio *uio, struct file *fp) * closely related to the best I/O size for real disks than * to any block size used by software. */ - fp->f_seqcount += howmany(uio->uio_resid, 16384); + fp->f_seqcount += howmany(uio->uio_resid, FRA_BLOCK_SZ); if (fp->f_seqcount > IO_SEQMAX) fp->f_seqcount = IO_SEQMAX; return (fp->f_seqcount << IO_SEQSHIFT); @@ -351,76 +363,72 @@ sequential_heuristic(struct uio *uio, struct file *fp) * Package up an I/O request on a vnode into a uio and do it. */ int -vn_rdwr(rw, vp, base, len, offset, segflg, ioflg, active_cred, file_cred, - aresid, td) - enum uio_rw rw; - struct vnode *vp; - void *base; - int len; - off_t offset; - enum uio_seg segflg; - int ioflg; - struct ucred *active_cred; - struct ucred *file_cred; - int *aresid; - struct thread *td; +vn_rdwr(enum uio_rw rw, struct vnode *vp, void *base, int len, off_t offset, + enum uio_seg segflg, int ioflg, struct ucred *active_cred, + struct ucred *file_cred, int *aresid, struct thread *td) { struct uio auio; struct iovec aiov; struct mount *mp; struct ucred *cred; + void *rl_cookie; int error, lock_flags; VFS_ASSERT_GIANT(vp->v_mount); + auio.uio_iov = &aiov; + auio.uio_iovcnt = 1; + aiov.iov_base = base; + aiov.iov_len = len; + auio.uio_resid = len; + auio.uio_offset = offset; + auio.uio_segflg = segflg; + auio.uio_rw = rw; + auio.uio_td = td; + error = 0; + + if ((ioflg & IO_NODELOCKED) == 0) { + if (rw == UIO_READ) + rl_cookie = rangelock_rlock(vp, offset, len); + else + rl_cookie = rangelock_wlock(vp, offset, len); + } else + rl_cookie = NULL; + if ((ioflg & IO_NODELOCKED) == 0) { mp = NULL; if (rw == UIO_WRITE) { if (vp->v_type != VCHR && (error = vn_start_write(vp, &mp, V_WAIT | PCATCH)) != 0) - return (error); + goto out; if (MNT_SHARED_WRITES(mp) || - ((mp == NULL) && MNT_SHARED_WRITES(vp->v_mount))) { + ((mp == NULL) && MNT_SHARED_WRITES(vp->v_mount))) lock_flags = LK_SHARED; - } else { + else lock_flags = LK_EXCLUSIVE; - } vn_lock(vp, lock_flags | LK_RETRY); - } else - vn_lock(vp, LK_SHARED | LK_RETRY); - + } } ASSERT_VOP_LOCKED(vp, "IO_NODELOCKED with no vp lock held"); - auio.uio_iov = &aiov; - auio.uio_iovcnt = 1; - aiov.iov_base = base; - aiov.iov_len = len; - auio.uio_resid = len; - auio.uio_offset = offset; - auio.uio_segflg = segflg; - auio.uio_rw = rw; - auio.uio_td = td; - error = 0; #ifdef MAC if ((ioflg & IO_NOMACCHECK) == 0) { - if (rw == UIO_READ) - error = mac_vnode_check_read(active_cred, file_cred, - vp); - else + if (rw == UIO_WRITE) error = mac_vnode_check_write(active_cred, file_cred, vp); } #endif if (error == 0) { - if (file_cred) + if (file_cred != NULL) cred = file_cred; else cred = active_cred; if (rw == UIO_READ) - error = VOP_READ(vp, &auio, ioflg, cred); + error = vn_read_chunk(vp, &auio, active_cred, cred, + ioflg); else - error = VOP_WRITE(vp, &auio, ioflg, cred); + error = vn_write_chunk(vp, &auio, active_cred, cred, + ioflg); } if (aresid) *aresid = auio.uio_resid; @@ -428,10 +436,15 @@ vn_rdwr(rw, vp, base, len, offset, segflg, ioflg, active_cred, file_cred, if (auio.uio_resid && error == 0) error = EIO; if ((ioflg & IO_NODELOCKED) == 0) { - if (rw == UIO_WRITE && vp->v_type != VCHR) - vn_finished_write(mp); - VOP_UNLOCK(vp, 0); + if (rw == UIO_WRITE) { + if (vp->v_type != VCHR) + vn_finished_write(mp); + VOP_UNLOCK(vp, 0); + } } + out: + if (rl_cookie != NULL) + rangelock_unlock(vp, rl_cookie); return (error); } @@ -493,68 +506,148 @@ vn_rdwr_inchunks(rw, vp, base, len, offset, segflg, ioflg, active_cred, return (error); } +static struct mtx * +vn_lock_foffset(struct file *fp) +{ + struct mtx *mtxp; + + mtxp = mtx_pool_find(mtxpool_sleep, fp); + mtx_lock(mtxp); + while (fp->f_vnread_flags & FOFFSET_LOCKED) { + fp->f_vnread_flags |= FOFFSET_LOCK_WAITING; + msleep(&fp->f_vnread_flags, mtxp, PUSER -1, + "vnread offlock", 0); + } + fp->f_vnread_flags |= FOFFSET_LOCKED; + mtx_unlock(mtxp); + return (mtxp); +} + +static void +vn_unlock_foffset(struct file *fp, struct mtx *mtxp) +{ + + mtx_lock(mtxp); + if (fp->f_vnread_flags & FOFFSET_LOCK_WAITING) + wakeup(&fp->f_vnread_flags); + fp->f_vnread_flags = 0; + mtx_unlock(mtxp); +} + +int +vn_read_chunk(struct vnode *vp, struct uio *uio, struct ucred *active_cred, + struct ucred *fcred, int ioflag) +{ + int error, vfslocked; + + error = 0; + vfslocked = 0; /* gcc */ + + if ((ioflag & IO_NODELOCKED) == 0) { + vfslocked = VFS_LOCK_GIANT(vp->v_mount); + vn_lock(vp, LK_SHARED | LK_RETRY); + } + +#ifdef MAC + if ((ioflag & IO_NOMACCHECK) == 0) + error = mac_vnode_check_read(active_cred, fcred, vp); +#endif + if (error == 0) { + if (!vmio_enabled || + (error = vnode_pager_read(vp, uio, ioflag)) == EOPNOTSUPP) + error = VOP_READ(vp, uio, ioflag, fcred); + } + if ((ioflag & IO_NODELOCKED) == 0) { + VOP_UNLOCK(vp, 0); + VFS_UNLOCK_GIANT(vfslocked); + } + return (error); +} + /* * File table vnode read routine. */ static int -vn_read(fp, uio, active_cred, flags, td) - struct file *fp; - struct uio *uio; - struct ucred *active_cred; - struct thread *td; - int flags; +vn_read(struct file *fp, struct uio *uio, struct ucred *active_cred, int flags, + struct thread *td) { struct vnode *vp; - int error, ioflag; struct mtx *mtxp; - int vfslocked; + void *rl_cookie; + int ioflag; + int error; KASSERT(uio->uio_td == td, ("uio_td %p is not td %p", uio->uio_td, td)); - mtxp = NULL; - vp = fp->f_vnode; ioflag = 0; if (fp->f_flag & FNONBLOCK) ioflag |= IO_NDELAY; if (fp->f_flag & O_DIRECT) ioflag |= IO_DIRECT; - vfslocked = VFS_LOCK_GIANT(vp->v_mount); + vp = fp->f_vnode; + /* * According to McKusick the vn lock was protecting f_offset here. * It is now protected by the FOFFSET_LOCKED flag. */ if ((flags & FOF_OFFSET) == 0) { - mtxp = mtx_pool_find(mtxpool_sleep, fp); - mtx_lock(mtxp); - while(fp->f_vnread_flags & FOFFSET_LOCKED) { - fp->f_vnread_flags |= FOFFSET_LOCK_WAITING; - msleep(&fp->f_vnread_flags, mtxp, PUSER -1, - "vnread offlock", 0); - } - fp->f_vnread_flags |= FOFFSET_LOCKED; - mtx_unlock(mtxp); - vn_lock(vp, LK_SHARED | LK_RETRY); + mtxp = vn_lock_foffset(fp); uio->uio_offset = fp->f_offset; } else - vn_lock(vp, LK_SHARED | LK_RETRY); - + mtxp = NULL; /* gcc */ + if (vp->v_type == VREG) + rl_cookie = rangelock_rlock(vp, uio->uio_offset, + uio->uio_resid); + else + rl_cookie = NULL; ioflag |= sequential_heuristic(uio, fp); + error = vn_read_chunk(vp, uio, active_cred, fp->f_cred, ioflag); + fp->f_nextoff = uio->uio_offset; + if (rl_cookie != NULL) + rangelock_unlock(vp, rl_cookie); + if ((flags & FOF_OFFSET) == 0) { + fp->f_offset = uio->uio_offset; + vn_unlock_foffset(fp, mtxp); + } + return (error); +} +static int +vn_write_chunk(struct vnode *vp, struct uio *uio, struct ucred *active_cred, + struct ucred *fcred, int ioflag) +{ + struct mount *mp, *mp1; + int error, lock_flags, vfslocked; + + mp = NULL; + vfslocked = VFS_LOCK_GIANT(vp->v_mount); + if (vp->v_type == VREG) + bwillwrite(); + if (vp->v_type != VCHR && + (error = vn_start_write(vp, &mp, V_WAIT | PCATCH)) != 0) + goto unlock; + + if (MNT_SHARED_WRITES(mp) || + (mp == NULL && (mp1 = vp->v_mount) != NULL && + MNT_SHARED_WRITES(mp1))) + lock_flags = LK_SHARED; + else + lock_flags = LK_EXCLUSIVE; + vn_lock(vp, lock_flags | LK_RETRY); #ifdef MAC - error = mac_vnode_check_read(active_cred, fp->f_cred, vp); - if (error == 0) + error = mac_vnode_check_write(active_cred, fcred, vp); +#else + error = 0; #endif - error = VOP_READ(vp, uio, ioflag, fp->f_cred); - if ((flags & FOF_OFFSET) == 0) { - fp->f_offset = uio->uio_offset; - mtx_lock(mtxp); - if (fp->f_vnread_flags & FOFFSET_LOCK_WAITING) - wakeup(&fp->f_vnread_flags); - fp->f_vnread_flags = 0; - mtx_unlock(mtxp); + if (error == 0) { + if (!vmio_enabled || + (error = vnode_pager_write(vp, uio, ioflag)) == EOPNOTSUPP) + error = VOP_WRITE(vp, uio, ioflag, fcred); } - fp->f_nextoff = uio->uio_offset; VOP_UNLOCK(vp, 0); + if (vp->v_type != VCHR) + vn_finished_write(mp); +unlock: VFS_UNLOCK_GIANT(vfslocked); return (error); } @@ -563,24 +656,17 @@ vn_read(fp, uio, active_cred, flags, td) * File table vnode write routine. */ static int -vn_write(fp, uio, active_cred, flags, td) - struct file *fp; - struct uio *uio; - struct ucred *active_cred; - struct thread *td; - int flags; +vn_write(struct file *fp, struct uio *uio, struct ucred *active_cred, int flags, + struct thread *td) { struct vnode *vp; - struct mount *mp; - int error, ioflag, lock_flags; - int vfslocked; + struct mtx *mtxp; + void *rl_cookie; + int error, ioflag; KASSERT(uio->uio_td == td, ("uio_td %p is not td %p", uio->uio_td, td)); vp = fp->f_vnode; - vfslocked = VFS_LOCK_GIANT(vp->v_mount); - if (vp->v_type == VREG) - bwillwrite(); ioflag = IO_UNIT; if (vp->v_type == VREG && (fp->f_flag & O_APPEND)) ioflag |= IO_APPEND; @@ -591,36 +677,32 @@ vn_write(fp, uio, active_cred, flags, td) if ((fp->f_flag & O_FSYNC) || (vp->v_mount && (vp->v_mount->mnt_flag & MNT_SYNCHRONOUS))) ioflag |= IO_SYNC; - mp = NULL; - if (vp->v_type != VCHR && - (error = vn_start_write(vp, &mp, V_WAIT | PCATCH)) != 0) - goto unlock; - - if ((MNT_SHARED_WRITES(mp) || - ((mp == NULL) && MNT_SHARED_WRITES(vp->v_mount))) && - (flags & FOF_OFFSET) != 0) { - lock_flags = LK_SHARED; - } else { - lock_flags = LK_EXCLUSIVE; - } - - vn_lock(vp, lock_flags | LK_RETRY); - if ((flags & FOF_OFFSET) == 0) + if ((flags & FOF_OFFSET) == 0) { + mtxp = vn_lock_foffset(fp); uio->uio_offset = fp->f_offset; + } else + mtxp = NULL; /* gcc */ ioflag |= sequential_heuristic(uio, fp); -#ifdef MAC - error = mac_vnode_check_write(active_cred, fp->f_cred, vp); - if (error == 0) -#endif - error = VOP_WRITE(vp, uio, ioflag, fp->f_cred); - if ((flags & FOF_OFFSET) == 0) + if (vp->v_type == VREG) { + if ((ioflag & IO_APPEND) || !(flags & FOF_OFFSET)) + /* + * For appenders, punt and lock the whole + * range. It also protects f_offset. + */ + rl_cookie = rangelock_wlock(vp, 0, (size_t)-1); + else + rl_cookie = rangelock_wlock(vp, uio->uio_offset, + uio->uio_resid); + } else + rl_cookie = NULL; + error = vn_write_chunk(vp, uio, active_cred, fp->f_cred, ioflag); + if (rl_cookie != NULL) + rangelock_unlock(vp, rl_cookie); + if ((flags & FOF_OFFSET) == 0) { fp->f_offset = uio->uio_offset; + vn_unlock_foffset(fp, mtxp); + } fp->f_nextoff = uio->uio_offset; - VOP_UNLOCK(vp, 0); - if (vp->v_type != VCHR) - vn_finished_write(mp); -unlock: - VFS_UNLOCK_GIANT(vfslocked); return (error); } diff --git a/sys/kern/vnode_if.src b/sys/kern/vnode_if.src index c9f20e3..27e298c 100644 --- a/sys/kern/vnode_if.src +++ b/sys/kern/vnode_if.src @@ -611,3 +611,12 @@ vop_vptocnp { INOUT char *buf; INOUT int *buflen; }; + +%% extend vp L L L + +vop_extend { + IN struct vnode *vp; + IN struct ucred *cred; + IN u_quad_t size; + IN int flags; +}; diff --git a/sys/sys/buf.h b/sys/sys/buf.h index 8f3b1b2..e6fdf7e 100644 --- a/sys/sys/buf.h +++ b/sys/sys/buf.h @@ -257,6 +257,8 @@ extern const char *buf_wmesg; /* Default buffer lock message */ #include /* XXX for curthread */ #include +extern int vfs_read_max; + /* * Initialize a lock. */ diff --git a/sys/sys/file.h b/sys/sys/file.h index 5c58e82..d71ba2c 100644 --- a/sys/sys/file.h +++ b/sys/sys/file.h @@ -141,6 +141,8 @@ struct file { #define FOFFSET_LOCKED 0x1 #define FOFFSET_LOCK_WAITING 0x2 +#define FRA_BLOCK_SZ 16384 + #endif /* _KERNEL || _WANT_FILE */ /* diff --git a/sys/sys/rangelock.h b/sys/sys/rangelock.h new file mode 100644 index 0000000..5ec6433 --- /dev/null +++ b/sys/sys/rangelock.h @@ -0,0 +1,48 @@ +/*- + * Copyright (c) 2009 Konstantin Belousov + * All rights reserved. + * + * $FreeBSD$ + */ + +#ifndef _SYS_RANGELOCK_H +#define _SYS_RANGELOCK_H + +#include +#include +#include +#include +#include + +#ifdef _KERNEL + +struct vnode; + +struct rl_q_entry +{ + TAILQ_ENTRY(rl_q_entry) rl_q_link; + size_t rl_q_start, rl_q_end; + int rl_q_flags; +}; + +#define RL_LOCK_READ 0x0001 +#define RL_LOCK_WRITE 0x0002 +#define RL_LOCK_TYPE_MASK 0x0003 +#define RL_LOCK_GRANTED 0x0004 + +struct rangelock +{ + TAILQ_HEAD(, rl_q_entry) rl_waiters; + struct rl_q_entry *rl_currdep; +}; + +void rangelock_init(struct rangelock *lock); +void rangelock_destroy(struct rangelock *lock); +void rangelock_unlock(struct vnode *vp, void *cookie); +void *rangelock_unlock_range(struct vnode *vp, void *cookie, off_t base, + size_t len); +void *rangelock_rlock(struct vnode *vp, off_t base, size_t len); +void *rangelock_wlock(struct vnode *vp, off_t base, size_t len); +#endif + +#endif diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index b38c1d0..2e23522 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -168,7 +169,8 @@ struct vnode { */ struct vpollinfo *v_pollinfo; /* G Poll events, p for *v_pi */ struct label *v_label; /* MAC label for vnode */ - struct lockf *v_lockf; /* Byte-level lock list */ + struct lockf *v_lockf; /* Byte-level adv lock list */ + struct rangelock v_rl; /* Byte-range lock */ }; #endif /* defined(_KERNEL) || defined(_KVM_VNODE) */ @@ -655,6 +657,8 @@ int vn_rdwr_inchunks(enum uio_rw rw, struct vnode *vp, void *base, size_t len, off_t offset, enum uio_seg segflg, int ioflg, struct ucred *active_cred, struct ucred *file_cred, size_t *aresid, struct thread *td); +int vn_read_chunk(struct vnode *vp, struct uio *uio, + struct ucred *active_cred, struct ucred *f_cred, int ioflag); int vn_stat(struct vnode *vp, struct stat *sb, struct ucred *active_cred, struct ucred *file_cred, struct thread *td); int vn_start_write(struct vnode *vp, struct mount **mpp, int flags); diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c index 464a761..a116656 100644 --- a/sys/ufs/ffs/ffs_vnops.c +++ b/sys/ufs/ffs/ffs_vnops.c @@ -119,7 +119,7 @@ static vop_listextattr_t ffs_listextattr; static vop_openextattr_t ffs_openextattr; static vop_setextattr_t ffs_setextattr; static vop_vptofh_t ffs_vptofh; - +static vop_extend_t ffs_extend; /* Global vfs data structures for ufs. */ struct vop_vector ffs_vnodeops1 = { @@ -131,6 +131,7 @@ struct vop_vector ffs_vnodeops1 = { .vop_reallocblks = ffs_reallocblks, .vop_write = ffs_write, .vop_vptofh = ffs_vptofh, + .vop_extend = ffs_extend, }; struct vop_vector ffs_fifoops1 = { @@ -156,6 +157,7 @@ struct vop_vector ffs_vnodeops2 = { .vop_openextattr = ffs_openextattr, .vop_setextattr = ffs_setextattr, .vop_vptofh = ffs_vptofh, + .vop_extend = ffs_extend, }; struct vop_vector ffs_fifoops2 = { @@ -1783,3 +1785,43 @@ vop_vptofh { ufhp->ufid_gen = ip->i_gen; return (0); } + +static int +ffs_extend(struct vop_extend_args *ap) +{ + struct vnode *vp; + struct inode *ip; + struct buf *bp; + off_t osize; + u_quad_t size; + int error, flags; + + vp = ap->a_vp; + ip = VTOI(vp); + size = ap->a_size; + osize = ip->i_size; + if (osize >= size) + return (0); + + flags = ap->a_flags & IO_SYNC; + vnode_pager_setsize(vp, size); + error = UFS_BALLOC(vp, size - 1, 1, ap->a_cred, flags | BA_CLRBUF, + &bp); + if (error) { + vnode_pager_setsize(vp, osize); + return (error); + } + ip->i_size = size; + DIP_SET(ip, i_size, size); + if (bp->b_bufsize == ip->i_fs->fs_bsize) + bp->b_flags |= B_CLUSTEROK; + if (ap->a_flags & IO_SYNC) + bwrite(bp); + else + bawrite(bp); + ip->i_flag |= IN_CHANGE | IN_UPDATE; + if (ap->a_flags & IO_SYNC) + return (ffs_update(vp, 1)); + return (0); +} + diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c index 08b77ae..8f537b3 100644 --- a/sys/ufs/ufs/ufs_vnops.c +++ b/sys/ufs/ufs/ufs_vnops.c @@ -1900,7 +1900,8 @@ ufs_readdir(ap) uio->uio_iov->iov_len = count; # if (BYTE_ORDER == LITTLE_ENDIAN) if (ap->a_vp->v_mount->mnt_maxsymlinklen > 0) { - error = VOP_READ(ap->a_vp, uio, 0, ap->a_cred); + error = vn_read_chunk(ap->a_vp, uio, ap->a_cred, + ap->a_cred, IO_NODELOCKED); } else { struct dirent *dp, *edp; struct uio auio; @@ -1916,7 +1917,8 @@ ufs_readdir(ap) aiov.iov_len = count; dirbuf = malloc(count, M_TEMP, M_WAITOK); aiov.iov_base = dirbuf; - error = VOP_READ(ap->a_vp, &auio, 0, ap->a_cred); + error = vn_read_chunk(ap->a_vp, &auio, ap->a_cred, + ap->a_cred, IO_NODELOCKED); if (error == 0) { readcnt = count - auio.uio_resid; edp = (struct dirent *)&dirbuf[readcnt]; @@ -1938,7 +1940,8 @@ ufs_readdir(ap) free(dirbuf, M_TEMP); } # else - error = VOP_READ(ap->a_vp, uio, 0, ap->a_cred); + error = vn_read_chunk(ap->a_vp, uio, ap->a_cred, + ap->a_cred, IO_NODELOCKED); # endif if (!error && ap->a_ncookies != NULL) { struct dirent* dpStart; diff --git a/sys/vm/vm_extern.h b/sys/vm/vm_extern.h index ad6087e..e24c62b 100644 --- a/sys/vm/vm_extern.h +++ b/sys/vm/vm_extern.h @@ -84,5 +84,8 @@ void vm_thread_dispose(struct thread *td); int vm_thread_new(struct thread *td, int pages); void vm_thread_swapin(struct thread *td); void vm_thread_swapout(struct thread *td); +int vnode_pager_read(struct vnode *vp, struct uio *uio, int ioflags); +int vnode_pager_write(struct vnode *vp, struct uio *uio, int ioflags); + #endif /* _KERNEL */ #endif /* !_VM_EXTERN_H_ */ diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index 19edce1..ccf595a 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -349,7 +349,7 @@ more: } vm_page_test_dirty(p); if (p->dirty == 0 || - p->queue != PQ_INACTIVE || + (p->queue != PQ_INACTIVE && p->queue != PQ_ACTIVE) || p->wire_count != 0 || /* may be held by buf cache */ p->hold_count != 0) { /* may be undergoing I/O */ ib = 0; @@ -377,7 +377,7 @@ more: } vm_page_test_dirty(p); if (p->dirty == 0 || - p->queue != PQ_INACTIVE || + (p->queue != PQ_INACTIVE && p->queue != PQ_ACTIVE) || p->wire_count != 0 || /* may be held by buf cache */ p->hold_count != 0) { /* may be undergoing I/O */ break; @@ -484,7 +484,7 @@ vm_pageout_flush(vm_page_t *mc, int count, int flags) if (pageout_status[i] != VM_PAGER_PEND) { vm_object_pip_wakeup(object); vm_page_io_finish(mt); - if (vm_page_count_severe()) + if (mt->queue == PQ_INACTIVE && vm_page_count_severe()) vm_page_try_to_cache(mt); } } @@ -1394,7 +1394,7 @@ vm_pageout() * when paging. */ if (cnt.v_page_count > 1024) - cnt.v_free_min = 4 + (cnt.v_page_count - 1024) / 200; + cnt.v_free_min = 4 + (cnt.v_page_count - 1024) / 100; else cnt.v_free_min = 4; cnt.v_pageout_free_min = (2*MAXBSIZE)/PAGE_SIZE + diff --git a/sys/vm/vm_readwrite.c b/sys/vm/vm_readwrite.c new file mode 100644 index 0000000..77b95fa --- /dev/null +++ b/sys/vm/vm_readwrite.c @@ -0,0 +1,594 @@ +/*- + * Copyright (c) 2008 Jeffrey Roberson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +/* + * XXXKIB TODO + * + * 1. Backpressure for writes + * 2. VOP_REALLOCBLKS + * 3. Unset setuid/setgid bits after write. + * + */ + +static int vmio_run = 0; +SYSCTL_INT(_debug, OID_AUTO, vmio_run, CTLFLAG_RW, &vmio_run, 0, + "Calculate the max sequential run for vnode_pager_read_cluster"); +static int vmio_read_pack = 16; +SYSCTL_INT(_vfs, OID_AUTO, vmio_read_pack, CTLFLAG_RW, &vmio_read_pack, 0, + "Length of the page pack for read"); +static int vmio_write_pack = 16; +SYSCTL_INT(_vfs, OID_AUTO, vmio_write_pack, CTLFLAG_RW, &vmio_write_pack, 0, + "Length of the page pack for write"); + +static u_int +io_page_bits(int i, vm_offset_t off, ssize_t size) +{ + int start, chunk; + + if (i == 0) { + start = off; + chunk = min(PAGE_SIZE - off, size); + } else if (i * PAGE_SIZE < off + size) { + start = 0; + chunk = PAGE_SIZE; + } else if ((i - 1) * PAGE_SIZE < off + size) { + start = 0; + chunk = (size - off) % PAGE_SIZE; + } else + return (0); + return (vm_page_bits(start, chunk)); +} + +#define VN_GRAB_NO_VMWAIT 0x0001 + +/* + * Grab a page, waiting until we are woken up due to the page + * changing state. We keep on waiting, if the page continues + * to be in the object. If the page doesn't exist allocate it. + * + * This routine may block, either waiting for busy vnode page, or for + * a page allocation. Later may be disabled with VN_GRAB_NO_VMWAIT + * flag, when vnode lock is held. To ensure progress, reserve page is + * used for ma[0] when wait is disabled and system cannot provide a + * page. + * + * Returns updated page run length in *wp, and filled in ma page + * array. + */ +static void +vnode_grab_pages(struct vnode *vp, vm_page_t *ma, int *wp, vm_pindex_t pindex, + int flags, vm_page_t *reserv) +{ + vm_object_t object; + vm_page_t m; + vm_pindex_t pi; + int i; + + KASSERT((flags & VN_GRAB_NO_VMWAIT) || reserv == NULL, + ("vnode_grab_pages: NO_VMWAIT and no reserve")); + + object = vp->v_object; + redo: + VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); + m = NULL; + for (i = 0, pi = pindex; i < *wp; ) { + if (i > 0) { + m = TAILQ_NEXT(ma[i - 1], listq); + if (m && m->pindex != pi) + m = NULL; + } + if (m == NULL) + m = vm_page_lookup(object, pi); + if (m != NULL) { + if (vm_page_sleep_if_busy(m, TRUE, "pgrnbwt")) + goto redo; + } else { + m = vm_page_alloc(object, pi, VM_ALLOC_NORMAL | + VM_ALLOC_NOBUSY); + } + if (m != NULL) { + ma[i] = m; + i++; + pi++; + continue; + } + if (flags & VN_GRAB_NO_VMWAIT) { + if (i == 0) { + m = *reserv; + *reserv = NULL; + if (object->memattr != VM_MEMATTR_DEFAULT) + pmap_page_set_memattr(m, + object->memattr); + vm_page_insert(m, object, pindex); + ma[i] = m; + i++; + } + break; + } + VM_OBJECT_UNLOCK(object); + VM_WAIT; + VM_OBJECT_LOCK(object); + goto redo; + } + *wp = i; +} + +/* + * Read a cluster starting at 'ma'. Note that we need to always redo + * page grab because our caller dropped object lock while not holding + * vnode lock. + */ +static int +vnode_pager_read_cluster(struct vnode *vp, vm_page_t ma[], vm_pindex_t idx, + int *maxrun, int flags, vm_page_t *reserv) +{ + vm_object_t obj; + daddr_t blkno; + int bsize; + int error; + int run; + int i; + + obj = vp->v_object; + bsize = vp->v_mount->mnt_stat.f_iosize; + error = 0; + blkno = 0; + + if (vmio_run) { + VM_OBJECT_UNLOCK(obj); + error = VOP_BMAP(vp, IDX_TO_OFF(idx)/bsize, NULL, &blkno, &run, + NULL); + VM_OBJECT_LOCK(obj); + run = MIN(run, *maxrun); + if (error || run == 0 || blkno == -1) { +/* printf("vnode_pager_read_cluster short\n"); */ + *maxrun = 1; + vnode_grab_pages(vp, ma, maxrun, idx, + VN_GRAB_NO_VMWAIT, reserv); + error = vm_pager_get_pages(obj, ma, 1, 0); + if (error != VM_PAGER_OK) + return (EIO); + return (0); + } + run = (run + 1) * bsize / PAGE_SIZE; + run = MIN(run, vp->v_mount->mnt_iosize_max / PAGE_SIZE); + } else { + if (*maxrun == 0) + *maxrun = 1; + run = MIN(*maxrun, vp->v_mount->mnt_iosize_max / PAGE_SIZE); + } + if (IDX_TO_OFF(idx) + run * PAGE_SIZE > obj->un_pager.vnp.vnp_size) { + run = (obj->un_pager.vnp.vnp_size - IDX_TO_OFF(idx)) / + PAGE_SIZE; + } + if (run == 0) + run = 1; + vnode_grab_pages(vp, ma, &run, idx, VN_GRAB_NO_VMWAIT, reserv); + for (i = 0; i < run; i++) { + if (i > 0 && ma[i]->valid != 0) { + run = i; + break; + } + vm_page_busy(ma[i]); + } + +/* printf("vnode_pager_read_cluster %d %p %p\n", run, ma, ma[0]); */ + error = vm_pager_get_pages(obj, ma, run, 0); + if (error != VM_PAGER_OK) { + vm_page_lock_queues(); + for (i = 0; i < run; i++) + vm_page_free(ma[i]); + vm_page_unlock_queues(); + return (EIO); + } + vm_page_wakeup(ma[0]); + *maxrun = run; + return (0); +} + +int +vnode_pager_read(struct vnode *vp, struct uio *uio, int ioflags) +{ + vm_object_t obj; + vm_offset_t off; + vm_pindex_t idx; + vm_page_t reserv; + ssize_t size; + int error, seqcount, wp, i; + u_int bits; + boolean_t obj_locked; + struct thread *td; + + if (ioflags & (IO_EXT|IO_DIRECT)) + return (EOPNOTSUPP); + + ASSERT_VOP_LOCKED(vp, "vnode_pager_read"); + if (vp->v_iflag & VI_DOOMED) + return (EBADF); + + /* + * Ignore non-regular files. + */ + if (vp->v_type != VREG) + return (EOPNOTSUPP); + obj = vp->v_object; + if (obj == NULL) + return (EOPNOTSUPP); + + seqcount = (ioflags >> IO_SEQSHIFT) * FRA_BLOCK_SZ / PAGE_SIZE; + seqcount = min(vfs_read_max, seqcount); + seqcount = min(vp->v_mount->mnt_iosize_max / PAGE_SIZE, seqcount); + VOP_UNLOCK(vp, 0); + + wp = vmio_read_pack; + vm_page_t ma[wp + 1]; + + error = 0; + obj_locked = FALSE; + td = uio->uio_td; + /* XXXKIB This should be disallowed. */ + if (td == NULL) + td = curthread; + + io_loop: + while (uio->uio_resid > 0) { + if (!obj_locked) { + VM_OBJECT_LOCK(obj); + obj_locked = TRUE; + } + + size = obj->un_pager.vnp.vnp_size - uio->uio_offset; + if (size <= 0) + break; + idx = OFF_TO_IDX(uio->uio_offset); + off = uio->uio_offset - IDX_TO_OFF(idx); + size = MIN(MIN(PAGE_SIZE * wp - off, uio->uio_resid), size); + + wp = (size + off + PAGE_SIZE - 1) / PAGE_SIZE; + vnode_grab_pages(vp, ma, &wp, idx, 0, NULL); + find_valid: + for (i = 0; i < wp; i++) { + bits = io_page_bits(i, off, size); + + /* + * Only do read if first page of array is not + * valid for us. We have to drop object lock + * to obtain vnode lock, that allows the pages + * to change identity or validity bits, and we + * can guarantee allocation of only one + * (reserved) page. + */ + if ((ma[i]->valid & bits) != bits) { + if (i != 0) { + wp = i; + break; + } + reserv = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL | + VM_ALLOC_NOOBJ); + if (obj_locked) { + VM_OBJECT_UNLOCK(obj); + obj_locked = FALSE; + } + if (reserv == NULL) { + VM_WAIT; + goto io_loop; + } + error = vn_lock(vp, LK_SHARED); + if (error != 0) { + vm_page_free(reserv); + error = EBADF; + break; + } + VM_OBJECT_LOCK(obj); + obj_locked = TRUE; + + /* + * Read page, honouring read-ahead settings + * for filedescriptor. + */ + error = vnode_pager_read_cluster(vp, ma, idx, + &wp, VN_GRAB_NO_VMWAIT, &reserv); + VOP_UNLOCK(vp, 0); + if (reserv != NULL) + vm_page_free(reserv); + if (error != 0) + break; + goto find_valid; + } + } + if (error != 0) + break; + KASSERT(wp > 0, ("wp == 0")); +/* printf("vp %p wp %d size %d\n", vp, wp, size); */ + vm_object_pip_add(obj, 1); + for (i = 0; i < wp; i++) + vm_page_io_start(ma[i]); + VM_OBJECT_UNLOCK(obj); + + /* + * Recalculate i/o size, since vnode_grab_pages() + * might shortened the page run. + */ + size = MIN(MIN(PAGE_SIZE * wp - off, uio->uio_resid), size); + + /* + * Access user map pages, vnode lock is + * dropped. Possible page fault is safe at this point. + * Vnode rangelock is held, protecting from parallel + * writers. + */ +/* printf("size %d %d %ju\n", size, uio->uio_resid, (uintmax_t)off); */ + error = uiomove_fromphys(ma, off, size, uio); + VM_OBJECT_LOCK(obj); + for (i = 0; i < wp; i++) + vm_page_io_finish(ma[i]); + vm_object_pip_wakeup(obj); + VM_OBJECT_UNLOCK(obj); + obj_locked = FALSE; + } + if (obj_locked) + VM_OBJECT_UNLOCK(obj); + vn_lock(vp, LK_SHARED | LK_RETRY); + if (error == 0) + vfs_mark_atime(vp, td->td_ucred); + + return (error); +} + +int +vnode_pager_write(struct vnode *vp, struct uio *uio, int ioflags) +{ + vm_object_t obj; + vm_offset_t off; + vm_pindex_t idx, clean_start, clean_end; + vm_page_t reserv; + struct vattr vattr; + ssize_t size, osize, osize1, resid, sresid; + int error, vn_locked, wp, i, j; + u_int bits; + boolean_t obj_locked; + struct thread *td; + + if (ioflags & (IO_EXT|IO_INVAL|IO_DIRECT)) + return (EOPNOTSUPP); + ASSERT_VOP_LOCKED(vp, "vnode_pager_write"); + if (vp->v_iflag & VI_DOOMED) + return (EBADF); + if (vp->v_type != VREG) + return (EOPNOTSUPP); + obj = vp->v_object; + if (obj == NULL) + return (EOPNOTSUPP); + + error = 0; + vn_locked = VOP_ISLOCKED(vp); + obj_locked = FALSE; + if (ioflags & IO_APPEND) + uio->uio_offset = obj->un_pager.vnp.vnp_size; + VOP_UNLOCK(vp, 0); + + clean_start = OFF_TO_IDX(uio->uio_offset); + clean_end = OFF_TO_IDX(uio->uio_offset + uio->uio_resid); + wp = vmio_write_pack; + vm_page_t ma[wp + 1]; + + td = uio->uio_td; + if (td == NULL) + td = curthread; + + /* + * Enforce the RLIMIT_FSIZE there too. + * XXXKIB the check for the file type is kept on purpose. + */ + if (vp->v_type == VREG) { + PROC_LOCK(td->td_proc); + if (uio->uio_offset + uio->uio_resid > + lim_cur(td->td_proc, RLIMIT_FSIZE)) { + psignal(td->td_proc, SIGXFSZ); + PROC_UNLOCK(td->td_proc); + return (EFBIG); + } + PROC_UNLOCK(td->td_proc); + } + osize = osize1 = obj->un_pager.vnp.vnp_size; + resid = uio->uio_resid; + io_loop: + while (uio->uio_resid > 0) { + size = uio->uio_resid; + idx = OFF_TO_IDX(uio->uio_offset); + off = uio->uio_offset - IDX_TO_OFF(idx); + size = MIN(PAGE_SIZE * wp - off, uio->uio_resid); + osize1 = obj->un_pager.vnp.vnp_size; + + /* + * Extend the file if writing past end. + */ + if (osize1 < uio->uio_offset + size) { + vattr.va_size = uio->uio_offset + size; + if (obj_locked) { + VM_OBJECT_UNLOCK(obj); + obj_locked = FALSE; + } + error = vn_lock(vp, LK_EXCLUSIVE); + if (error != 0) { + error = EBADF; + break; + } + error = VOP_EXTEND(vp, td->td_ucred, uio->uio_offset + + size, ioflags); + VOP_UNLOCK(vp, 0); + if (error != 0) + break; + } + + if (!obj_locked) { + VM_OBJECT_LOCK(obj); + obj_locked = TRUE; + } + wp = (size + off + PAGE_SIZE - 1) / PAGE_SIZE; + vnode_grab_pages(vp, ma, &wp, idx, 0, NULL); + find_valid: + for (i = 0; i < wp; i++) { + bits = io_page_bits(i, off, size); + + /* + * Do read if page is going to be only partially + * written. + */ + if ((ma[i]->valid & ~bits) != (~bits & + VM_PAGE_BITS_ALL)) { + if (i != 0) { + wp = i; + break; + } + reserv = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL | + VM_ALLOC_NOOBJ); + if (obj_locked) { + VM_OBJECT_UNLOCK(obj); + obj_locked = FALSE; + } + if (reserv == NULL) { + VM_WAIT; + goto io_loop; + } + + /* + * Use shared locking for + * VOP_GETPAGES, instead of caller + * locking mode. + */ + error = vn_lock(vp, LK_SHARED); + if (error != 0) { + vm_page_free(reserv); + error = EBADF; + break; + } + VM_OBJECT_LOCK(obj); + obj_locked = TRUE; + + error = vnode_pager_read_cluster(vp, ma, idx, + &wp, VN_GRAB_NO_VMWAIT, &reserv); + VOP_UNLOCK(vp, 0); + if (reserv != NULL) + vm_page_free(reserv); + if (error != 0) + break; + goto find_valid; + } + } + if (error != 0) + break; + KASSERT(wp > 0, ("wp == 0")); + vm_object_pip_add(obj, 1); + for (i = 0; i < wp; i++) + vm_page_io_start(ma[i]); + VM_OBJECT_UNLOCK(obj); + + /* + * Recalculate i/o size, since vnode_grab_pages() + * might shortened the page run. Save previous resid + * to correctly mark written pages regions as dirty. + */ + sresid = uio->uio_resid; + size = MIN(MIN(PAGE_SIZE * wp - off, sresid), size); + + error = uiomove_fromphys(ma, off, size, uio); + VM_OBJECT_LOCK(obj); + if (error == 0) { + /* + * Note that the page and object are dirty. + */ + vm_page_lock_queues(); + for (i = 0; i < wp; i++) { + j = io_page_bits(i, off, sresid - + uio->uio_resid); + ma[i]->valid |= j; + ma[i]->dirty |= j; + } + vm_page_unlock_queues(); + vm_object_set_writeable_dirty(obj); + } + for (i = 0; i < wp; i++) + vm_page_io_finish(ma[i]); + vm_object_pip_wakeup(obj); + VM_OBJECT_UNLOCK(obj); + obj_locked = FALSE; + if (error != 0) + break; + } + if (obj_locked) + VM_OBJECT_UNLOCK(obj); + vn_lock(vp, vn_locked | LK_RETRY); + if (vp->v_iflag & VI_DOOMED) { + if (error == 0) + error = EBADF; + return (error); + } + if (error == 0 && (ioflags & IO_SYNC)) { + VM_OBJECT_LOCK(obj); + vm_object_page_clean(obj, clean_start, clean_end, ioflags); + error = VOP_FSYNC(vp, MNT_WAIT, td); + VM_OBJECT_UNLOCK(obj); + } + if (error != 0) { + /* + * Roll back on error if atomic write was requested. + */ + VATTR_NULL(&vattr); + vattr.va_size = (ioflags & IO_UNIT) ? osize : osize1; + VOP_SETATTR(vp, &vattr, td->td_ucred); + if (ioflags & IO_UNIT) { + uio->uio_offset -= resid - uio->uio_resid; + uio->uio_resid = resid; + } + } + + return (error); +} + diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index faa6f37..a2bef62 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -692,6 +692,7 @@ vnode_pager_generic_getpages(vp, m, bytecount, reqpage) object = vp->v_object; count = bytecount / PAGE_SIZE; +/* printf("vpgg: %p %jd %x %d\n", vp, m[0]->pindex, count, reqpage); */ KASSERT(vp->v_type != VCHR && vp->v_type != VBLK, ("vnode_pager_generic_getpages does not support devices")); @@ -1076,6 +1077,7 @@ vnode_pager_generic_putpages(vp, m, bytecount, flags, rtvals) object = vp->v_object; count = bytecount / PAGE_SIZE; +/* printf("vpgp: %p %jd %x %d\n", vp, m[0]->pindex, m[0]->dirty, count); */ for (i = 0; i < count; i++) rtvals[i] = VM_PAGER_AGAIN; diff --git a/tools/regression/file/uio/uio.c b/tools/regression/file/uio/uio.c new file mode 100644 index 0000000..d857605 --- /dev/null +++ b/tools/regression/file/uio/uio.c @@ -0,0 +1,116 @@ +/*- + * Copyright (c) 2009 Konstantin Belousov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int chunk_cnt = 1024; +int chunk_size = 1024; + +int +main(int argc, char *argv[]) +{ + struct iovec *wiov, *riov; + char **wdata, **rdata; + int fd, i; + ssize_t io_error; + + if (argc < 2) { + fprintf(stderr, "Usage: uio file [chunk count [chunk size]]\n"); + return (2); + } + fd = open(argv[1], O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); + if (fd == -1) { + fprintf(stderr, "Failed to create %s: %s\n", + argv[1], strerror(errno)); + return (1); + } + + if (argc > 2) + chunk_cnt = atoi(argv[2]); + if (argc > 3) + chunk_size = atoi(argv[3]); + + wiov = calloc(chunk_cnt, sizeof(*wiov)); + wdata = calloc(chunk_cnt, sizeof(*wdata)); + + riov = calloc(chunk_cnt, sizeof(*riov)); + rdata = calloc(chunk_cnt, sizeof(*rdata)); + + for (i = 0; i < chunk_cnt; i++) { + rdata[i] = malloc(chunk_size); + riov[i].iov_base = rdata[i]; + riov[i].iov_len = chunk_size; + + wdata[i] = malloc(chunk_size); + memset(wdata[i], i, chunk_size); + wiov[i].iov_base = wdata[i]; + wiov[i].iov_len = chunk_size; + } + + io_error = writev(fd, wiov, chunk_cnt); + if (io_error == -1) { + fprintf(stderr, "write failed: %s\n", strerror(errno)); + return (1); + } else if (io_error != chunk_cnt * chunk_size) { + fprintf(stderr, "truncated write: %d %d\n", + io_error, chunk_cnt * chunk_size); + return (1); + } + + if (lseek(fd, 0, SEEK_SET) == -1) { + fprintf(stderr, "lseek failed: %s\n", strerror(errno)); + return (1); + } + + io_error = readv(fd, riov, chunk_cnt); + if (io_error == -1) { + fprintf(stderr, "read failed: %s\n", strerror(errno)); + return (1); + } else if (io_error != chunk_cnt * chunk_size) { + fprintf(stderr, "truncated read: %d %d\n", + io_error, chunk_cnt * chunk_size); + return (1); + } + + for (i = 0; i < chunk_cnt; i++) { + if (memcmp(rdata[i], wdata[i], chunk_size) != 0) { + fprintf(stderr, "chunk %d differs\n", i); + return (1); + } + } + + return (0); +} diff --git a/tools/regression/ufs/ba_clrbuf/ba_clrbuf.c b/tools/regression/ufs/ba_clrbuf/ba_clrbuf.c new file mode 100644 index 0000000..1b0acbe --- /dev/null +++ b/tools/regression/ufs/ba_clrbuf/ba_clrbuf.c @@ -0,0 +1,129 @@ +/*- + * Copyright (c) 2009 Konstantin Belousov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static const int blks = 2; + +static void +flush_buffers(int fd) +{ + struct stat st; + char *addr; + int error; + + printf("Flushing buffers\n"); + error = fstat(fd, &st); + if (error == -1) + err(2, "stat"); + fsync(fd); + addr = mmap(NULL, st.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (addr == (char *)-1) + err(2, "mmap"); + error = msync(addr, st.st_size, MS_SYNC | MS_INVALIDATE); + if (error == -1) + err(2, "msync"); + munmap(addr, st.st_size); +} + +int +main(int argc, char *argv[]) +{ + struct statfs fst; + char *data, *vrfy; + size_t sz; + int fd, i, error, ret; + + if (argc < 2) + errx(2, "Usage: ba_clrbuf file"); + + fd = open(argv[1], O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); + if (fd == -1) + err(2, "Failed to create %s", argv[1]); + + if (fstatfs(fd, &fst) == -1) + err(2, "stat"); + + sz = fst.f_iosize * blks; + data = malloc(sz); + if (data == NULL) + err(2, "malloc"); + vrfy = malloc(sz); + if (vrfy == NULL) + err(2, "malloc"); + for (i = 0; i < (int)sz; i++) + data[i] = i; + error = write(fd, data, sz); + if (error == -1) + err(2, "write"); + else if (error != (int)sz) + errx(2, "Short write %d %d", error, sz); + + flush_buffers(fd); + + error = lseek(fd, 0, SEEK_SET); + if (error == -1) + err(2, "lseek 0"); + else if (error != 0) + errx(2, "lseek 0 returned %d", error); + error = write(fd, NULL, fst.f_iosize); + printf("faulty write, error %s\n", strerror(errno)); + + error = lseek(fd, 0, SEEK_SET); + if (error == -1) + err(2, "lseek 0/2"); + else if (error != 0) + errx(2, "lseek 0/2 returned %d", error); + error = read(fd, vrfy, sz); + if (error == -1) + err(2, "read"); + else if (error != (int)sz) + errx(2, "short read %d %d", error, sz); + + if (memcmp(data, vrfy, fst.f_iosize) != 0) { + printf("Zero block corrupted, byte at 0 is %x\n", + (unsigned char)vrfy[0]); + ret = 1; + } else { + printf("No corruption\n"); + ret = 0; + } + + return (ret); +}