GENERIC HEAD from 2009-12-14 22:55:20 UTC, r200565M, vmcore.7 KDB: debugger backends: ddb KDB: current backend: ddb 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 r200565M: Tue Dec 15 10:51:04 CET 2009 pho@crashbox.osted.lan:/usr/src/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: Intel(R) XEON(TM) CPU 1.80GHz (1799.80-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0xf24 Stepping = 4 Features=0x3febfbff real memory = 1073741824 (1024 MB) avail memory = 1031368704 (983 MB) : Trying to mount root from ufs:/dev/ad0s1a WARNING: / was not properly dismounted Entropy harvesting: interrupts ethernet point_to_point kickstart. /dev/ad0s1a: 4393 files, 237036 used, 269451 free (659 frags, 33599 blocks, 0.1% fragmentation) /dev/ad0s1f: 1930 files, 56056 used, 450431 free (503 frags, 56241 blocks, 0.1% fragmentation) SU+J Checking /dev/ad0s1e Reading 67108864 byte journal from inode 94208. fsck_ufs: Invalid journal record size 655360, avail 16384 /dev/ad0s1d: 435059 files, 2232634 used, 2844445 free (50237 frags, 349276 blocks, 1.0% fragmentation) /dev/ad0s1g: 394738 files, 3732246 used, 22159099 free (23411 frags, 2766961 blocks, 0.1% fragmentation) THE FOLLOWING FILE SYSTEM HAD AN UNEXPECTED INCONSISTENCY: ufs: /dev/ad0s1e (/tmp) Unknown error; help! ERROR: ABORTING BOOT (sending SIGTERM to parent)! Dec 15 11:52:05 init: /bin/sh on /etc/rc terminated abnormally, going to single user mode Enter full pathname of shell or RETURN for /bin/sh: # fsck -y ** /dev/ad0s1a ** Last Mounted on / ** Root file system ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 4393 files, 237036 used, 269451 free (659 frags, 33599 blocks, 0.1% fragmentation) ***** FILE SYSTEM IS CLEAN ***** ** /dev/ad0s1f ** Last Mounted on /home ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 1930 files, 56056 used, 450431 free (503 frags, 56241 blocks, 0.1% fragmentation) ***** FILE SYSTEM IS CLEAN ***** ** /dev/ad0s1e ** Last Mounted on /tmp ** Phase 1 - Check Blocks and Sizes INCORRECT BLOCK COUNT I=117824 (48 should be 4) CORRECT? yes INCORRECT BLOCK COUNT I=141312 (48 should be 4) CORRECT? yes : UNREF FILE I=339923 OWNER=pho MODE=100660 SIZE=0 MTIME=Dec 15 11:45 2009 RECONNECT? yes SORRY. NO SPACE IN lost+found DIRECTORY UNEXPECTED SOFT UPDATE INCONSISTENCY CLEAR? yes ** Phase 5 - Check Cyl groups FREE BLK COUNT(S) WRONG IN SUPERBLK SALVAGE? yes SUMMARY INFORMATION BAD SALVAGE? yes BLK(S) MISSING IN BIT MAPS SALVAGE? yes 12897 files, 790239 used, 1238792 free (912 frags, 154735 blocks, 0.0% fragmentation) ***** FILE SYSTEM MARKED CLEAN ***** ***** FILE SYSTEM WAS MODIFIED ***** ** /dev/ad0s1d ** Last Mounted on /usr ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 435059 files, 2232634 used, 2844445 free (50237 frags, 349276 blocks, 1.0% fragmentation) ***** FILE SYSTEM IS CLEAN ***** ** /dev/ad0s1g ** Last Mounted on /var ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 394738 files, 3732246 used, 22159099 free (23411 frags, 2766961 blocks, 0.1% fragmentation) ***** FILE SYSTEM IS CLEAN ***** # exit Entropy harvesting: interrupts ethernet point_to_point kickstart. Fast boot: skipping disk checks. lock order reversal: 1st 0xd8502960 bufwait (bufwait) @ kern/vfs_bio.c:2559 2nd 0xc483a800 dirhash (dirhash) @ ufs/ufs/ufs_dirhash.c:283 KDB: stack backtrace: db_trace_self_wrapper(c0c9ff9d,e6cd587c,c08d0105,c08c0beb,c0ca2f41,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08c0beb,c0ca2f41,c4538030,c453b290,e6cd58d8,...) at kdb_backtrace+0x29 _witness_debugger(c0ca2f41,c483a800,c0cc6203,c453b290,c0cc5ea9,...) at _witness_debugger+0x25 witness_checkorder(c483a800,9,c0cc5ea0,11b,0,...) at witness_checkorder+0x839 _sx_xlock(c483a800,0,c0cc5ea0,11b,c4b5132c,...) at _sx_xlock+0x85 ufsdirhash_acquire(d8502900,e6cd5a1c,164,d8b6d4ac,e6cd59a8,...) at ufsdirhash_acquire+0x48 ufsdirhash_add(c4b5132c,e6cd5a1c,4ac,e6cd5994,e6cd5998,...) at ufsdirhash_add+0x13 ufs_direnter(c4c20414,c4c20000,e6cd5a1c,e6cd5c00,d8505340,...) at ufs_direnter+0x799 ufs_mkdir(e6cd5c28,c0cdb776,0,0,e6cd5b6c,...) at ufs_mkdir+0x981 VOP_MKDIR_APV(c0daad00,e6cd5c28,e6cd5c00,e6cd5b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c4b1ab40,ffffff9c,bfbfef5a,0,1ff,...) at kern_mkdirat+0x21b kern_mkdir(c4b1ab40,bfbfef5a,0,1ff,e6cd5d2c,...) at kern_mkdir+0x2e mkdir(c4b1ab40,e6cd5cf8,8,c0ca3807,c0d88fe0,...) at mkdir+0x29 syscall(e6cd5d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2816a5c3, esp = 0xbfbfed6c, ebp = 0xbfbfee38 --- fxp0: link state changed to UP Starting Network: lo0 fxp0. add net default: gateway 192.168.1.1 savecore: reboot after panic: handle_workitem_freefile: inodedep 0xc712fe80 survived Dec 15 12:18:30 crashbox savecore: reboot after panic: handle_workitem_freefile: inodedep 0xc712fe80 survived savecore: writing core to vmcore.6 Writing crash summary to /var/crash/core.txt.6. Additional ABI support: linux. Starting mountd. Configuring syscons: keymap blanktime. Local package initialization:lock order reversal: 1st 0xc4b7f724 ufs (ufs) @ kern/vfs_mount.c:1204 2nd 0xc4b7e310 devfs (devfs) @ ufs/ffs/ffs_softdep.c:1264 KDB: stack backtrace: db_trace_self_wrapper(c0c9ff9d,e6e049dc,c08d0105,c08c0beb,c0ca2f41,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08c0beb,c0ca2f41,c453b228,c453b0f0,e6e04a38,...) at kdb_backtrace+0x29 _witness_debugger(c0ca2f41,c4b7e310,c0c91630,c453b0f0,c0cc316d,...) at _witness_debugger+0x25 witness_checkorder(c4b7e310,9,c0cc3164,4f0,c4b7e37c,...) at witness_checkorder+0x839 __lockmgr_args(c4b7e310,80400,c4b7e37c,0,0,...) at __lockmgr_args+0x824 vop_stdlock(e6e04b54,c0c9b2ec,df,80400,c4b7e2b8,...) at vop_stdlock+0x65 VOP_LOCK1_APV(c0d845a0,e6e04b54,0,c0dc55a0,c4b7e2b8,...) at VOP_LOCK1_APV+0xb5 _vn_lock(c4b7e2b8,80400,c0cc3164,4f0,c4c1b2d4,...) at _vn_lock+0x78 softdep_flushworklist(c4c1b2d4,e6e04c00,c4b18240,52b,c4c20828,...) at softdep_flushworklist+0x47 ffs_sync(c4c1b2d4,1,c0ca9929,4f9,80,...) at ffs_sync+0x2fd dounmount(c4c1b2d4,8000000,c4b18240,47e,bf07ea21,...) at dounmount+0x44e unmount(c4b18240,e6e04cf8,8,c4b18240,c0d88368,...) at unmount+0x2ff syscall(e6e04d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (22, FreeBSD ELF32, unmount), eip = 0x280da13f, esp = 0xbfbfe68c, ebp = 0xbfbfe758 --- ** /dev/ad0s1e ** 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 12897 files, 790239 used, 1238792 free (904 frags, 154736 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. Expensive timeout(9) function: 0xc076c5f0(0xc0fc71e0) 0.013931612 s Tue Dec 15 12:19:11 CET 2009 Dec 15 12:19:21 crashbox su: pho to root on /dev/pts/0 interrupt total irq1: atkbd0 2 irq4: uart0 661293 irq14: ata0 1002263 irq16: uhci0 1 irq17: fxp0 5071 cpu0: timer 12626050 cpu3: timer 12619173 cpu1: timer 12619206 cpu2: timer 12619211 Total 52152357 KDB: stack backtrace: db_trace_self_wrapper(c0c9ff9d,c42e4c0c,c084a089,c0c967fa,31bc825,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c0c967fa,31bc825,0,31bc825,0,...) at kdb_backtrace+0x29 hardclock(0,c0ba1885,0,1f4,c4820200,...) at hardclock+0x109 lapic_handle_timer(c42e4c34) at lapic_handle_timer+0x9f Xtimerint() at Xtimerint+0x1f --- interrupt, eip = 0xc0ba1885, esp = 0xc42e4c74, ebp = 0xc42e4c74 --- acpi_cpu_c1(1,0,0,c08af9c1,c0e0cde0,...) at acpi_cpu_c1+0x5 acpi_cpu_idle(c42e4cb4,c0bb8fdb,1,c42e4cf8,c08afcbe,...) at acpi_cpu_idle+0x11c cpu_idle_acpi(1,c42e4cf8,c08afcbe,1,c42e4cd4,...) at cpu_idle_acpi+0x1b cpu_idle(1,c42e4cd4,c0c9e6ed,3b0,c457c480,...) at cpu_idle+0x1b sched_idletd(0,c42e4d38,c0c9805b,343,c457aaa0,...) at sched_idletd+0x23e fork_exit(c08afa80,0,c42e4d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42e4d70, ebp = 0 --- KDB: enter: watchdog timeout [thread pid 11 tid 100006 ] Stopped at kdb_enter+0x3a: movl $0,kdb_why db> run pho db:0:pho> bt Tracing pid 11 tid 100006 td 0xc457c480 kdb_enter(c0c45a81,c0c62291,0,31bc825,0,...) at kdb_enter+0x3a hardclock(0,c0ba1885,0,1f4,c4820200,...) at hardclock+0x11d lapic_handle_timer(c42e4c34) at lapic_handle_timer+0x9f Xtimerint() at Xtimerint+0x1f --- interrupt, eip = 0xc0ba1885, esp = 0xc42e4c74, ebp = 0xc42e4c74 --- acpi_cpu_c1(1,0,0,c08af9c1,c0e0cde0,...) at acpi_cpu_c1+0x5 acpi_cpu_idle(c42e4cb4,c0bb8fdb,1,c42e4cf8,c08afcbe,...) at acpi_cpu_idle+0x11c cpu_idle_acpi(1,c42e4cf8,c08afcbe,1,c42e4cd4,...) at cpu_idle_acpi+0x1b cpu_idle(1,c42e4cd4,c0c9e6ed,3b0,c457c480,...) at cpu_idle+0x1b sched_idletd(0,c42e4d38,c0c9805b,343,c457aaa0,...) at sched_idletd+0x23e fork_exit(c08afa80,0,c42e4d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42e4d70, ebp = 0 --- db:0:bt> show allpcpu Current CPU: 0 cpuid = 0 dynamic pcpu = 0x65f380 curthread = 0xc457c480: pid 11 "idle: cpu0" curpcb = 0xc42e4d90 fpcurthread = none idlethread = 0xc457c480: pid 11 "idle: cpu0" APIC ID = 0 currentldt = 0x50 spin locks held: cpuid = 1 dynamic pcpu = 0x34f5380 curthread = 0xc457c6c0: pid 11 "idle: cpu1" curpcb = 0xc42e1d90 fpcurthread = none idlethread = 0xc457c6c0: pid 11 "idle: cpu1" APIC ID = 1 currentldt = 0x50 spin locks held: cpuid = 2 dynamic pcpu = 0x34f8380 curthread = 0xc457c900: pid 11 "idle: cpu2" curpcb = 0xc42ded90 fpcurthread = none idlethread = 0xc457c900: pid 11 "idle: cpu2" APIC ID = 6 currentldt = 0x50 spin locks held: cpuid = 3 dynamic pcpu = 0x34fb380 curthread = 0xc457cb40: pid 11 "idle: cpu3" curpcb = 0xc42dbd90 fpcurthread = none idlethread = 0xc457cb40: pid 11 "idle: cpu3" APIC ID = 7 currentldt = 0x50 spin locks held: db:0:allpcpu> show alllocks Process 1906 (cron) thread 0xc4c01b40 (100075) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1904 (cron) thread 0xc5e2c6c0 (100262) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1902 (cron) thread 0xc5e2cd80 (100243) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1900 (cron) thread 0xc4c656c0 (100090) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1898 (cron) thread 0xc4c17000 (100099) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1896 (sendmail) thread 0xc4b1a000 (100106) shared lockmgr ufs (ufs) r = 0 (0xc4e19310) locked @ kern/vfs_syscalls.c:4096 Process 1895 (sendmail) thread 0xc4c17b40 (100081) shared lockmgr ufs (ufs) r = 0 (0xc4b5d724) locked @ kern/vfs_syscalls.c:4096 Process 1894 (cron) thread 0xc4c646c0 (100097) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1892 (cron) thread 0xc774f900 (100256) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1890 (cron) thread 0xc4c17d80 (100080) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1888 (cron) thread 0xc4af86c0 (100059) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1886 (cron) thread 0xc77506c0 (100250) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1885 (cron) thread 0xc4c04240 (100072) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1884 (cron) thread 0xc4b1ab40 (100053) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1880 (cron) thread 0xc4c1a240 (100078) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1879 (cron) thread 0xc4b1a6c0 (100055) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1876 (cron) thread 0xc4dfdb40 (100125) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1874 (sendmail) thread 0xc774f000 (100260) shared lockmgr ufs (ufs) r = 0 (0xc4e19310) locked @ kern/vfs_syscalls.c:4096 Process 1873 (sendmail) thread 0xc774f6c0 (100257) shared lockmgr ufs (ufs) r = 0 (0xc4b5d724) locked @ kern/vfs_syscalls.c:4096 Process 1872 (cron) thread 0xc4c05900 (100246) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1870 (cron) thread 0xc4c05240 (100249) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1868 (cron) thread 0xc5e2c900 (100245) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1866 (cron) thread 0xc4dfd000 (100130) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1864 (cron) thread 0xc4b18240 (100113) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1862 (cron) thread 0xc4c65240 (100092) shared lockmgr ufs (ufs) r = 0 (0xc4b5f1b4) locked @ kern/vfs_vnops.c:536 Process 1860 (sh) thread 0xc4c1a480 (100077) exclusive lockmgr bufwait (bufwait) r = 0 (0xd850b860) locked @ kern/vfs_bio.c:2559 shared lockmgr ufs (ufs) r = 0 (0xc4c5bc94) locked @ kern/vfs_vnops.c:536 Process 1859 (sleep) thread 0xc4dfcd80 (100131) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8500dc0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 0 (0xc5f9c058) locked @ kern/vfs_subr.c:2188 Process 1300 (sshd) thread 0xc4c64b40 (100095) exclusive sx so_rcv_sx (so_rcv_sx) r = 0 (0xc502c560) locked @ kern/uipc_sockbuf.c:148 Process 1299 (sshd) thread 0xc51a9d80 (100232) exclusive sx so_rcv_sx (so_rcv_sx) r = 0 (0xc5cb808c) locked @ kern/uipc_sockbuf.c:148 Process 1298 (sshd) thread 0xc51cf000 (100231) exclusive sx so_rcv_sx (so_rcv_sx) r = 0 (0xc4de0bd0) locked @ kern/uipc_sockbuf.c:148 Process 1297 (mkdir) thread 0xc51cf240 (100230) exclusive lockmgr ufs (ufs) r = 0 (0xc94e85c8) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94c91b4) locked @ kern/vfs_lookup.c:497 Process 1296 (mkdir) thread 0xc51cf480 (100229) exclusive lockmgr ufs (ufs) r = 0 (0xc94785c8) locked @ kern/vfs_subr.c:2188 Process 1295 (mkdir) thread 0xc51cf6c0 (100228) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85198a0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8c4f1b4) locked @ kern/vfs_lookup.c:497 Process 1294 (mkdir) thread 0xc51cf900 (100227) exclusive lockmgr ufs (ufs) r = 0 (0xc94795c8) locked @ kern/vfs_subr.c:2188 Process 1293 (mkdir) thread 0xc51cfb40 (100226) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86aa000) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8ccfb38) locked @ kern/vfs_lookup.c:497 Process 1292 (mkdir) thread 0xc51cfd80 (100225) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8622360) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8bc9b38) locked @ kern/vfs_lookup.c:497 Process 1291 (mkdir) thread 0xc51d1000 (100224) exclusive lockmgr ufs (ufs) r = 0 (0xc94e89dc) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc946e9dc) locked @ kern/vfs_lookup.c:497 Process 1290 (mkdir) thread 0xc51d1240 (100223) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8624720) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc83af9dc) locked @ kern/vfs_lookup.c:497 Process 1289 (mkdir) thread 0xc51d1480 (100222) exclusive lockmgr bufwait (bufwait) r = 0 (0xd874bfe0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc882e880) locked @ kern/vfs_lookup.c:497 Process 1288 (mkdir) thread 0xc51d16c0 (100221) exclusive lockmgr bufwait (bufwait) r = 0 (0xd860ce20) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc864f058) locked @ kern/vfs_lookup.c:497 Process 1287 (mkdir) thread 0xc51d1900 (100220) exclusive lockmgr ufs (ufs) r = 0 (0xc9479880) locked @ kern/vfs_subr.c:2188 Process 1286 (mkdir) thread 0xc51d1b40 (100219) exclusive lockmgr ufs (ufs) r = 0 (0xc946d880) locked @ kern/vfs_subr.c:2188 Process 1285 (mkdir) thread 0xc51d1d80 (100218) exclusive lockmgr ufs (ufs) r = 0 (0xc946f310) locked @ kern/vfs_subr.c:2188 Process 1284 (mkdir) thread 0xc51886c0 (100217) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85c1040) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc7a69724) locked @ kern/vfs_lookup.c:497 Process 1283 (mkdir) thread 0xc5188900 (100216) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8706380) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8b46c94) locked @ kern/vfs_lookup.c:497 Process 1282 (mkdir) thread 0xc5188b40 (100215) exclusive lockmgr ufs (ufs) r = 0 (0xc94bb724) locked @ kern/vfs_subr.c:2188 Process 1281 (mkdir) thread 0xc5188d80 (100214) exclusive lockmgr bufwait (bufwait) r = 0 (0xd861c6c0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd8627300) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd867afa0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc92f9c94) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc92f9df0) locked @ kern/vfs_lookup.c:497 Process 1280 (mkdir) thread 0xc51a7000 (100213) exclusive lockmgr ufs (ufs) r = 0 (0xc942c1b4) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc9478880) locked @ kern/vfs_lookup.c:497 Process 1279 (mkdir) thread 0xc51a7240 (100212) exclusive lockmgr bufwait (bufwait) r = 0 (0xd875d0e0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd875a500) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd8725ce0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc94ad058) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc94ad1b4) locked @ kern/vfs_lookup.c:497 Process 1278 (mkdir) thread 0xc51a7480 (100211) exclusive lockmgr ufs (ufs) r = 0 (0xc9450724) locked @ kern/vfs_subr.c:2188 Process 1277 (mkdir) thread 0xc51a76c0 (100210) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8569440) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc94bfc94) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94f1724) locked @ kern/vfs_lookup.c:497 Process 1276 (mkdir) thread 0xc51a7900 (100209) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85a8700) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc85211b4) locked @ kern/vfs_lookup.c:497 Process 1275 (mkdir) thread 0xc51a7b40 (100208) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86c97c0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8d1b1b4) locked @ kern/vfs_lookup.c:497 Process 1274 (mkdir) thread 0xc51a7d80 (100207) exclusive lockmgr bufwait (bufwait) r = 0 (0xd869d680) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc84c5c94) locked @ kern/vfs_lookup.c:497 Process 1273 (mkdir) thread 0xc51a9000 (100206) exclusive lockmgr bufwait (bufwait) r = 0 (0xd871fb60) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 0 (0xc944a1b4) locked @ kern/vfs_subr.c:2188 Process 1272 (mkdir) thread 0xc51a9240 (100205) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8546a20) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd85d0740) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd8683000) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc93979dc) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc9397b38) locked @ kern/vfs_lookup.c:497 Process 1271 (mkdir) thread 0xc51a9480 (100204) exclusive lockmgr ufs (ufs) r = 0 (0xc94941b4) locked @ kern/vfs_subr.c:2188 Process 1270 (mkdir) thread 0xc51a96c0 (100203) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85d3660) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8a879dc) locked @ kern/vfs_lookup.c:497 Process 1269 (mkdir) thread 0xc51a9900 (100202) exclusive lockmgr bufwait (bufwait) r = 0 (0xd867c4c0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd85af720) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd87ad160) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc93ed9dc) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc93c1c94) locked @ kern/vfs_lookup.c:497 Process 1268 (mkdir) thread 0xc5165240 (100201) exclusive lockmgr ufs (ufs) r = 0 (0xc9477880) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94b25c8) locked @ kern/vfs_lookup.c:497 Process 1267 (mkdir) thread 0xc5165480 (100200) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8736aa0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd874e200) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd8798fa0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc9370c94) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc93ac46c) locked @ kern/vfs_lookup.c:497 Process 1266 (mkdir) thread 0xc51656c0 (100199) exclusive lockmgr bufwait (bufwait) r = 0 (0xd858e3c0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc83b6df0) locked @ kern/vfs_lookup.c:497 Process 1265 (mkdir) thread 0xc5165900 (100198) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86a2480) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd8515ae0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd86c6560) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc93d5310) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc93d546c) locked @ kern/vfs_lookup.c:497 Process 1264 (mkdir) thread 0xc5165b40 (100197) exclusive lockmgr ufs (ufs) r = 0 (0xc94b2058) locked @ kern/vfs_subr.c:2188 Process 1263 (mkdir) thread 0xc5165d80 (100196) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85ad840) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8ce246c) locked @ kern/vfs_lookup.c:497 Process 1262 (mkdir) thread 0xc5187000 (100195) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86f6ae0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8831724) locked @ kern/vfs_lookup.c:497 Process 1261 (mkdir) thread 0xc5187240 (100194) exclusive lockmgr ufs (ufs) r = 0 (0xc946f46c) locked @ kern/vfs_subr.c:2188 Process 1260 (mkdir) thread 0xc5187480 (100193) exclusive lockmgr ufs (ufs) r = 0 (0xc942a46c) locked @ kern/vfs_subr.c:2188 Process 1259 (mkdir) thread 0xc51876c0 (100192) exclusive lockmgr ufs (ufs) r = 0 (0xc946dc94) locked @ kern/vfs_subr.c:2188 Process 1258 (mkdir) thread 0xc5187900 (100191) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86472e0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8b1e1b4) locked @ kern/vfs_lookup.c:497 Process 1257 (mkdir) thread 0xc5187b40 (100190) exclusive lockmgr bufwait (bufwait) r = 0 (0xd857d460) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc898cb38) locked @ kern/vfs_lookup.c:497 Process 1256 (mkdir) thread 0xc5187d80 (100189) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85174e0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 0 (0xc944f46c) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94bb9dc) locked @ kern/vfs_lookup.c:497 Process 1255 (mkdir) thread 0xc5188000 (100188) exclusive lockmgr ufs (ufs) r = 0 (0xc943a46c) locked @ kern/vfs_subr.c:2188 Process 1254 (mkdir) thread 0xc5188240 (100187) exclusive lockmgr ufs (ufs) r = 0 (0xc94701b4) locked @ kern/vfs_subr.c:2188 Process 1253 (mkdir) thread 0xc5188480 (100186) exclusive lockmgr ufs (ufs) r = 0 (0xc943a5c8) locked @ kern/vfs_subr.c:2188 Process 1252 (mkdir) thread 0xc513ed80 (100185) exclusive lockmgr ufs (ufs) r = 0 (0xc94bfdf0) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94cab38) locked @ kern/vfs_lookup.c:497 Process 1251 (mkdir) thread 0xc5160000 (100184) exclusive lockmgr bufwait (bufwait) r = 0 (0xd870d6e0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc946e1b4) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc9450880) locked @ kern/vfs_lookup.c:497 Process 1250 (mkdir) thread 0xc5160240 (100183) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8535440) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd8761ba0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd867fa60) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc94bd1b4) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc94bd310) locked @ kern/vfs_lookup.c:497 Process 1249 (mkdir) thread 0xc5160480 (100182) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86e9460) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8688724) locked @ kern/vfs_lookup.c:497 Process 1248 (mkdir) thread 0xc51606c0 (100181) exclusive lockmgr bufwait (bufwait) r = 0 (0xd868ca60) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc7b39310) locked @ kern/vfs_lookup.c:497 Process 1247 (mkdir) thread 0xc5160900 (100180) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8750c40) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8277880) locked @ kern/vfs_lookup.c:497 Process 1246 (mkdir) thread 0xc5160b40 (100179) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86cb360) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8adc880) locked @ kern/vfs_lookup.c:497 Process 1245 (mkdir) thread 0xc5160d80 (100178) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8566ee0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc891ab38) locked @ kern/vfs_lookup.c:497 Process 1244 (mkdir) thread 0xc5164000 (100177) exclusive lockmgr ufs (ufs) r = 0 (0xc94bc724) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94789dc) locked @ kern/vfs_lookup.c:497 Process 1243 (mkdir) thread 0xc5164240 (100176) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86687e0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd87804c0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc9337b38) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc9365c94) locked @ kern/vfs_lookup.c:497 Process 1242 (mkdir) thread 0xc5164480 (100175) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85606e0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8544b38) locked @ kern/vfs_lookup.c:497 Process 1241 (mkdir) thread 0xc51646c0 (100174) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86b0660) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc7f939dc) locked @ kern/vfs_lookup.c:497 Process 1240 (mkdir) thread 0xc5164900 (100173) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85c1d40) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc9477b38) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94781b4) locked @ kern/vfs_lookup.c:497 Process 1239 (mkdir) thread 0xc5164b40 (100172) exclusive lockmgr ufs (ufs) r = 0 (0xc946d9dc) locked @ kern/vfs_subr.c:2188 Process 1238 (mkdir) thread 0xc5164d80 (100171) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86a94a0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc882d9dc) locked @ kern/vfs_lookup.c:497 Process 1237 (mkdir) thread 0xc5165000 (100170) exclusive lockmgr bufwait (bufwait) r = 0 (0xd860c460) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8373058) locked @ kern/vfs_lookup.c:497 Process 1236 (mkdir) thread 0xc511a900 (100169) exclusive lockmgr ufs (ufs) r = 0 (0xc94e8880) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc9478058) locked @ kern/vfs_lookup.c:497 Process 1235 (mkdir) thread 0xc511ab40 (100168) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86bf540) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd87874e0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd86021e0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc94779dc) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc94c946c) locked @ kern/vfs_lookup.c:497 Process 1234 (mkdir) thread 0xc511ad80 (100167) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8587bc0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc86f2058) locked @ kern/vfs_lookup.c:497 Process 1233 (mkdir) thread 0xc513c000 (100166) exclusive lockmgr ufs (ufs) r = 0 (0xc94c9310) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc9478724) locked @ kern/vfs_lookup.c:497 Process 1232 (mkdir) thread 0xc513c240 (100165) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86207c0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc81e9b38) locked @ kern/vfs_lookup.c:497 Process 1231 (mkdir) thread 0xc513c480 (100164) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86658c0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8d29880) locked @ kern/vfs_lookup.c:497 Process 1230 (mkdir) thread 0xc513c6c0 (100163) exclusive lockmgr bufwait (bufwait) r = 0 (0xd860b0e0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc893246c) locked @ kern/vfs_lookup.c:497 Process 1229 (mkdir) thread 0xc513c900 (100162) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86118e0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc94f146c) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94e8c94) locked @ kern/vfs_lookup.c:497 Process 1228 (mkdir) thread 0xc513cb40 (100161) exclusive lockmgr ufs (ufs) r = 0 (0xc9470310) locked @ kern/vfs_subr.c:2188 Process 1227 (mkdir) thread 0xc513cd80 (100160) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8510660) locked @ kern/vfs_bio.c:2559 shared lockmgr ufs (ufs) r = 0 (0xc949446c) locked @ kern/vfs_vnops.c:1330 shared lockmgr ufs (ufs) r = 0 (0xc946d1b4) locked @ kern/vfs_subr.c:2083 Process 1226 (mkdir) thread 0xc513e000 (100159) exclusive lockmgr ufs (ufs) r = 0 (0xc91bfc94) locked @ kern/vfs_subr.c:2188 Process 1225 (mkdir) thread 0xc513e240 (100158) exclusive lockmgr ufs (ufs) r = 0 (0xc94b2b38) locked @ kern/vfs_subr.c:2188 Process 1224 (mkdir) thread 0xc513e480 (100157) exclusive lockmgr ufs (ufs) r = 0 (0xc94e8724) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94f15c8) locked @ kern/vfs_lookup.c:497 Process 1223 (mkdir) thread 0xc513e6c0 (100156) exclusive lockmgr ufs (ufs) r = 0 (0xc946f1b4) locked @ kern/vfs_subr.c:2188 Process 1222 (mkdir) thread 0xc513e900 (100155) exclusive lockmgr bufwait (bufwait) r = 0 (0xd854d560) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc853b5c8) locked @ kern/vfs_lookup.c:497 Process 1221 (mkdir) thread 0xc513eb40 (100154) exclusive sleep mutex Softdep Lock (Softdep Lock) r = 0 (0xc0f72a2c) locked @ ufs/ffs/ffs_softdep.c:2160 exclusive lockmgr bufwait (bufwait) r = 0 (0xd86e3ca0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd8668cc0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd864f680) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc93fd058) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc93829dc) locked @ kern/vfs_lookup.c:497 Process 1220 (mkdir) thread 0xc4e00480 (100153) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85b3340) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8b1d5c8) locked @ kern/vfs_lookup.c:497 Process 1219 (mkdir) thread 0xc4e006c0 (100152) exclusive lockmgr bufwait (bufwait) r = 0 (0xd874afa0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8054058) locked @ kern/vfs_lookup.c:497 Process 1218 (mkdir) thread 0xc4e00900 (100151) exclusive lockmgr bufwait (bufwait) r = 0 (0xd877cd80) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc7b771b4) locked @ kern/vfs_lookup.c:497 Process 1217 (mkdir) thread 0xc4e00b40 (100150) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8653ac0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc82f3c94) locked @ kern/vfs_lookup.c:497 Process 1216 (mkdir) thread 0xc4e00d80 (100149) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8560540) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8aaa1b4) locked @ kern/vfs_lookup.c:497 Process 1215 (mkdir) thread 0xc5119000 (100148) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86f6460) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8ca31b4) locked @ kern/vfs_lookup.c:497 Process 1214 (mkdir) thread 0xc5119240 (100147) exclusive lockmgr ufs (ufs) r = 0 (0xc94c95c8) locked @ kern/vfs_subr.c:2188 Process 1213 (mkdir) thread 0xc5119480 (100146) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8728720) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8035c94) locked @ kern/vfs_lookup.c:497 Process 1212 (mkdir) thread 0xc51196c0 (100145) exclusive lockmgr ufs (ufs) r = 0 (0xc94e8b38) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94bbc94) locked @ kern/vfs_lookup.c:497 Process 1211 (mkdir) thread 0xc5119900 (100144) exclusive lockmgr ufs (ufs) r = 0 (0xc94bb310) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc94b2310) locked @ kern/vfs_lookup.c:497 Process 1210 (mkdir) thread 0xc5119b40 (100143) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8557e60) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc894edf0) locked @ kern/vfs_lookup.c:497 Process 1209 (mkdir) thread 0xc5119d80 (100142) exclusive lockmgr ufs (ufs) r = 0 (0xc942c9dc) locked @ kern/vfs_subr.c:2188 Process 1208 (mkdir) thread 0xc511a000 (100141) exclusive lockmgr bufwait (bufwait) r = 0 (0xd871a060) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc83feb38) locked @ kern/vfs_lookup.c:497 Process 1207 (mkdir) thread 0xc511a240 (100140) exclusive lockmgr bufwait (bufwait) r = 0 (0xd862ece0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8134310) locked @ kern/vfs_lookup.c:497 Process 1206 (mkdir) thread 0xc511a480 (100139) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8719d20) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc82fab38) locked @ kern/vfs_lookup.c:497 Process 1205 (mkdir) thread 0xc511a6c0 (100138) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85b9ce0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8abf058) locked @ kern/vfs_lookup.c:497 Process 1204 (mkdir) thread 0xc4dfc000 (100137) exclusive lockmgr ufs (ufs) r = 0 (0xc94f1310) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc9477df0) locked @ kern/vfs_lookup.c:497 Process 1203 (mkdir) thread 0xc4dfc240 (100136) exclusive lockmgr ufs (ufs) r = 0 (0xc9477c94) locked @ ufs/ffs/ffs_vfsops.c:1465 exclusive lockmgr ufs (ufs) r = 0 (0xc946e310) locked @ kern/vfs_lookup.c:497 Process 1202 (mkdir) thread 0xc4dfc480 (100135) exclusive lockmgr bufwait (bufwait) r = 0 (0xd86b7820) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8ce3724) locked @ kern/vfs_lookup.c:497 Process 1201 (mkdir) thread 0xc4dfc6c0 (100134) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8798440) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 0 (0xc9273310) locked @ kern/vfs_subr.c:2188 Process 1200 (mkdir) thread 0xc4c1a6c0 (100118) exclusive lockmgr bufwait (bufwait) r = 0 (0xd870c6a0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc8c9846c) locked @ kern/vfs_lookup.c:497 Process 1199 (mkdir) thread 0xc4c64d80 (100094) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8590920) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd864f4e0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr bufwait (bufwait) r = 0 (0xd861cee0) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 1 (0xc942c880) locked @ kern/vfs_subr.c:2083 exclusive lockmgr ufs (ufs) r = 0 (0xc9419b38) locked @ kern/vfs_lookup.c:497 Process 1198 (mkdir) thread 0xc4dfc900 (100133) exclusive lockmgr bufwait (bufwait) r = 0 (0xd8624a60) locked @ kern/vfs_bio.c:1835 exclusive lockmgr ufs (ufs) r = 0 (0xc80e79dc) locked @ kern/vfs_lookup.c:497 Process 1167 (sshd) thread 0xc4dfb480 (100121) exclusive sx so_rcv_sx (so_rcv_sx) r = 0 (0xc4e0ed6c) locked @ kern/uipc_sockbuf.c:148 Process 1017 (ntpd) thread 0xc4dfb6c0 (100120) exclusive lockmgr ufs (ufs) r = 0 (0xc4c2ec94) locked @ kern/vfs_subr.c:2083 Process 746 (syslogd) thread 0xc481bb40 (100064) exclusive lockmgr ufs (ufs) r = 0 (0xc4c2d1b4) locked @ kern/vfs_vnops.c:607 Process 18 (softdepflush) thread 0xc4767900 (100049) exclusive lockmgr bufwait (bufwait) r = 0 (0xd85555c0) locked @ kern/vfs_bio.c:1835 exclusive lockmgr bufwait (bufwait) r = 0 (0xd8622d20) locked @ kern/vfs_bio.c:2559 exclusive lockmgr ufs (ufs) r = 0 (0xc5ab09dc) locked @ kern/vfs_subr.c:2083 Process 16 (syncer) thread 0xc4767d80 (100047) exclusive lockmgr syncer (syncer) r = 0 (0xc4b5f880) locked @ kern/vfs_subr.c:1693 Process 15 (bufdaemon) thread 0xc481a000 (100046) exclusive lockmgr bufwait (bufwait) r = 0 (0xd858f260) locked @ kern/vfs_bio.c:2237 exclusive sleep mutex buf queue lock (buf queue lock) r = 0 (0xc0f66e10) locked @ kern/vfs_bio.c:2307 db:0:alllocks> show lockedvnods Locked vnodes 0xc4b5f15c: tag ufs, type VREG usecount 21, writecount 0, refcount 22 mountedhere 0 flags () v_object 0xc4b645d8 ref 0 pages 10 lock type ufs: SHARED (count 21) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc092de2b at vn_read+0x16b #5 0xc08d2976 at dofileread+0x96 #6 0xc08d2ca8 at kern_readv+0x58 #7 0xc08d2dbf at read+0x4f #8 0xc0bcadc4 at syscall+0x2b4 #9 0xc0bad100 at Xint0x80_syscall+0x20 ino 47630, on dev ad0s1a 0xc4b5f828: tag syncer, type VNON usecount 1, writecount 0, refcount 2 mountedhere 0 flags () lock type syncer: EXCL by thread 0xc4767d80 (pid 16) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc090ed75 at vop_stdlock+0x65 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920c12 at sync_vnode+0x142 #5 0xc0920f83 at sched_sync+0x273 #6 0xc0863018 at fork_exit+0xb8 #7 0xc0bad110 at fork_trampoline+0x8 0xc5f9c000: tag ufs, type VREG usecount 0, writecount 0, refcount 2 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc6018440 ref 0 pages 2 lock type ufs: EXCL by thread 0xc4dfcd80 (pid 1859) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc0862079 at exit1+0xfd9 #6 0xc08622ad at sys_exit+0x1d #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 94245, on dev ad0s1a 0xc4c2ec3c: tag ufs, type VDIR usecount 1, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc4b56b28 ref 0 pages 1 lock type ufs: EXCL by thread 0xc4dfb6c0 (pid 1017) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc090c3db at cache_lookup+0x67b #6 0xc090c5bd at vfs_cache_lookup+0xad #7 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #8 0xc091398b at lookup+0x67b #9 0xc09147cf at namei+0x57f #10 0xc092bf40 at vn_open_cred+0x90 #11 0xc092c4ab at vn_open+0x3b #12 0xc092a2af at kern_openat+0x11f #13 0xc092a815 at kern_open+0x35 #14 0xc092a850 at open+0x30 #15 0xc0bcadc4 at syscall+0x2b4 #16 0xc0bad100 at Xint0x80_syscall+0x20 ino 70656, on dev ad0s1g 0xc4c5bc3c: tag ufs, type VREG usecount 1, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc4ce4aa0 ref 0 pages 1 lock type ufs: SHARED (count 1) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc092de2b at vn_read+0x16b #5 0xc08d2976 at dofileread+0x96 #6 0xc08d2ca8 at kern_readv+0x58 #7 0xc08d2dbf at read+0x4f #8 0xc0bcadc4 at syscall+0x2b4 #9 0xc0bad100 at Xint0x80_syscall+0x20 ino 5746692, on dev ad0s1g 0xc4c2d15c: tag ufs, type VREG usecount 1, writecount 1, refcount 2 mountedhere 0 flags () v_object 0xc4cefbb0 ref 0 pages 1 lock type ufs: EXCL by thread 0xc481bb40 (pid 746) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc092db66 at vn_write+0x156 #5 0xc08d27f5 at dofilewrite+0x95 #6 0xc08d3f48 at kern_writev+0x58 #7 0xc08d3fe6 at writev+0x46 #8 0xc0bcadc4 at syscall+0x2b4 #9 0xc0bad100 at Xint0x80_syscall+0x20 ino 3556391, on dev ad0s1g 0xc4b5d6cc: tag ufs, type VDIR usecount 5, writecount 0, refcount 6 mountedhere 0 flags () v_object 0xc4ce4000 ref 0 pages 1 lock type ufs: SHARED (count 2) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09254bc at kern_statfs+0x8c #7 0xc09256fb at statfs+0x3b #8 0xc0bcadc4 at syscall+0x2b4 #9 0xc0bad100 at Xint0x80_syscall+0x20 ino 2637827, on dev ad0s1g 0xc4e192b8: tag ufs, type VDIR usecount 5, writecount 0, refcount 7 mountedhere 0 flags () v_object 0xc4b64aa0 ref 0 pages 1 lock type ufs: SHARED (count 2) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc092b1f0 at kern_getdirentries+0x190 #5 0xc092b451 at getdirentries+0x31 #6 0xc0bcadc4 at syscall+0x2b4 #7 0xc0bad100 at Xint0x80_syscall+0x20 ino 2637830, on dev ad0s1g 0xc5ab0984: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () v_object 0xc59c3440 ref 0 pages 0 lock type ufs: EXCL by thread 0xc4767900 (pid 18) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ac21f7 at handle_workitem_remove+0x47 #8 0xc0ac1672 at process_worklist_item+0x1e2 #9 0xc0aca601 at softdep_process_worklist+0x81 #10 0xc0acaba7 at softdep_flush+0x287 #11 0xc0863018 at fork_exit+0xb8 #12 0xc0bad110 at fork_trampoline+0x8 ino 353450, on dev ad0s1e 0xc7a696cc: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc7a5e000 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51886c0 (pid 1284) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 307713, on dev ad0s1e 0xc7b392b8: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc7b253b8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51606c0 (pid 1248) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 378052, on dev ad0s1e 0xc7b7715c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc7afc4c8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc4e00900 (pid 1218) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 354852, on dev ad0s1e 0xc7f93984: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc7f92088 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51646c0 (pid 1241) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 425407, on dev ad0s1e 0xc8035c3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc801c4c8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5119480 (pid 1213) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 448383, on dev ad0s1e 0xc8054000: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc804b6e8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc4e006c0 (pid 1219) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 378497, on dev ad0s1e 0xc80e7984: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc80cfb28 ref 0 pages 1 lock type ufs: EXCL by thread 0xc4dfc900 (pid 1198) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 472011, on dev ad0s1e 0xc81342b8: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc81403b8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc511a240 (pid 1207) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 472067, on dev ad0s1e 0xc81e9ae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc81e7b28 ref 0 pages 1 lock type ufs: EXCL by thread 0xc513c240 (pid 1232) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 378555, on dev ad0s1e 0xc8277828: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8294dd0 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5160900 (pid 1247) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 505918, on dev ad0s1e 0xc82f3c3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc82f5660 ref 0 pages 1 lock type ufs: EXCL by thread 0xc4e00b40 (pid 1217) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 526368, on dev ad0s1e 0xc82faae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc82f7440 ref 0 pages 1 lock type ufs: EXCL by thread 0xc511a480 (pid 1206) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 526421, on dev ad0s1e 0xc8373000: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc83d9b28 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5165000 (pid 1237) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 526855, on dev ad0s1e 0xc83af984: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc83d9d48 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51d1240 (pid 1290) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 526916, on dev ad0s1e 0xc83b6d98: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc838cbb0 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51656c0 (pid 1266) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 402135, on dev ad0s1e 0xc83feae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8427c38 ref 0 pages 1 lock type ufs: EXCL by thread 0xc511a000 (pid 1208) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 11366, on dev ad0s1e 0xc84c5c3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc84f0198 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51a7d80 (pid 1274) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 11515, on dev ad0s1e 0xc852115c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc84f87f8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51a7900 (pid 1276) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 11687, on dev ad0s1e 0xc853b570: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc84f8880 ref 0 pages 1 lock type ufs: EXCL by thread 0xc513e900 (pid 1222) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 378696, on dev ad0s1e 0xc8544ae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc85423b8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5164480 (pid 1242) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 378705, on dev ad0s1e 0xc864f000: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8653880 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51d16c0 (pid 1288) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 284508, on dev ad0s1e 0xc86886cc: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8661440 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5160480 (pid 1249) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 378756, on dev ad0s1e 0xc86f2000: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc86c2b28 ref 0 pages 1 lock type ufs: EXCL by thread 0xc511ad80 (pid 1234) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12181, on dev ad0s1e 0xc88316cc: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc883dee0 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5187000 (pid 1262) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 284579, on dev ad0s1e 0xc882e828: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc888ed48 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51d1480 (pid 1289) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 24997, on dev ad0s1e 0xc882d984: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc888ea18 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5164d80 (pid 1238) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 25052, on dev ad0s1e 0xc891aae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8904cc0 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5160d80 (pid 1245) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 25407, on dev ad0s1e 0xc8932414: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc89552a8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc513c6c0 (pid 1230) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 25519, on dev ad0s1e 0xc894ed98: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc892ac38 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5119b40 (pid 1210) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 48353, on dev ad0s1e 0xc898cae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc895da18 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5187b40 (pid 1257) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 48497, on dev ad0s1e 0xc8a87984: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8aad110 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51a96c0 (pid 1270) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 48893, on dev ad0s1e 0xc8aaa15c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8aac7f8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc4e00d80 (pid 1216) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 48970, on dev ad0s1e 0xc8abf000: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8a91880 ref 0 pages 1 lock type ufs: EXCL by thread 0xc511a6c0 (pid 1205) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 49023, on dev ad0s1e 0xc8adc828: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8ad3c38 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5160b40 (pid 1246) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 49105, on dev ad0s1e 0xc8b1d570: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8b4fa18 ref 0 pages 1 lock type ufs: EXCL by thread 0xc4e00480 (pid 1220) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 70807, on dev ad0s1e 0xc8b1e15c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8b4f990 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5187900 (pid 1258) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 70839, on dev ad0s1e 0xc8b46c3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8b50aa0 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5188900 (pid 1283) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 70947, on dev ad0s1e 0xc8bc9ae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8c002a8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51cfd80 (pid 1292) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 71232, on dev ad0s1e 0xc8c4f15c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8c44550 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51cf6c0 (pid 1295) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 71458, on dev ad0s1e 0xc8ccfae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8ccaee0 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51cfb40 (pid 1293) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 95465, on dev ad0s1e 0xc8ce2414: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8d0e2a8 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5165d80 (pid 1263) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 308289, on dev ad0s1e 0xc8ce36cc: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8ce7550 ref 0 pages 1 lock type ufs: EXCL by thread 0xc4dfc480 (pid 1202) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 95523, on dev ad0s1e 0xc8d1b15c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8d77d48 ref 0 pages 1 lock type ufs: EXCL by thread 0xc51a7b40 (pid 1275) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 95598, on dev ad0s1e 0xc8c98414: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8d26330 ref 0 pages 1 lock type ufs: EXCL by thread 0xc4c1a6c0 (pid 1200) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 95604, on dev ad0s1e 0xc8ca315c: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8d62440 ref 0 pages 1 lock type ufs: EXCL by thread 0xc5119000 (pid 1215) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 95669, on dev ad0s1e 0xc8d29828: tag ufs, type VDIR usecount 2, writecount 0, refcount 4 mountedhere 0 flags () v_object 0xc8dcee58 ref 0 pages 1 lock type ufs: EXCL by thread 0xc513c480 (pid 1231) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 95854, on dev ad0s1e 0xc91bfc3c: tag ufs, type VDIR usecount 0, writecount 0, refcount 2 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc91dec38 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513e000 (pid 1226) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 472778, on dev ad0s1e 0xc92732b8: tag ufs, type VDIR usecount 0, writecount 0, refcount 2 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc92f3a18 ref 0 pages 0 lock type ufs: EXCL by thread 0xc4dfc6c0 (pid 1201) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 506508, on dev ad0s1e 0xc92f9d98: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc92cb4c8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5188d80 (pid 1281) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 237644, on dev ad0s1e 0xc92f9c3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc90db5d8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5188d80 (pid 1281) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 237645, on dev ad0s1e 0xc9365c3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc92f0000 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5164240 (pid 1243) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 506609, on dev ad0s1e 0xc9337ae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc9346c38 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5164240 (pid 1243) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 506614, on dev ad0s1e 0xc9397ae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc936abb0 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a9240 (pid 1272) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 284962, on dev ad0s1e 0xc9397984: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc936ab28 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a9240 (pid 1272) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 284964, on dev ad0s1e 0xc93ac414: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93bc110 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5165480 (pid 1267) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 527198, on dev ad0s1e 0xc9370c3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93a0990 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5165480 (pid 1267) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 527205, on dev ad0s1e 0xc93d5414: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93bcb28 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5165900 (pid 1265) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 527316, on dev ad0s1e 0xc93d52b8: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93bcaa0 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5165900 (pid 1265) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 527317, on dev ad0s1e 0xc93c1c3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93b6880 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a9900 (pid 1269) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 527357, on dev ad0s1e 0xc93ed984: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93e8bb0 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a9900 (pid 1269) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 527388, on dev ad0s1e 0xc9382984: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93e9a18 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513eb40 (pid 1221) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12354, on dev ad0s1e 0xc9419ae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93e9ee0 ref 0 pages 0 lock type ufs: EXCL by thread 0xc4c64d80 (pid 1199) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12359, on dev ad0s1e 0xc942c828: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93d34c8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc4c64d80 (pid 1199) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 12368, on dev ad0s1e 0xc942a414: tag ufs, type VDIR usecount 0, writecount 0, refcount 2 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94384c8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5187480 (pid 1260) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12405, on dev ad0s1e 0xc93fd000: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc9427110 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513eb40 (pid 1221) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 12416, on dev ad0s1e 0xc943a570: tag ufs, type VDIR usecount 0, writecount 0, refcount 2 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc9427220 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5188480 (pid 1253) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12440, on dev ad0s1e 0xc943a414: tag ufs, type VDIR usecount 0, writecount 0, refcount 2 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc9431a18 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5188000 (pid 1255) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12453, on dev ad0s1e 0xc946d828: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc949dc38 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51d1b40 (pid 1286) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12548, on dev ad0s1e 0xc9450828: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc9481aa0 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5160000 (pid 1251) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12563, on dev ad0s1e 0xc946d15c: tag ufs, type VDIR usecount 1, writecount 0, refcount 2 mountedhere 0 flags () v_object 0xc9432e58 ref 0 pages 0 lock type ufs: SHARED (count 1) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc092c9b4 at vn_vget_ino+0x134 #9 0xc0adafed at ufs_lookup_ino+0x99d #10 0xc0adb19a at ufs_lookup+0x2a #11 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #12 0xc090c5e6 at vfs_cache_lookup+0xd6 #13 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #14 0xc091398b at lookup+0x67b #15 0xc09147cf at namei+0x57f #16 0xc0927fc8 at kern_chdir+0x58 #17 0xc0928192 at chdir+0x22 ino 12565, on dev ad0s1e 0xc94506cc: tag ufs, type VDIR usecount 0, writecount 0, refcount 2 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc9482000 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a7480 (pid 1278) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12566, on dev ad0s1e 0xc944a15c: tag ufs, type VDIR usecount 0, writecount 0, refcount 2 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc9425440 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a9000 (pid 1273) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12568, on dev ad0s1e 0xc94702b8: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc9425110 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513cb40 (pid 1228) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12571, on dev ad0s1e 0xc947015c: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc9431e58 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5188240 (pid 1254) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12575, on dev ad0s1e 0xc94ad15c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94836e8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a7240 (pid 1279) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 214303, on dev ad0s1e 0xc94ad000: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc9483660 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a7240 (pid 1279) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 214304, on dev ad0s1e 0xc94b2ae0: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc949d880 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513e240 (pid 1225) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12600, on dev ad0s1e 0xc9494414: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94b12a8 ref 0 pages 0 lock type ufs: SHARED (count 1) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc092c9e1 at vn_vget_ino+0x161 #5 0xc0adafed at ufs_lookup_ino+0x99d #6 0xc0adb19a at ufs_lookup+0x2a #7 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #8 0xc090c5e6 at vfs_cache_lookup+0xd6 #9 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #10 0xc091398b at lookup+0x67b #11 0xc09147cf at namei+0x57f #12 0xc0927fc8 at kern_chdir+0x58 #13 0xc0928192 at chdir+0x22 #14 0xc0bcadc4 at syscall+0x2b4 #15 0xc0bad100 at Xint0x80_syscall+0x20 ino 12604, on dev ad0s1e 0xc949415c: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94e03b8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a9480 (pid 1271) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12609, on dev ad0s1e 0xc94b22b8: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc949d5d8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5119900 (pid 1211) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12615, on dev ad0s1e 0xc9479828: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94814c8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51d1900 (pid 1287) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12616, on dev ad0s1e 0xc9479570: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc949d4c8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51cf900 (pid 1294) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12618, on dev ad0s1e 0xc94b2000: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94e6550 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5165b40 (pid 1264) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12623, on dev ad0s1e 0xc946f414: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94df660 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5187240 (pid 1261) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12631, on dev ad0s1e 0xc946f2b8: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94e7198 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51d1d80 (pid 1285) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12636, on dev ad0s1e 0xc946f15c: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94df5d8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513e6c0 (pid 1223) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12638, on dev ad0s1e 0xc94bd2b8: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94b0198 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5160240 (pid 1250) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 285038, on dev ad0s1e 0xc94bd15c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94b0110 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5160240 (pid 1250) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 285039, on dev ad0s1e 0xc946e2b8: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc9481198 ref 0 pages 0 lock type ufs: EXCL by thread 0xc4dfc240 (pid 1203) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12655, on dev ad0s1e 0xc94caae0: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94b1ee0 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513ed80 (pid 1252) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12656, on dev ad0s1e 0xc946e15c: tag ufs, type VDIR usecount 1, writecount 0, refcount 2 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc5160000 (pid 1251) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12657, on dev ad0s1e 0xc946dc3c: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94e6e58 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51876c0 (pid 1259) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12660, on dev ad0s1e 0xc94bbc3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94813b8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51196c0 (pid 1212) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12663, on dev ad0s1e 0xc946d984: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94df908 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5164b40 (pid 1239) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12666, on dev ad0s1e 0xc9478984: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94e0000 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5164000 (pid 1244) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12667, on dev ad0s1e 0xc9478828: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94e02a8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a7000 (pid 1280) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12668, on dev ad0s1e 0xc942c984: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94e0440 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5119d80 (pid 1209) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12669, on dev ad0s1e 0xc94bb984: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94df880 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5187d80 (pid 1256) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12671, on dev ad0s1e 0xc94bb6cc: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94e7088 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5188b40 (pid 1282) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12674, on dev ad0s1e 0xc94786cc: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc9481000 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513c000 (pid 1233) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12590, on dev ad0s1e 0xc9478570: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc94e6d48 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51cf480 (pid 1296) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12650, on dev ad0s1e 0xc944f414: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc5187d80 (pid 1256) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12677, on dev ad0s1e 0xc942c15c: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc51a7000 (pid 1280) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12681, on dev ad0s1e 0xc94bb2b8: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc5119900 (pid 1211) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12690, on dev ad0s1e 0xc94b2570: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93483b8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5165240 (pid 1268) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12710, on dev ad0s1e 0xc94c9570: tag ufs, type VDIR usecount 0, writecount 0, refcount 3 mountedhere 0 flags (VI_DOINGINACT) v_object 0xc9481220 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5119240 (pid 1214) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0920a0f at vrele+0x14f #5 0xc092815d at kern_chdir+0x1ed #6 0xc0928192 at chdir+0x22 #7 0xc0bcadc4 at syscall+0x2b4 #8 0xc0bad100 at Xint0x80_syscall+0x20 ino 12711, on dev ad0s1e 0xc947815c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94e6220 ref 0 pages 0 lock type ufs: EXCL by thread 0xc5164900 (pid 1240) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12712, on dev ad0s1e 0xc94c9414: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94e0d48 ref 0 pages 0 lock type ufs: EXCL by thread 0xc511ab40 (pid 1235) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc09234c4 at kern_rmdirat+0x54 #7 0xc09236b7 at kern_rmdir+0x27 #8 0xc09236e2 at rmdir+0x22 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12713, on dev ad0s1e 0xc94c92b8: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc513c000 (pid 1233) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12714, on dev ad0s1e 0xc946e984: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc93f0660 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51d1000 (pid 1291) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12716, on dev ad0s1e 0xc94c915c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94e7cc0 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51cf240 (pid 1297) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12717, on dev ad0s1e 0xc9478000: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94e0550 ref 0 pages 0 lock type ufs: EXCL by thread 0xc511a900 (pid 1236) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12718, on dev ad0s1e 0xc9477d98: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94e0198 ref 0 pages 0 lock type ufs: EXCL by thread 0xc4dfc000 (pid 1204) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12719, on dev ad0s1e 0xc94e8c3c: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94e66e8 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513c900 (pid 1229) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12723, on dev ad0s1e 0xc94bc6cc: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc5164000 (pid 1244) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12724, on dev ad0s1e 0xc9477c3c: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc4dfc240 (pid 1203) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12725, on dev ad0s1e 0xc94e8ae0: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc51196c0 (pid 1212) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12727, on dev ad0s1e 0xc9477ae0: tag ufs, type VDIR usecount 1, writecount 0, refcount 2 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc5164900 (pid 1240) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12729, on dev ad0s1e 0xc94f16cc: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94b1a18 ref 0 pages 0 lock type ufs: EXCL by thread 0xc51a76c0 (pid 1277) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12730, on dev ad0s1e 0xc94bfd98: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc513ed80 (pid 1252) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12731, on dev ad0s1e 0xc94f1570: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () v_object 0xc94e7aa0 ref 0 pages 0 lock type ufs: EXCL by thread 0xc513e480 (pid 1224) #0 0xc0875612 at __lockmgr_args+0x592 #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc0913416 at lookup+0x106 #5 0xc09147cf at namei+0x57f #6 0xc0923758 at kern_mkdirat+0x68 #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12732, on dev ad0s1e 0xc9477984: tag ufs, type VDIR usecount 2, writecount 0, refcount 3 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc511ab40 (pid 1235) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0ad34d1 at ffs_lock+0xa1 #2 0xc0be3bf5 at VOP_LOCK1_APV+0xb5 #3 0xc092c7f8 at _vn_lock+0x78 #4 0xc09205db at vget+0xbb #5 0xc091271d at vfs_hash_get+0xed #6 0xc0acdcc9 at ffs_vgetf+0x49 #7 0xc0ace24e at ffs_vget+0x2e #8 0xc0adae59 at ufs_lookup_ino+0x809 #9 0xc0adb19a at ufs_lookup+0x2a #10 0xc0be23c5 at VOP_CACHEDLOOKUP_APV+0xc5 #11 0xc090c5e6 at vfs_cache_lookup+0xd6 #12 0xc0be4d75 at VOP_LOOKUP_APV+0xe5 #13 0xc091398b at lookup+0x67b #14 0xc09147cf at namei+0x57f #15 0xc09234c4 at kern_rmdirat+0x54 #16 0xc09236b7 at kern_rmdir+0x27 #17 0xc09236e2 at rmdir+0x22 ino 12733, on dev ad0s1e 0xc94f1414: tag ufs, type VDIR usecount 1, writecount 0, refcount 2 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc513c900 (pid 1229) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12734, on dev ad0s1e 0xc94bfc3c: tag ufs, type VDIR usecount 1, writecount 0, refcount 2 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc51a76c0 (pid 1277) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12735, on dev ad0s1e 0xc9477828: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc5165240 (pid 1268) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12736, on dev ad0s1e 0xc94f12b8: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc4dfc000 (pid 1204) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12737, on dev ad0s1e 0xc94e8984: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc51d1000 (pid 1291) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12738, on dev ad0s1e 0xc94e8828: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc511a900 (pid 1236) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12739, on dev ad0s1e 0xc94e86cc: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc513e480 (pid 1224) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12740, on dev ad0s1e 0xc94e8570: tag ufs, type VDIR usecount 1, writecount 0, refcount 1 mountedhere 0 flags () lock type ufs: EXCL by thread 0xc51cf240 (pid 1297) #0 0xc0875c9e at __lockmgr_args+0xc1e #1 0xc0acde61 at ffs_vgetf+0x1e1 #2 0xc0ace24e at ffs_vget+0x2e #3 0xc0aa92fe at ffs_valloc+0x59e #4 0xc0ae36a5 at ufs_mkdir+0xb5 #5 0xc0be4075 at VOP_MKDIR_APV+0xc5 #6 0xc092390b at kern_mkdirat+0x21b #7 0xc09239de at kern_mkdir+0x2e #8 0xc0923a09 at mkdir+0x29 #9 0xc0bcadc4 at syscall+0x2b4 #10 0xc0bad100 at Xint0x80_syscall+0x20 ino 12741, on dev ad0s1e db:0:lockedvnods> show mount 0xc4ab1b50 /dev/ad0s1a on / (ufs) 0xc4ab2000 devfs on /dev (devfs) 0xc4c1b5a8 /dev/ad0s1f on /home (ufs) 0xc4c1b000 /dev/ad0s1d on /usr (ufs) 0xc4ab2b50 /dev/ad0s1g on /var (ufs) 0xc5110000 /dev/ad0s1e on /tmp (ufs) More info: show mount db:0:mount> ps pid ppid pgrp uid state wmesg wchan cmd 1906 1905 1906 0 LVs *buf queu 0xc51a8000 cron 1905 1073 1073 0 S ppwait 0xc4af7fe8 cron 1904 1903 1904 0 LVs *buf queu 0xc51a8000 cron 1903 1073 1073 0 S ppwait 0xc95537f0 cron 1902 1901 1902 0 LVs *buf queu 0xc51a8000 cron 1901 1073 1073 0 S ppwait 0xc51c7fe8 cron 1900 1899 1900 0 LVs *buf queu 0xc51a8000 cron 1899 1073 1073 0 S ppwait 0xc4c60fe8 cron 1898 1897 1898 0 LVs *buf queu 0xc51a8000 cron 1897 1073 1073 0 S ppwait 0xc4c00fe8 cron 1896 1067 1067 25 L *buf queu 0xc51a8000 sendmail 1895 1061 1061 0 L *buf queu 0xc51a8000 sendmail 1894 1893 1894 0 LVs *buf queu 0xc51a8000 cron 1893 1073 1073 0 S ppwait 0xc4c16d40 cron 1892 1891 1892 0 LVs *buf queu 0xc51a8000 cron 1891 1073 1073 0 S ppwait 0xc76d22a0 cron 1890 1889 1890 0 LVs *buf queu 0xc51a8000 cron 1889 1073 1073 0 S ppwait 0xc4c15fe8 cron 1888 1887 1888 0 LVs *buf queu 0xc51a8000 cron 1887 1073 1073 0 S ppwait 0xc4af72a0 cron 1886 1883 1886 0 LVs *buf queu 0xc51a8000 cron 1885 1882 1885 0 LVs *buf queu 0xc51a8000 cron 1884 1881 1884 0 LVs *buf queu 0xc51a8000 cron 1883 1073 1073 0 S ppwait 0xc76d32a0 cron 1882 1073 1073 0 S ppwait 0xc4bff7f0 cron 1881 1073 1073 0 S ppwait 0xc4a512a0 cron 1880 1878 1880 0 LVs *buf queu 0xc51a8000 cron 1879 1877 1879 0 LVs *buf queu 0xc51a8000 cron 1878 1073 1073 0 S ppwait 0xc4c16548 cron 1877 1073 1073 0 S ppwait 0xc474bd40 cron 1876 1875 1876 0 LVs *buf queu 0xc51a8000 cron 1875 1073 1073 0 S ppwait 0xc4df87f0 cron 1874 1067 1067 25 L *buf queu 0xc51a8000 sendmail 1873 1061 1061 0 L *buf queu 0xc51a8000 sendmail 1872 1871 1872 0 LVs *buf queu 0xc51a8000 cron 1871 1073 1073 0 S ppwait 0xc76d3d40 cron 1870 1869 1870 0 LVs *buf queu 0xc51a8000 cron 1869 1073 1073 0 S ppwait 0xc76d3548 cron 1868 1867 1868 0 LVs *buf queu 0xc51a8000 cron 1867 1073 1073 0 S ppwait 0xc51c7a98 cron 1866 1865 1866 0 LVs *buf queu 0xc51a8000 cron 1865 1073 1073 0 S ppwait 0xc4df7a98 cron 1864 1863 1864 0 LVs *buf queu 0xc51a8000 cron 1863 1073 1073 0 S ppwait 0xc4df4d40 cron 1862 1861 1862 0 LVs *buf queu 0xc51a8000 cron 1861 1073 1073 0 S ppwait 0xc4c60a98 cron 1860 1095 1095 0 L *buf queu 0xc51a8000 sh 1859 1312 1308 1001 LE *buf queu 0xc51a8000 sleep 1313 1308 1308 1001 S piperd 0xc4ce9188 awk 1312 1308 1308 1001 S wait 0xc51e8d48 sh 1309 1306 1309 1001 Ss+ select 0xc57ac364 top 1308 1307 1308 1001 Ss wait 0xc4a512a8 sh 1307 1300 1300 1001 S select 0xc5401b64 sshd 1306 1299 1299 1001 S select 0xc53cdaa4 sshd 1305 1304 1305 1001 Ss kqread 0xc5703500 tail 1304 1298 1298 1001 S select 0xc592d4e4 sshd 1300 1054 1300 0 Ss sbwait 0xc502c58c sshd 1299 1054 1299 0 Ss sbwait 0xc5cb80b8 sshd 1298 1054 1298 0 Ss sbwait 0xc4de0bfc sshd 1297 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1296 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1295 1197 1196 1001 S+ biord 0xd8519840 mkdir 1294 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1293 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1292 1197 1196 1001 S+ biord 0xd8622300 mkdir 1291 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1290 1197 1196 1001 S+ biord 0xd86246c0 mkdir 1289 1197 1196 1001 S+ biord 0xd874bf80 mkdir 1288 1197 1196 1001 S+ biord 0xd860cdc0 mkdir 1287 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1286 1197 1196 1001 S+ getblk 0xd871fb60 mkdir 1285 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1284 1197 1196 1001 S+ biord 0xd85c0fe0 mkdir 1283 1197 1196 1001 S+ biord 0xd8706320 mkdir 1282 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1281 1197 1196 1001 S+ biowr 0xd861c660 mkdir 1280 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1279 1197 1196 1001 LL+ *Softdep 0xc4dff480 mkdir 1278 1197 1196 1001 S+ getblk 0xd871fb60 mkdir 1277 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1276 1197 1196 1001 S+ biord 0xd85a86a0 mkdir 1275 1197 1196 1001 S+ biord 0xd86c9760 mkdir 1274 1197 1196 1001 S+ biord 0xd869d620 mkdir 1273 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1272 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1271 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1270 1197 1196 1001 S+ biord 0xd85d3600 mkdir 1269 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1268 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1267 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1266 1197 1196 1001 S+ biord 0xd858e360 mkdir 1265 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1264 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1263 1197 1196 1001 S+ biord 0xd85ad7e0 mkdir 1262 1197 1196 1001 S+ biord 0xd86f6a80 mkdir 1261 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1260 1197 1196 1001 S+ getblk 0xd864f4e0 mkdir 1259 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1258 1197 1196 1001 S+ biord 0xd8647280 mkdir 1257 1197 1196 1001 S+ biord 0xd857d400 mkdir 1256 1197 1196 1001 L+ *Softdep 0xc4dff480 mkdir 1255 1197 1196 1001 S+ getblk 0xd8668cc0 mkdir 1254 1197 1196 1001 S+ getblk 0xd871fb60 mkdir 1253 1197 1196 1001 S+ getblk 0xd8668cc0 mkdir 1252 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1251 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1250 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1249 1197 1196 1001 S+ biord 0xd86e9400 mkdir 1248 1197 1196 1001 S+ biord 0xd868ca00 mkdir 1247 1197 1196 1001 S+ biord 0xd8750be0 mkdir 1246 1197 1196 1001 S+ biord 0xd86cb300 mkdir 1245 1197 1196 1001 S+ biord 0xd8566e80 mkdir 1244 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1243 1197 1196 1001 L+ *Softdep 0xc4dff480 mkdir 1242 1197 1196 1001 S+ biord 0xd8560680 mkdir 1241 1197 1196 1001 S+ biord 0xd86b0600 mkdir 1240 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1239 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1238 1197 1196 1001 S+ biord 0xd86a9440 mkdir 1237 1197 1196 1001 S+ biord 0xd860c400 mkdir 1236 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1235 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1234 1197 1196 1001 S+ biord 0xd8587b60 mkdir 1233 1197 1196 1001 S+ getblk 0xd871fb60 mkdir 1232 1197 1196 1001 S+ biord 0xd8620760 mkdir 1231 1197 1196 1001 S+ biord 0xd8665860 mkdir 1230 1197 1196 1001 S+ biord 0xd860b080 mkdir 1229 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1228 1197 1196 1001 S+ getblk 0xd871fb60 mkdir 1227 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1226 1197 1196 1001 S+ getblk 0xd86a53a0 mkdir 1225 1197 1196 1001 S+ getblk 0xd871fb60 mkdir 1224 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1223 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1222 1197 1196 1001 S+ biord 0xd854d500 mkdir 1221 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1220 1197 1196 1001 S+ biord 0xd85b32e0 mkdir 1219 1197 1196 1001 S+ biord 0xd874af40 mkdir 1218 1197 1196 1001 S+ biord 0xd877cd20 mkdir 1217 1197 1196 1001 S+ biord 0xd8653a60 mkdir 1216 1197 1196 1001 S+ biord 0xd85604e0 mkdir 1215 1197 1196 1001 S+ biord 0xd86f6400 mkdir 1214 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1213 1197 1196 1001 S+ biord 0xd87286c0 mkdir 1212 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1211 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1210 1197 1196 1001 S+ biord 0xd8557e00 mkdir 1209 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1208 1197 1196 1001 S+ biord 0xd871a000 mkdir 1207 1197 1196 1001 S+ biord 0xd862ec80 mkdir 1206 1197 1196 1001 S+ biord 0xd8719cc0 mkdir 1205 1197 1196 1001 S+ biord 0xd85b9c80 mkdir 1204 1197 1196 1001 S+ getblk 0xd87874e0 mkdir 1203 1197 1196 1001 S+ getblk 0xd85174e0 mkdir 1202 1197 1196 1001 S+ biord 0xd86b77c0 mkdir 1201 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1200 1197 1196 1001 S+ biord 0xd870c640 mkdir 1199 1197 1196 1001 L+ *buf queu 0xc51a8000 mkdir 1198 1197 1196 1001 S+ biord 0xd8624a00 mkdir 1197 1196 1196 1001 S+ wait 0xc474bd48 mkdir 1196 1170 1196 1001 S+ wait 0xc4c16000 mkdir 1170 1169 1170 1001 Ss+ wait 0xc4df87f8 bash 1169 1167 1167 1001 S select 0xc4ab7e24 sshd 1167 1054 1167 0 Ss sbwait 0xc4e0ed98 sshd 1166 1 1166 0 Ss+ ttyin 0xc483a070 getty 1165 1 1165 0 Ss+ ttyin 0xc483a270 getty 1164 1 1164 0 Ss+ ttyin 0xc468ee70 getty 1163 1 1163 0 Ss+ ttyin 0xc468ec70 getty 1162 1 1162 0 Ss+ ttyin 0xc4820870 getty 1161 1 1161 0 Ss+ ttyin 0xc4820470 getty 1160 1 1160 0 Ss+ ttyin 0xc468ea70 getty 1159 1 1159 0 Ss+ ttyin 0xc468e670 getty 1137 1 1137 0 Ss select 0xc4ab7ce4 inetd 1113 1 1113 0 Ss select 0xc4d1bc64 moused 1095 1 1095 0 Ss wait 0xc4bff7f8 watchdogd 1073 1 1073 0 Ss nanslp 0xc0dfa744 cron 1067 1 1067 25 Ss pause 0xc4df7da0 sendmail 1061 1 1061 0 Ss select 0xc4d1b324 sendmail 1054 1 1054 0 Ss select 0xc4a3ca64 sshd 1017 1 1017 0 Ls *buf queu 0xc51a8000 ntpd 918 917 917 0 S (threaded) nfsd 100104 S rpcsvc 0xc4ab6350 nfsd: service 100103 S rpcsvc 0xc4ab6310 nfsd: service 100102 S rpcsvc 0xc4ab62d0 nfsd: service 100076 S rpcsvc 0xc4d1a6d0 nfsd: master 917 1 917 0 Ss select 0xc4a88324 nfsd 915 1 915 0 Ss select 0xc4836264 mountd 820 1 820 0 Ss select 0xc4d1ac24 rpcbind 746 1 746 0 Ls *buf queu 0xc51a8000 syslogd 616 1 616 0 Ss select 0xc4a3b3a4 devd 19 0 0 0 SL flowclea 0xc0f67288 [flowcleaner] 18 0 0 0 LL *buf queu 0xc51a8000 [softdepflush] 17 0 0 0 SL vlruwt 0xc4a51aa0 [vnlru] 16 0 0 0 LL *Softdep 0xc4dff480 [syncer] 15 0 0 0 LL *Softdep 0xc4dff480 [bufdaemon] 9 0 0 0 SL pgzero 0xc0f73894 [pagezero] 8 0 0 0 SL psleep 0xc0f734c4 [vmdaemon] 7 0 0 0 SL psleep 0xc0f7348c [pagedaemon] 6 0 0 0 SL - 0xc468e83c [fdc0] 14 0 0 0 SL (threaded) [usb] 100034 D - 0xc479edac [usbus0] 100033 D - 0xc479ed7c [usbus0] 100032 D - 0xc479ed4c [usbus0] 100031 D - 0xc479ed1c [usbus0] 5 0 0 0 SL ccb_scan 0xc0dc6954 [xpt_thrd] 13 0 0 0 SL - 0xc0dfa5a4 [yarrow] 4 0 0 0 SL - 0xc0df8364 [g_down] 3 0 0 0 LL *Softdep 0xc4dff480 [g_up] 2 0 0 0 SL - 0xc0df8358 [g_event] 12 0 0 0 WL (threaded) [intr] 100042 I [irq7: ppc0] 100040 I [swi0: uart uart] 100039 I [irq12: psm0] 100038 I [irq1: atkbd0] 100037 I [irq15: ata1] 100036 I [irq14: ata0] 100035 I [irq17: fxp0] 100030 I [irq16: uhci0] 100028 I [irq9: acpi0] 100024 I [swi2: cambio] 100022 I [swi6: task queue] 100021 I [swi6: Giant taskq] 100019 I [swi5: +] 100012 I [swi4: clock] 100011 I [swi4: clock] 100010 I [swi4: clock] 100009 I [swi4: clock] 100008 I [swi3: vm] 100007 I [swi1: netisr 0] 11 0 0 0 RL (threaded) [idle] 100006 Run CPU 0 [idle: cpu0] 100005 Run CPU 1 [idle: cpu1] 100004 Run CPU 2 [idle: cpu2] 100003 Run CPU 3 [idle: cpu3] 1 0 1 0 SLs wait 0xc457ad48 [init] 10 0 0 0 SL audit_wo 0xc0f722c0 [audit] 0 0 0 0 SLs (threaded) [kernel] 100029 D - 0xc4782340 [em0 taskq] 100027 D - 0xc4749100 [acpi_task_2] 100026 D - 0xc4749100 [acpi_task_1] 100025 D - 0xc4749100 [acpi_task_0] 100020 D - 0xc4749380 [thread taskq] 100018 D - 0xc4749600 [kqueue taskq] 100016 D - 0xc4561dc0 [firmware taskq] 100000 D sched 0xc0df8440 [swapper] db:0:ps> allt Tracing command cron pid 1906 tid 100075 td 0xc4c01b40 sched_switch(c4c01b40,0,103,18c,9740aa64,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c01b40,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6d43bc8,c0cdafa5,c4c01b40,0,c4fb9c40,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6d43bc8,c4b5f15c,218,e6d43be0,...) at VOP_READ_APV+0xc5 vn_read(c4fb9c40,e6d43c58,c4c1d100,0,c4c01b40,...) at vn_read+0x208 dofileread(e6d43c58,ffffffff,ffffffff,0,c4fb9c40,...) at dofileread+0x96 kern_readv(c4c01b40,3,e6d43c58,e6d43c78,1,...) at kern_readv+0x58 read(c4c01b40,e6d43cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6d43d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1905 tid 100096 td 0xc4c64900 sched_switch(c4c64900,0,104,191,97274554,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c64900,0,c0ca10ba,260,c4c64900,...) at sleepq_switch+0x15f sleepq_wait(c4af7fe8,0,e6dadbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4af7fe8,c4af7dd0,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c4c64900,80000034,0,e6dadc78,c4c64900,...) at fork1+0x155f vfork(c4c64900,e6dadcf8,c,c4c64900,c0d88838,...) at vfork+0x29 syscall(e6dadd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1904 tid 100262 td 0xc5e2c6c0 sched_switch(c5e2c6c0,0,103,18c,295ba764,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c5e2c6c0,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e7041bc8,c0cdafa5,c5e2c6c0,0,c4b007e0,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e7041bc8,c4b5f15c,218,e7041be0,...) at VOP_READ_APV+0xc5 vn_read(c4b007e0,e7041c58,c4c1d100,0,c5e2c6c0,...) at vn_read+0x208 dofileread(e7041c58,ffffffff,ffffffff,0,c4b007e0,...) at dofileread+0x96 kern_readv(c5e2c6c0,3,e7041c58,e7041c78,1,...) at kern_readv+0x58 read(c5e2c6c0,e7041cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e7041d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1903 tid 100112 td 0xc4c1ab40 sched_switch(c4c1ab40,0,104,191,29420928,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c1ab40,0,c0ca10ba,260,c4c1ab40,...) at sleepq_switch+0x15f sleepq_wait(c95537f0,0,e6e01bec,1,0,...) at sleepq_wait+0x63 _cv_wait(c95537f0,c95535d8,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c4c1ab40,80000034,0,e6e01c78,c4c1ab40,...) at fork1+0x155f vfork(c4c1ab40,e6e01cf8,c,c4c1ab40,c0d88838,...) at vfork+0x29 syscall(e6e01d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1902 tid 100243 td 0xc5e2cd80 sched_switch(c5e2cd80,0,103,18c,72296742,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c5e2cd80,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6feabc8,c0cdafa5,c5e2cd80,0,c4b2b5b0,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6feabc8,c4b5f15c,218,e6feabe0,...) at VOP_READ_APV+0xc5 vn_read(c4b2b5b0,e6feac58,c4c1d100,0,c5e2cd80,...) at vn_read+0x208 dofileread(e6feac58,ffffffff,ffffffff,0,c4b2b5b0,...) at dofileread+0x96 kern_readv(c5e2cd80,3,e6feac58,e6feac78,1,...) at kern_readv+0x58 read(c5e2cd80,e6feacf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6fead38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1901 tid 100236 td 0xc5e2dd80 sched_switch(c5e2dd80,0,104,191,720fa82a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c5e2dd80,0,c0ca10ba,260,c5e2dd80,...) at sleepq_switch+0x15f sleepq_wait(c51c7fe8,0,e6fcfbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c51c7fe8,c51c7dd0,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c5e2dd80,80000034,0,e6fcfc78,c5e2dd80,...) at fork1+0x155f vfork(c5e2dd80,e6fcfcf8,c,c5e2dd80,c0d88838,...) at vfork+0x29 syscall(e6fcfd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1900 tid 100090 td 0xc4c656c0 sched_switch(c4c656c0,0,103,18c,4439622,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c656c0,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6d9bbc8,c0cdafa5,c4c656c0,0,c4b588c0,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6d9bbc8,c4b5f15c,218,e6d9bbe0,...) at VOP_READ_APV+0xc5 vn_read(c4b588c0,e6d9bc58,c4c1d100,0,c4c656c0,...) at vn_read+0x208 dofileread(e6d9bc58,ffffffff,ffffffff,0,c4b588c0,...) at dofileread+0x96 kern_readv(c4c656c0,3,e6d9bc58,e6d9bc78,1,...) at kern_readv+0x58 read(c4c656c0,e6d9bcf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6d9bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1899 tid 100244 td 0xc5e2cb40 sched_switch(c5e2cb40,0,104,191,429e57c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c5e2cb40,0,c0ca10ba,260,c5e2cb40,...) at sleepq_switch+0x15f sleepq_wait(c4c60fe8,0,e6fedbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4c60fe8,c4c60dd0,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c5e2cb40,80000034,0,e6fedc78,c5e2cb40,...) at fork1+0x155f vfork(c5e2cb40,e6fedcf8,c,c5e2cb40,c0d88838,...) at vfork+0x29 syscall(e6fedd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1898 tid 100099 td 0xc4c17000 sched_switch(c4c17000,0,103,18c,bafb3f8c,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c17000,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6db6bc8,c0cdafa5,c4c17000,0,c4b58818,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6db6bc8,c4b5f15c,218,e6db6be0,...) at VOP_READ_APV+0xc5 vn_read(c4b58818,e6db6c58,c4c1d100,0,c4c17000,...) at vn_read+0x208 dofileread(e6db6c58,ffffffff,ffffffff,0,c4b58818,...) at dofileread+0x96 kern_readv(c4c17000,3,e6db6c58,e6db6c78,1,...) at kern_readv+0x58 read(c4c17000,e6db6cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6db6d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1897 tid 100234 td 0xc5e2e240 sched_switch(c5e2e240,0,104,191,bae14f30,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c5e2e240,0,c0ca10ba,260,c5e2e240,...) at sleepq_switch+0x15f sleepq_wait(c4c00fe8,0,e6fc7bec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4c00fe8,c4c00dd0,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c5e2e240,80000034,0,e6fc7c78,c5e2e240,...) at fork1+0x155f vfork(c5e2e240,e6fc7cf8,c,c5e2e240,c0d88838,...) at vfork+0x29 syscall(e6fc7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command sendmail pid 1896 tid 100106 td 0xc4b1a000 sched_switch(c4b1a000,0,103,18c,344a23ac,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4b1a000,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(800,4000,0,a72,4,...) at getnewbuf+0x5e getblk(c4e192b8,0,0,800,0,...) at getblk+0x412 breadn(c4e192b8,0,0,800,0,...) at breadn+0x44 bread(c4e192b8,0,0,800,0,...) at bread+0x4c ffs_read(e6defba0,c0cdafa5,0,0,e6defc00,...) at ffs_read+0x2e4 VOP_READ_APV(c0daad00,e6defba0,c0be05c5,e6defb6c,e6defc00,...) at VOP_READ_APV+0xc5 ufs_readdir(e6defc20,c0cdaedc,0,0,c4e192b8,...) at ufs_readdir+0xcf VOP_READDIR_APV(c0daad00,e6defc20,c0cab46b,1000,1000,...) at VOP_READDIR_APV+0xc5 kern_getdirentries(c4b1a000,4,28553000,1000,e6defc74,...) at kern_getdirentries+0x214 getdirentries(c4b1a000,e6defcf8,10,c4b1a000,c0d89670,...) at getdirentries+0x31 syscall(e6defd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (196, FreeBSD ELF32, getdirentries), eip = 0x283bbc9f, esp = 0xbfbfc4fc, ebp = 0xbfbfc528 --- Tracing command sendmail pid 1895 tid 100081 td 0xc4c17b40 sched_switch(c4c17b40,0,103,18c,275b1662,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c17b40,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(800,4000,0,a72,4,...) at getnewbuf+0x5e getblk(c4b5d6cc,0,0,800,0,...) at getblk+0x412 breadn(c4b5d6cc,0,0,800,0,...) at breadn+0x44 bread(c4b5d6cc,0,0,800,0,...) at bread+0x4c ffs_read(e6d7bba0,c0cdafa5,0,0,e6d7bc00,...) at ffs_read+0x2e4 VOP_READ_APV(c0daad00,e6d7bba0,c0be05c5,e6d7bb6c,e6d7bc00,...) at VOP_READ_APV+0xc5 ufs_readdir(e6d7bc20,c0cdaedc,0,0,c4b5d6cc,...) at ufs_readdir+0xcf VOP_READDIR_APV(c0daad00,e6d7bc20,c0cab46b,1000,1000,...) at VOP_READDIR_APV+0xc5 kern_getdirentries(c4c17b40,4,2854f000,1000,e6d7bc74,...) at kern_getdirentries+0x214 getdirentries(c4c17b40,e6d7bcf8,10,c4c17b40,c0d89670,...) at getdirentries+0x31 syscall(e6d7bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (196, FreeBSD ELF32, getdirentries), eip = 0x283bbc9f, esp = 0xbfbfb9ac, ebp = 0xbfbfb9d8 --- Tracing command cron pid 1894 tid 100097 td 0xc4c646c0 sched_switch(c4c646c0,0,103,18c,3cd5038,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c646c0,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6db0bc8,c0cdafa5,c4c646c0,0,c4fb9038,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6db0bc8,c4b5f15c,218,e6db0be0,...) at VOP_READ_APV+0xc5 vn_read(c4fb9038,e6db0c58,c4c1d100,0,c4c646c0,...) at vn_read+0x208 dofileread(e6db0c58,ffffffff,ffffffff,0,c4fb9038,...) at dofileread+0x96 kern_readv(c4c646c0,3,e6db0c58,e6db0c78,1,...) at kern_readv+0x58 read(c4c646c0,e6db0cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6db0d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1893 tid 100233 td 0xc51a9b40 sched_switch(c51a9b40,0,104,191,3b393a8,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c51a9b40,0,c0ca10ba,260,c51a9b40,...) at sleepq_switch+0x15f sleepq_wait(c4c16d40,0,e6fc3bec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4c16d40,c4c16b28,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c51a9b40,80000034,0,e6fc3c78,c51a9b40,...) at fork1+0x155f vfork(c51a9b40,e6fc3cf8,c,c51a9b40,c0d88838,...) at vfork+0x29 syscall(e6fc3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1892 tid 100256 td 0xc774f900 sched_switch(c774f900,0,103,18c,71467c8e,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c774f900,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e702fbc8,c0cdafa5,c774f900,0,c4fb9070,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e702fbc8,c4b5f15c,218,e702fbe0,...) at VOP_READ_APV+0xc5 vn_read(c4fb9070,e702fc58,c4c1d100,0,c774f900,...) at vn_read+0x208 dofileread(e702fc58,ffffffff,ffffffff,0,c4fb9070,...) at dofileread+0x96 kern_readv(c774f900,3,e702fc58,e702fc78,1,...) at kern_readv+0x58 read(c774f900,e702fcf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e702fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1891 tid 100101 td 0xc4c05b40 sched_switch(c4c05b40,0,104,191,712c89d4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c05b40,0,c0ca10ba,260,c4c05b40,...) at sleepq_switch+0x15f sleepq_wait(c76d22a0,0,e6dbebec,1,0,...) at sleepq_wait+0x63 _cv_wait(c76d22a0,c76d2088,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c4c05b40,80000034,0,e6dbec78,c4c05b40,...) at fork1+0x155f vfork(c4c05b40,e6dbecf8,c,c4c05b40,c0d88838,...) at vfork+0x29 syscall(e6dbed38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1890 tid 100080 td 0xc4c17d80 sched_switch(c4c17d80,0,103,18c,4c9c6e32,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c17d80,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6d77bc8,c0cdafa5,c4c17d80,0,c4b2b7e0,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6d77bc8,c4b5f15c,218,e6d77be0,...) at VOP_READ_APV+0xc5 vn_read(c4b2b7e0,e6d77c58,c4c1d100,0,c4c17d80,...) at vn_read+0x208 dofileread(e6d77c58,ffffffff,ffffffff,0,c4b2b7e0,...) at dofileread+0x96 kern_readv(c4c17d80,3,e6d77c58,e6d77c78,1,...) at kern_readv+0x58 read(c4c17d80,e6d77cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6d77d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1889 tid 100255 td 0xc774fb40 sched_switch(c774fb40,0,104,191,4c82c716,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c774fb40,0,c0ca10ba,260,c774fb40,...) at sleepq_switch+0x15f sleepq_wait(c4c15fe8,0,e702cbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4c15fe8,c4c15dd0,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c774fb40,80000034,0,e702cc78,c774fb40,...) at fork1+0x155f vfork(c774fb40,e702ccf8,c,c774fb40,c0d88838,...) at vfork+0x29 syscall(e702cd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1888 tid 100059 td 0xc4af86c0 sched_switch(c4af86c0,0,103,18c,955b7ee8,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4af86c0,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6cf0bc8,c0cdafa5,c4af86c0,0,c4aff4d0,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6cf0bc8,c4b5f15c,218,e6cf0be0,...) at VOP_READ_APV+0xc5 vn_read(c4aff4d0,e6cf0c58,c4c1d100,0,c4af86c0,...) at vn_read+0x208 dofileread(e6cf0c58,ffffffff,ffffffff,0,c4aff4d0,...) at dofileread+0x96 kern_readv(c4af86c0,3,e6cf0c58,e6cf0c78,1,...) at kern_readv+0x58 read(c4af86c0,e6cf0cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6cf0d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1887 tid 100240 td 0xc5e2d480 sched_switch(c5e2d480,0,104,191,954159bc,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c5e2d480,0,c0ca10ba,260,c5e2d480,...) at sleepq_switch+0x15f sleepq_wait(c4af72a0,0,e6fdfbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4af72a0,c4af7088,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c5e2d480,80000034,0,e6fdfc78,c5e2d480,...) at fork1+0x155f vfork(c5e2d480,e6fdfcf8,c,c5e2d480,c0d88838,...) at vfork+0x29 syscall(e6fdfd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1886 tid 100250 td 0xc77506c0 sched_switch(c77506c0,0,103,18c,49743080,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c77506c0,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e701dbc8,c0cdafa5,c77506c0,0,c4aff7a8,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e701dbc8,c4b5f15c,218,e701dbe0,...) at VOP_READ_APV+0xc5 vn_read(c4aff7a8,e701dc58,c4c1d100,0,c77506c0,...) at vn_read+0x208 dofileread(e701dc58,ffffffff,ffffffff,0,c4aff7a8,...) at dofileread+0x96 kern_readv(c77506c0,3,e701dc58,e701dc78,1,...) at kern_readv+0x58 read(c77506c0,e701dcf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e701dd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1885 tid 100072 td 0xc4c04240 sched_switch(c4c04240,0,103,18c,496c91b0,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c04240,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6d37bc8,c0cdafa5,c4c04240,0,c4cf0620,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6d37bc8,c4b5f15c,218,e6d37be0,...) at VOP_READ_APV+0xc5 vn_read(c4cf0620,e6d37c58,c4c1d100,0,c4c04240,...) at vn_read+0x208 dofileread(e6d37c58,ffffffff,ffffffff,0,c4cf0620,...) at dofileread+0x96 kern_readv(c4c04240,3,e6d37c58,e6d37c78,1,...) at kern_readv+0x58 read(c4c04240,e6d37cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6d37d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1884 tid 100053 td 0xc4b1ab40 sched_switch(c4b1ab40,0,103,18c,4951ab30,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4b1ab40,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6cd5bc8,c0cdafa5,c4b1ab40,0,c9519038,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6cd5bc8,c4b5f15c,218,e6cd5be0,...) at VOP_READ_APV+0xc5 vn_read(c9519038,e6cd5c58,c4c1d100,0,c4b1ab40,...) at vn_read+0x208 dofileread(e6cd5c58,ffffffff,ffffffff,0,c9519038,...) at dofileread+0x96 kern_readv(c4b1ab40,3,e6cd5c58,e6cd5c78,1,...) at kern_readv+0x58 read(c4b1ab40,e6cd5cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6cd5d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1883 tid 100116 td 0xc4dfbd80 sched_switch(c4dfbd80,0,104,191,4956b9fc,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4dfbd80,0,c0ca10ba,260,c4dfbd80,...) at sleepq_switch+0x15f sleepq_wait(c76d32a0,0,e6e0dbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c76d32a0,c76d3088,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c4dfbd80,80000034,0,e6e0dc78,c4dfbd80,...) at fork1+0x155f vfork(c4dfbd80,e6e0dcf8,c,c4dfbd80,c0d88838,...) at vfork+0x29 syscall(e6e0dd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1882 tid 100119 td 0xc4dfb900 sched_switch(c4dfb900,0,104,191,494e2b20,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4dfb900,0,c0ca10ba,260,c4dfb900,...) at sleepq_switch+0x15f sleepq_wait(c4bff7f0,0,e6e16bec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4bff7f0,c4bff5d8,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c4dfb900,80000034,0,e6e16c78,c4dfb900,...) at fork1+0x155f vfork(c4dfb900,e6e16cf8,c,c4dfb900,c0d88838,...) at vfork+0x29 syscall(e6e16d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1881 tid 100123 td 0xc4e00000 sched_switch(c4e00000,0,104,191,49270df4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4e00000,0,c0ca10ba,260,c4e00000,...) at sleepq_switch+0x15f sleepq_wait(c4a512a0,0,e6e22bec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4a512a0,c4a51088,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c4e00000,80000034,0,e6e22c78,c4e00000,...) at fork1+0x155f vfork(c4e00000,e6e22cf8,c,c4e00000,c0d88838,...) at vfork+0x29 syscall(e6e22d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1880 tid 100078 td 0xc4c1a240 sched_switch(c4c1a240,0,103,18c,920a8b98,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c1a240,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6d63bc8,c0cdafa5,c4c1a240,0,c9519188,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6d63bc8,c4b5f15c,218,e6d63be0,...) at VOP_READ_APV+0xc5 vn_read(c9519188,e6d63c58,c4c1d100,0,c4c1a240,...) at vn_read+0x208 dofileread(e6d63c58,ffffffff,ffffffff,0,c9519188,...) at dofileread+0x96 kern_readv(c4c1a240,3,e6d63c58,e6d63c78,1,...) at kern_readv+0x58 read(c4c1a240,e6d63cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6d63d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1879 tid 100055 td 0xc4b1a6c0 sched_switch(c4b1a6c0,0,103,18c,91fed1d0,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4b1a6c0,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6cddbc8,c0cdafa5,c4b1a6c0,0,c4b63c08,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6cddbc8,c4b5f15c,218,e6cddbe0,...) at VOP_READ_APV+0xc5 vn_read(c4b63c08,e6cddc58,c4c1d100,0,c4b1a6c0,...) at vn_read+0x208 dofileread(e6cddc58,ffffffff,ffffffff,0,c4b63c08,...) at dofileread+0x96 kern_readv(c4b1a6c0,3,e6cddc58,e6cddc78,1,...) at kern_readv+0x58 read(c4b1a6c0,e6cddcf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6cddd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1878 tid 100085 td 0xc481b6c0 sched_switch(c481b6c0,0,104,191,91ed5fb8,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c481b6c0,0,c0ca10ba,260,c481b6c0,...) at sleepq_switch+0x15f sleepq_wait(c4c16548,0,e6d8bbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4c16548,c4c16330,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c481b6c0,80000034,0,e6d8bc78,c481b6c0,...) at fork1+0x155f vfork(c481b6c0,e6d8bcf8,c,c481b6c0,c0d88838,...) at vfork+0x29 syscall(e6d8bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1877 tid 100065 td 0xc481b900 sched_switch(c481b900,0,104,191,91da16a2,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c481b900,0,c0ca10ba,260,c481b900,...) at sleepq_switch+0x15f sleepq_wait(c474bd40,0,e6d0bbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c474bd40,c474bb28,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c481b900,80000034,0,e6d0bc78,c481b900,...) at fork1+0x155f vfork(c481b900,e6d0bcf8,c,c481b900,c0d88838,...) at vfork+0x29 syscall(e6d0bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1876 tid 100125 td 0xc4dfdb40 sched_switch(c4dfdb40,0,103,18c,dabbca62,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4dfdb40,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6e28bc8,c0cdafa5,c4dfdb40,0,c4b589d8,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6e28bc8,c4b5f15c,218,e6e28be0,...) at VOP_READ_APV+0xc5 vn_read(c4b589d8,e6e28c58,c4c1d100,0,c4dfdb40,...) at vn_read+0x208 dofileread(e6e28c58,ffffffff,ffffffff,0,c4b589d8,...) at dofileread+0x96 kern_readv(c4dfdb40,3,e6e28c58,e6e28c78,1,...) at kern_readv+0x58 read(c4dfdb40,e6e28cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6e28d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1875 tid 100259 td 0xc774f240 sched_switch(c774f240,0,104,191,daa22a6a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c774f240,0,c0ca10ba,260,c774f240,...) at sleepq_switch+0x15f sleepq_wait(c4df87f0,0,e7038bec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4df87f0,c4df85d8,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c774f240,80000034,0,e7038c78,c774f240,...) at fork1+0x155f vfork(c774f240,e7038cf8,c,c774f240,c0d88838,...) at vfork+0x29 syscall(e7038d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command sendmail pid 1874 tid 100260 td 0xc774f000 sched_switch(c774f000,0,103,18c,ec312798,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c774f000,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(800,4000,0,a72,4,...) at getnewbuf+0x5e getblk(c4e192b8,0,0,800,0,...) at getblk+0x412 breadn(c4e192b8,0,0,800,0,...) at breadn+0x44 bread(c4e192b8,0,0,800,0,...) at bread+0x4c ffs_read(e703bba0,c0cdafa5,0,0,e703bc00,...) at ffs_read+0x2e4 VOP_READ_APV(c0daad00,e703bba0,c0be05c5,e703bb6c,e703bc00,...) at VOP_READ_APV+0xc5 ufs_readdir(e703bc20,c0cdaedc,0,0,c4e192b8,...) at ufs_readdir+0xcf VOP_READDIR_APV(c0daad00,e703bc20,c0cab46b,1000,1000,...) at VOP_READDIR_APV+0xc5 kern_getdirentries(c774f000,4,28553000,1000,e703bc74,...) at kern_getdirentries+0x214 getdirentries(c774f000,e703bcf8,10,c774f000,c0d89670,...) at getdirentries+0x31 syscall(e703bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (196, FreeBSD ELF32, getdirentries), eip = 0x283bbc9f, esp = 0xbfbfc4fc, ebp = 0xbfbfc528 --- Tracing command sendmail pid 1873 tid 100257 td 0xc774f6c0 sched_switch(c774f6c0,0,103,18c,df426500,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c774f6c0,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(800,4000,0,a72,4,...) at getnewbuf+0x5e getblk(c4b5d6cc,0,0,800,0,...) at getblk+0x412 breadn(c4b5d6cc,0,0,800,0,...) at breadn+0x44 bread(c4b5d6cc,0,0,800,0,...) at bread+0x4c ffs_read(e7032ba0,c0cdafa5,0,0,e7032c00,...) at ffs_read+0x2e4 VOP_READ_APV(c0daad00,e7032ba0,c0be05c5,e7032b6c,e7032c00,...) at VOP_READ_APV+0xc5 ufs_readdir(e7032c20,c0cdaedc,0,0,c4b5d6cc,...) at ufs_readdir+0xcf VOP_READDIR_APV(c0daad00,e7032c20,c0cab46b,1000,1000,...) at VOP_READDIR_APV+0xc5 kern_getdirentries(c774f6c0,4,2854f000,1000,e7032c74,...) at kern_getdirentries+0x214 getdirentries(c774f6c0,e7032cf8,10,c774f6c0,c0d89670,...) at getdirentries+0x31 syscall(e7032d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (196, FreeBSD ELF32, getdirentries), eip = 0x283bbc9f, esp = 0xbfbfb9ac, ebp = 0xbfbfb9d8 --- Tracing command cron pid 1872 tid 100246 td 0xc4c05900 sched_switch(c4c05900,0,103,18c,23a9d5a8,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c05900,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e7011bc8,c0cdafa5,c4c05900,0,c4b00150,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e7011bc8,c4b5f15c,218,e7011be0,...) at VOP_READ_APV+0xc5 vn_read(c4b00150,e7011c58,c4c1d100,0,c4c05900,...) at vn_read+0x208 dofileread(e7011c58,ffffffff,ffffffff,0,c4b00150,...) at dofileread+0x96 kern_readv(c4c05900,3,e7011c58,e7011c78,1,...) at kern_readv+0x58 read(c4c05900,e7011cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e7011d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1871 tid 100261 td 0xc5e2ed80 sched_switch(c5e2ed80,0,104,191,239027e4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c5e2ed80,0,c0ca10ba,260,c5e2ed80,...) at sleepq_switch+0x15f sleepq_wait(c76d3d40,0,e703ebec,1,0,...) at sleepq_wait+0x63 _cv_wait(c76d3d40,c76d3b28,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c5e2ed80,80000034,0,e703ec78,c5e2ed80,...) at fork1+0x155f vfork(c5e2ed80,e703ecf8,c,c5e2ed80,c0d88838,...) at vfork+0x29 syscall(e703ed38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1870 tid 100249 td 0xc4c05240 sched_switch(c4c05240,0,103,18c,ff06f2a0,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c05240,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e701abc8,c0cdafa5,c4c05240,0,c4cf01f8,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e701abc8,c4b5f15c,218,e701abe0,...) at VOP_READ_APV+0xc5 vn_read(c4cf01f8,e701ac58,c4c1d100,0,c4c05240,...) at vn_read+0x208 dofileread(e701ac58,ffffffff,ffffffff,0,c4cf01f8,...) at dofileread+0x96 kern_readv(c4c05240,3,e701ac58,e701ac78,1,...) at kern_readv+0x58 read(c4c05240,e701acf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e701ad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1869 tid 100070 td 0xc4c046c0 sched_switch(c4c046c0,0,104,191,feed674a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c046c0,0,c0ca10ba,260,c4c046c0,...) at sleepq_switch+0x15f sleepq_wait(c76d3548,0,e6d2fbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c76d3548,c76d3330,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c4c046c0,80000034,0,e6d2fc78,c4c046c0,...) at fork1+0x155f vfork(c4c046c0,e6d2fcf8,c,c4c046c0,c0d88838,...) at vfork+0x29 syscall(e6d2fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1868 tid 100245 td 0xc5e2c900 sched_switch(c5e2c900,0,103,18c,6c82e114,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c5e2c900,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e7009bc8,c0cdafa5,c5e2c900,0,c4b00e38,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e7009bc8,c4b5f15c,218,e7009be0,...) at VOP_READ_APV+0xc5 vn_read(c4b00e38,e7009c58,c4c1d100,0,c5e2c900,...) at vn_read+0x208 dofileread(e7009c58,ffffffff,ffffffff,0,c4b00e38,...) at dofileread+0x96 kern_readv(c5e2c900,3,e7009c58,e7009c78,1,...) at kern_readv+0x58 read(c5e2c900,e7009cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e7009d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1867 tid 100074 td 0xc4c01d80 sched_switch(c4c01d80,0,104,191,6c698010,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c01d80,0,c0ca10ba,260,c4c01d80,...) at sleepq_switch+0x15f sleepq_wait(c51c7a98,0,e6d3fbec,1,0,...) at sleepq_wait+0x63 _cv_wait(c51c7a98,c51c7880,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c4c01d80,80000034,0,e6d3fc78,c4c01d80,...) at fork1+0x155f vfork(c4c01d80,e6d3fcf8,c,c4c01d80,c0d88838,...) at vfork+0x29 syscall(e6d3fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1866 tid 100130 td 0xc4dfd000 sched_switch(c4dfd000,0,103,18c,b54bd32c,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4dfd000,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6e37bc8,c0cdafa5,c4dfd000,0,c4cf0460,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6e37bc8,c4b5f15c,218,e6e37be0,...) at VOP_READ_APV+0xc5 vn_read(c4cf0460,e6e37c58,c4c1d100,0,c4dfd000,...) at vn_read+0x208 dofileread(e6e37c58,ffffffff,ffffffff,0,c4cf0460,...) at dofileread+0x96 kern_readv(c4dfd000,3,e6e37c58,e6e37c78,1,...) at kern_readv+0x58 read(c4dfd000,e6e37cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6e37d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1865 tid 100253 td 0xc7750000 sched_switch(c7750000,0,104,191,b5313784,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c7750000,0,c0ca10ba,260,c7750000,...) at sleepq_switch+0x15f sleepq_wait(c4df7a98,0,e7026bec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4df7a98,c4df7880,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c7750000,80000034,0,e7026c78,c7750000,...) at fork1+0x155f vfork(c7750000,e7026cf8,c,c7750000,c0d88838,...) at vfork+0x29 syscall(e7026d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1864 tid 100113 td 0xc4b18240 sched_switch(c4b18240,0,103,18c,6c049308,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4b18240,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6e04bc8,c0cdafa5,c4b18240,0,c4aff850,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6e04bc8,c4b5f15c,218,e6e04be0,...) at VOP_READ_APV+0xc5 vn_read(c4aff850,e6e04c58,c4c1d100,0,c4b18240,...) at vn_read+0x208 dofileread(e6e04c58,ffffffff,ffffffff,0,c4aff850,...) at dofileread+0x96 kern_readv(c4b18240,3,e6e04c58,e6e04c78,1,...) at kern_readv+0x58 read(c4b18240,e6e04cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6e04d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1863 tid 100242 td 0xc5e2d000 sched_switch(c5e2d000,0,104,191,6beb11b8,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c5e2d000,0,c0ca10ba,260,c5e2d000,...) at sleepq_switch+0x15f sleepq_wait(c4df4d40,0,e6fe7bec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4df4d40,c4df4b28,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c5e2d000,80000034,0,e6fe7c78,c5e2d000,...) at fork1+0x155f vfork(c5e2d000,e6fe7cf8,c,c5e2d000,c0d88838,...) at vfork+0x29 syscall(e6fe7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command cron pid 1862 tid 100092 td 0xc4c65240 sched_switch(c4c65240,0,103,18c,fe1a67d8,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c65240,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(4000,4000,0,a72,4b0e,...) at getnewbuf+0x5e getblk(c4b5f15c,0,0,4000,0,...) at getblk+0x412 cluster_read(c4b5f15c,a000,0,0,0,...) at cluster_read+0xfa ffs_read(e6da1bc8,c0cdafa5,c4c65240,0,c4cf0968,...) at ffs_read+0x349 VOP_READ_APV(c0daad00,e6da1bc8,c4b5f15c,218,e6da1be0,...) at VOP_READ_APV+0xc5 vn_read(c4cf0968,e6da1c58,c4c1d100,0,c4c65240,...) at vn_read+0x208 dofileread(e6da1c58,ffffffff,ffffffff,0,c4cf0968,...) at dofileread+0x96 kern_readv(c4c65240,3,e6da1c58,e6da1c78,1,...) at kern_readv+0x58 read(c4c65240,e6da1cf8,c,c0ca3814,c0d88154,...) at read+0x4f syscall(e6da1d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281980b3, esp = 0xbfbfe2bc, ebp = 0xbfbfe3d8 --- Tracing command cron pid 1861 tid 100087 td 0xc481b480 sched_switch(c481b480,0,104,191,fe00474c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c481b480,0,c0ca10ba,260,c481b480,...) at sleepq_switch+0x15f sleepq_wait(c4c60a98,0,e6d92bec,1,0,...) at sleepq_wait+0x63 _cv_wait(c4c60a98,c4c60880,c0c9805b,309,80000034,...) at _cv_wait+0x240 fork1(c481b480,80000034,0,e6d92c78,c481b480,...) at fork1+0x155f vfork(c481b480,e6d92cf8,c,c481b480,c0d88838,...) at vfork+0x29 syscall(e6d92d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (66, FreeBSD ELF32, vfork), eip = 0x280f57cc, esp = 0xbfbfe6a0, ebp = 0xbfbfec58 --- Tracing command sh pid 1860 tid 100077 td 0xc4c1a480 sched_switch(c4c1a480,0,103,18c,9834dd2c,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c1a480,0,c0ca7d25,5d0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,5d0,0,...) at _mtx_lock_flags+0xf7 bqrelse(d850b800,80,e6d54c58,800,0,...) at bqrelse+0x17c ffs_read(e6d54bc8,c0cdafa5,c4c1a480,0,c4aff8f8,...) at ffs_read+0x4cb VOP_READ_APV(c0daad00,e6d54bc8,c4c5bc3c,218,c483cd98,...) at VOP_READ_APV+0xc5 vn_read(c4aff8f8,e6d54c58,c4578100,0,c4c1a480,...) at vn_read+0x208 dofileread(e6d54c58,ffffffff,ffffffff,0,c4aff8f8,...) at dofileread+0x96 kern_readv(c4c1a480,5,e6d54c58,e6d54c78,1,...) at kern_readv+0x58 read(c4c1a480,e6d54cf8,c,c0c83ec2,c0d88154,...) at read+0x4f syscall(e6d54d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2806d783, esp = 0xbfbfe55c, ebp = 0xbfbfe608 --- Tracing command sleep pid 1859 tid 100131 td 0xc4dfcd80 sched_switch(c4dfcd80,0,103,18c,2cc7f54e,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4dfcd80,0,c0ca7d25,5d0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,5d0,c0c9b2ec,...) at _mtx_lock_flags+0xf7 bqrelse(d8500d60,0,c0ca7d25,e29,2df2f000,...) at bqrelse+0x17c bdwrite(d8500d60,c5fca900,100,4000,0,...) at bdwrite+0x290 ffs_update(c5f9c000,0,1,c4dfce24,c5f9c000,...) at ffs_update+0x350 ufs_inactive(e6e3abd8,c0cdb5a3,c5f9c0c4,c5f9c0c4,c5f9c000,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6e3abd8,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c5f9c0c4,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c5f9c000,c0c97e4f,15f,131,c087d3bc,...) at vrele+0x198 exit1(c4dfcd80,0,e6e3ad2c,c0bcadc4,c4dfcd80,...) at exit1+0xfd9 sys_exit(c4dfcd80,e6e3acf8,4,c4dfcd80,c0d8811c,...) at sys_exit+0x1d syscall(e6e3ad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (1, FreeBSD ELF32, sys_exit), eip = 0x280feedf, esp = 0xbfbfed00, ebp = 0xbfbfed0c --- Tracing command awk pid 1313 tid 100238 td 0xc5e2d900 sched_switch(c5e2d900,0,104,191,fb75aa72,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5e2d900,0,c0ca10ba,1a0,4c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4ce9188,4c,c0ca34f3,100,0,...) at sleepq_wait_sig+0x17 _sleep(c4ce9188,c4ce92f8,14c,c0ca34f3,0,...) at _sleep+0x354 pipe_read(c4b63738,e6fd7c58,c53a1c00,0,c5e2d900,...) at pipe_read+0x417 dofileread(e6fd7c58,ffffffff,ffffffff,0,c4b63738,...) at dofileread+0x96 kern_readv(c5e2d900,0,e6fd7c58,e6fd7c78,1,...) at kern_readv+0x58 read(c5e2d900,e6fd7cf8,c,0,c0d88154,...) at read+0x4f syscall(e6fd7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x281b20b3, esp = 0xbfbfe97c, ebp = 0xbfbfe998 --- Tracing command sh pid 1312 tid 100237 td 0xc5e2db40 sched_switch(c5e2db40,0,104,191,fb929650,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,5c,...) at mi_switch+0x200 sleepq_switch(c5e2db40,0,c0ca10ba,1a0,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c51e8d48,5c,c0ca38dc,100,0,...) at sleepq_wait_sig+0x17 _sleep(c51e8d48,c51e8dd0,15c,c0ca38dc,0,...) at _sleep+0x354 kern_wait(c5e2db40,ffffffff,e6fd3c74,2,0,...) at kern_wait+0xb76 wait4(c5e2db40,e6fd3cf8,10,c0ca38bb,c0d881c4,...) at wait4+0x3b syscall(e6fd3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2815e07b, esp = 0xbfbfe95c, ebp = 0xbfbfe978 --- Tracing command top pid 1309 tid 100062 td 0xc4af8000 sched_switch(c4af8000,0,104,191,bd901f44,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4af8000,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(e6cfea4c,c087d44a,c57ac350,0,c4af8000,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c57ac364,0,e6cfea7c,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c57ac364,c57ac350,3e9,603,c4cf0cb0,...) at _cv_timedwait_sig+0x250 seltdwait(e6cfec28,e6cfec30,c53bf900,c4af8000,363b335b,...) at seltdwait+0x8a kern_select(c4af8000,2,bfbfebec,0,0,e6cfec70,20,1,0) at kern_select+0x4f4 select(c4af8000,e6cfecf8,14,c0c84e00,c0d88b2c,...) at select+0x66 syscall(e6cfed38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x281e8033, esp = 0xbfbfeb8c, ebp = 0xbfbfece8 --- Tracing command sh pid 1308 tid 100052 td 0xc4b1ad80 sched_switch(c4b1ad80,0,104,191,eb24f3b6,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,5c,...) at mi_switch+0x200 sleepq_switch(c4b1ad80,0,c0ca10ba,1a0,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4a512a8,5c,c0ca38dc,100,0,...) at sleepq_wait_sig+0x17 _sleep(c4a512a8,c4a51330,15c,c0ca38dc,0,...) at _sleep+0x354 kern_wait(c4b1ad80,ffffffff,e6cd1c74,2,0,...) at kern_wait+0xb76 wait4(c4b1ad80,e6cd1cf8,10,c4b1ad80,c0d881c4,...) at wait4+0x3b syscall(e6cd1d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2815e07b, esp = 0xbfbfeb6c, ebp = 0xbfbfeb88 --- Tracing command sshd pid 1307 tid 100235 td 0xc5e2e000 sched_switch(c5e2e000,0,104,191,f640c818,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c5e2e000,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c5401b50,0,c0c9b2ec,c5e2e000,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c5401b64,0,e6fcba7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c5401b64,c5401b50,c0ca3342,603,c4affe70,...) at _cv_wait_sig+0x240 seltdwait(c4affe70,58,c5341580,c5e2e000,200246,...) at seltdwait+0xa2 kern_select(c5e2e000,c,286030b8,286030dc,0,0,20,0,28100c70) at kern_select+0x4f4 select(c5e2e000,e6fcbcf8,14,c0c84e00,c0d88b2c,...) at select+0x66 syscall(e6fcbd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x283ce033, esp = 0xbfbfde5c, ebp = 0xbfbfdea8 --- Tracing command sshd pid 1306 tid 100086 td 0xc4c17240 sched_switch(c4c17240,0,104,191,bd93025c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c17240,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c53cda90,0,c0c9b2ec,c4c17240,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c53cdaa4,0,e6d8ea7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c53cdaa4,c53cda90,c0ca3342,603,c4cf0c78,...) at _cv_wait_sig+0x240 seltdwait(c4cf0c78,58,c5a83380,c4c17240,200246,...) at seltdwait+0xa2 kern_select(c4c17240,a,286030b8,286030dc,0,0,20,0,28100c70) at kern_select+0x4f4 select(c4c17240,e6d8ecf8,14,c0c84e00,c0d88b2c,...) at select+0x66 syscall(e6d8ed38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x283ce033, esp = 0xbfbfde5c, ebp = 0xbfbfdea8 --- Tracing command tail pid 1305 tid 100117 td 0xc4dfbb40 sched_switch(c4dfbb40,0,104,191,95157d92,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,58,...) at mi_switch+0x200 sleepq_switch(c4dfbb40,0,c0ca10ba,1a0,58,...) at sleepq_switch+0x15f sleepq_catch_signals(3e9,c08c67e0,c4dfbb40,0,100,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c5703500,58,c0c97ca5,100,0,...) at sleepq_timedwait_sig+0x1a _sleep(c5703500,c5703500,158,c0c97ca5,3e9,...) at _sleep+0x31e kern_kevent(c4dfbb40,4,0,1,e6e10c58,...) at kern_kevent+0x364 kevent(c4dfbb40,e6e10cf8,18,c0c3c089,c0d8a8b4,...) at kevent+0x19b syscall(e6e10d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (363, FreeBSD ELF32, kevent), eip = 0x2815fcbb, esp = 0xbfbfeb5c, ebp = 0xbfbfec18 --- Tracing command sshd pid 1304 tid 100115 td 0xc4b18000 sched_switch(c4b18000,0,104,191,ab4c1206,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4b18000,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c592d4d0,0,c0c9b2ec,c4b18000,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c592d4e4,0,e6e0aa7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c592d4e4,c592d4d0,c0ca3342,603,c4b2b1c0,...) at _cv_wait_sig+0x240 seltdwait(c4b2b1c0,58,c532f180,c4b18000,200246,...) at seltdwait+0xa2 kern_select(c4b18000,c,286030b8,286030dc,0,0,20,0,28100c70) at kern_select+0x4f4 select(c4b18000,e6e0acf8,14,c0c84e00,c0d88b2c,...) at select+0x66 syscall(e6e0ad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x283ce033, esp = 0xbfbfde5c, ebp = 0xbfbfdea8 --- Tracing command sshd pid 1300 tid 100095 td 0xc4c64b40 sched_switch(c4c64b40,0,104,191,f4e587ca,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,58,...) at mi_switch+0x200 sleepq_switch(c4c64b40,0,c0ca10ba,1a0,58,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c502c58c,58,c0ca6e77,100,0,...) at sleepq_wait_sig+0x17 _sleep(c502c58c,c502c54c,158,c0ca6e77,0) at _sleep+0x354 sbwait(c502c528,4,c0ca6f46,5c5,c502c54c,...) at sbwait+0x76 soreceive_generic(c502c4d4,0,e6daac58,0,0,...) at soreceive_generic+0x3f0 soreceive(c502c4d4,0,e6daac58,0,0,0) at soreceive+0x38 soo_read(c4cf0c40,e6daac58,c53b3600,0,c4c64b40,...) at soo_read+0x4e dofileread(e6daac58,ffffffff,ffffffff,0,c4cf0c40,...) at dofileread+0x96 kern_readv(c4c64b40,5,e6daac58,e6daac78,1,...) at kern_readv+0x58 read(c4c64b40,e6daacf8,c,c0c3c089,c0d88154,...) at read+0x4f syscall(e6daad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x283ce0b3, esp = 0xbfbfde4c, ebp = 0xbfbfde88 --- Tracing command sshd pid 1299 tid 100232 td 0xc51a9d80 sched_switch(c51a9d80,0,104,191,f5e1a166,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,58,...) at mi_switch+0x200 sleepq_switch(c51a9d80,0,c0ca10ba,1a0,58,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c5cb80b8,58,c0ca6e77,100,0,...) at sleepq_wait_sig+0x17 _sleep(c5cb80b8,c5cb8078,158,c0ca6e77,0) at _sleep+0x354 sbwait(c5cb8054,4,c0ca6f46,5c5,c5cb8078,...) at sbwait+0x76 soreceive_generic(c5cb8000,0,e6fbfc58,0,0,...) at soreceive_generic+0x3f0 soreceive(c5cb8000,0,e6fbfc58,0,0,0) at soreceive+0x38 soo_read(c4b00690,e6fbfc58,c58c2780,0,c51a9d80,...) at soo_read+0x4e dofileread(e6fbfc58,ffffffff,ffffffff,0,c4b00690,...) at dofileread+0x96 kern_readv(c51a9d80,5,e6fbfc58,e6fbfc78,1,...) at kern_readv+0x58 read(c51a9d80,e6fbfcf8,c,c51a9d80,c0d88154,...) at read+0x4f syscall(e6fbfd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x283ce0b3, esp = 0xbfbfde4c, ebp = 0xbfbfde88 --- Tracing command sshd pid 1298 tid 100231 td 0xc51cf000 sched_switch(c51cf000,0,104,191,ec1a7c38,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,58,...) at mi_switch+0x200 sleepq_switch(c51cf000,0,c0ca10ba,1a0,58,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4de0bfc,58,c0ca6e77,100,0,...) at sleepq_wait_sig+0x17 _sleep(c4de0bfc,c4de0bbc,158,c0ca6e77,0) at _sleep+0x354 sbwait(c4de0b98,4,c0ca6f46,5c5,c4de0bbc,...) at sbwait+0x76 soreceive_generic(c4de0b44,0,e6fbbc58,0,0,...) at soreceive_generic+0x3f0 soreceive(c4de0b44,0,e6fbbc58,0,0,0) at soreceive+0x38 soo_read(c4b00bd0,e6fbbc58,c563d480,0,c51cf000,...) at soo_read+0x4e dofileread(e6fbbc58,ffffffff,ffffffff,0,c4b00bd0,...) at dofileread+0x96 kern_readv(c51cf000,5,e6fbbc58,e6fbbc78,1,...) at kern_readv+0x58 read(c51cf000,e6fbbcf8,c,c0c3c089,c0d88154,...) at read+0x4f syscall(e6fbbd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x283ce0b3, esp = 0xbfbfde4c, ebp = 0xbfbfde88 --- Tracing command mkdir pid 1297 tid 100230 td 0xc51cf240 sched_switch(c51cf240,0,104,191,a13afe5c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51cf240,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c94c915c,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6fb7c28,c0cdb776,0,0,e6fb7b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6fb7c28,e6fb7c00,e6fb7b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c51cf240,ffffff9c,bfbcfc33,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c51cf240,bfbcfc33,0,1f8,e6fb7d2c,...) at kern_mkdir+0x2e mkdir(c51cf240,e6fb7cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6fb7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbcf7dc, ebp = 0xbfbcfc08 --- Tracing command mkdir pid 1296 tid 100229 td 0xc51cf480 sched_switch(c51cf480,0,104,191,b89e4d9e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51cf480,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c9478570,0,1,c51cf524,c9478570,...) at ffs_update+0x1a2 ufs_inactive(e6fb3b9c,c0cdb5a3,c9478634,c9478634,c9478570,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6fb3b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c9478634,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c9478570,c0cab46b,343,340,c51a3300,...) at vrele+0x198 kern_chdir(c51cf480,bfbd79d3,0,e6fb3d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c51cf480,e6fb3cf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6fb3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd757c, ebp = 0xbfbd79a8 --- Tracing command mkdir pid 1295 tid 100228 td 0xc51cf6c0 sched_switch(c51cf6c0,0,104,191,b61209d0,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51cf6c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8519840,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8519840,c454e100,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8519840,4c,c0ca8027,d8519840,e6faf950,...) at bwait+0x6f bufwait(d8519840,0,0,0,0,...) at bufwait+0x28 breadn(c8c4f15c,0,0,800,0,...) at breadn+0x132 bread(c8c4f15c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8c4f15c,0,0,0,e6fafa40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8c4f15c,e6fafbf8,e6fafc0c,0,e6fafa84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6fafaa4,c0cdb189,c8c4f15c,c8c4f15c,e6fafc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6fafaa4,e6fafc0c,e6fafbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6fafb38,c0caada1,e6fafbe0,80000,e6fafbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6fafb38,c0ca971d,2a2,e6fafbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6fafbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6fafbe0,0,c51a342c,0,bfbdc963,...) at namei+0x57f kern_rmdirat(c51cf6c0,ffffff9c,bfbdc963,0,e6fafc80,...) at kern_rmdirat+0x54 kern_rmdir(c51cf6c0,bfbdc963,0,e6fafd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51cf6c0,e6fafcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6fafd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdc50c, ebp = 0xbfbdc938 --- Tracing command mkdir pid 1294 tid 100227 td 0xc51cf900 sched_switch(c51cf900,0,104,191,b897dab2,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51cf900,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c9479570,0,1,c51cf9a4,c9479570,...) at ffs_update+0x1a2 ufs_inactive(e6fabb9c,c0cdb5a3,c9479634,c9479634,c9479570,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6fabb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c9479634,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c9479570,c0cab46b,343,340,c51a3500,...) at vrele+0x198 kern_chdir(c51cf900,bfbd60b3,0,e6fabd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c51cf900,e6fabcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6fabd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd5c5c, ebp = 0xbfbd6088 --- Tracing command mkdir pid 1293 tid 100226 td 0xc51cfb40 sched_switch(c51cfb40,0,103,18c,b899f386,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c51cfb40,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e6fa79bc,...) at _mtx_lock_flags+0xf7 brelse(d86a9fa0,dcc91020,4,0,e6fa7a40,...) at brelse+0x56f ufs_lookup_ino(c8ccfae0,e6fa7bf8,e6fa7c0c,0,e6fa7a84,...) at ufs_lookup_ino+0x724 ufs_lookup(e6fa7aa4,c0cdb189,c8ccfae0,c8ccfae0,e6fa7c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6fa7aa4,e6fa7c0c,e6fa7bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6fa7b38,c0caada1,e6fa7be0,80000,e6fa7be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6fa7b38,c0ca971d,2a2,e6fa7bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6fa7be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6fa7be0,0,c51a362c,0,bfbdb043,...) at namei+0x57f kern_rmdirat(c51cfb40,ffffff9c,bfbdb043,0,e6fa7c80,...) at kern_rmdirat+0x54 kern_rmdir(c51cfb40,bfbdb043,0,e6fa7d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51cfb40,e6fa7cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6fa7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdabec, ebp = 0xbfbdb018 --- Tracing command mkdir pid 1292 tid 100225 td 0xc51cfd80 sched_switch(c51cfd80,0,104,191,b544b172,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51cfd80,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8622300,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8622300,c454e2cc,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8622300,4c,c0ca8027,d8622300,e6fa3950,...) at bwait+0x6f bufwait(d8622300,0,0,0,0,...) at bufwait+0x28 breadn(c8bc9ae0,0,0,800,0,...) at breadn+0x132 bread(c8bc9ae0,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8bc9ae0,0,0,0,e6fa3a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8bc9ae0,e6fa3bf8,e6fa3c0c,0,e6fa3a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6fa3aa4,c0cdb189,c8bc9ae0,c8bc9ae0,e6fa3c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6fa3aa4,e6fa3c0c,e6fa3bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6fa3b38,c0caada1,e6fa3be0,80000,e6fa3be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6fa3b38,c0ca971d,2a2,e6fa3bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6fa3be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6fa3be0,0,c51a372c,0,bfbdd5f3,...) at namei+0x57f kern_rmdirat(c51cfd80,ffffff9c,bfbdd5f3,0,e6fa3c80,...) at kern_rmdirat+0x54 kern_rmdir(c51cfd80,bfbdd5f3,0,e6fa3d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51cfd80,e6fa3cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6fa3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdd19c, ebp = 0xbfbdd5c8 --- Tracing command mkdir pid 1291 tid 100224 td 0xc51d1000 sched_switch(c51d1000,0,104,191,a139e3c0,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51d1000,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c946e984,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6f9fc28,c0cdb776,0,0,e6f9fb6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6f9fc28,e6f9fc00,e6f9fb6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c51d1000,ffffff9c,bfbcf3d3,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c51d1000,bfbcf3d3,0,1f8,e6f9fd2c,...) at kern_mkdir+0x2e mkdir(c51d1000,e6f9fcf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6f9fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbcef7c, ebp = 0xbfbcf3a8 --- Tracing command mkdir pid 1290 tid 100223 td 0xc51d1240 sched_switch(c51d1240,0,104,191,a3c23776,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51d1240,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d86246c0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d86246c0,c454e538,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d86246c0,4c,c0ca8027,d86246c0,e6f9b950,...) at bwait+0x6f bufwait(d86246c0,0,0,0,0,...) at bufwait+0x28 breadn(c83af984,0,0,800,0,...) at breadn+0x132 bread(c83af984,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c83af984,0,0,0,e6f9ba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c83af984,e6f9bbf8,e6f9bc0c,0,e6f9ba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f9baa4,c0cdb189,c83af984,c83af984,e6f9bc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f9baa4,e6f9bc0c,e6f9bbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f9bb38,c0caada1,e6f9bbe0,80000,e6f9bbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f9bb38,c0ca971d,2a2,e6f9bbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f9bbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f9bbe0,0,c51a392c,0,bfbe3213,...) at namei+0x57f kern_rmdirat(c51d1240,ffffff9c,bfbe3213,0,e6f9bc80,...) at kern_rmdirat+0x54 kern_rmdir(c51d1240,bfbe3213,0,e6f9bd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51d1240,e6f9bcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f9bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe2dbc, ebp = 0xbfbe31e8 --- Tracing command mkdir pid 1289 tid 100222 td 0xc51d1480 sched_switch(c51d1480,0,104,191,ac8b3ac6,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51d1480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d874bf80,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d874bf80,c454e77c,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d874bf80,4c,c0ca8027,d874bf80,e6f97950,...) at bwait+0x6f bufwait(d874bf80,0,0,0,0,...) at bufwait+0x28 breadn(c882e828,0,0,800,0,...) at breadn+0x132 bread(c882e828,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c882e828,0,0,0,e6f97a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c882e828,e6f97bf8,e6f97c0c,0,e6f97a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f97aa4,c0cdb189,c882e828,c882e828,e6f97c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f97aa4,e6f97c0c,e6f97bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f97b38,c0caada1,e6f97be0,80000,e6f97be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f97b38,c0ca971d,2a2,e6f97bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f97be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f97be0,0,c51a3a2c,0,bfbe3213,...) at namei+0x57f kern_rmdirat(c51d1480,ffffff9c,bfbe3213,0,e6f97c80,...) at kern_rmdirat+0x54 kern_rmdir(c51d1480,bfbe3213,0,e6f97d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51d1480,e6f97cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f97d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe2dbc, ebp = 0xbfbe31e8 --- Tracing command mkdir pid 1288 tid 100221 td 0xc51d16c0 sched_switch(c51d16c0,0,104,191,738ed240,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51d16c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d860cdc0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d860cdc0,c454e844,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d860cdc0,4c,c0ca8027,d860cdc0,e6f93950,...) at bwait+0x6f bufwait(d860cdc0,0,0,0,0,...) at bufwait+0x28 breadn(c864f000,0,0,800,0,...) at breadn+0x132 bread(c864f000,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c864f000,0,0,0,e6f93a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c864f000,e6f93bf8,e6f93c0c,0,e6f93a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f93aa4,c0cdb189,c864f000,c864f000,e6f93c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f93aa4,e6f93c0c,e6f93bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f93b38,c0caada1,e6f93be0,80000,e6f93be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f93b38,c0ca971d,2a2,e6f93bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f93be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f93be0,0,c51a3b2c,0,bfbf24f3,...) at namei+0x57f kern_rmdirat(c51d16c0,ffffff9c,bfbf24f3,0,e6f93c80,...) at kern_rmdirat+0x54 kern_rmdir(c51d16c0,bfbf24f3,0,e6f93d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51d16c0,e6f93cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f93d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbf209c, ebp = 0xbfbf24c8 --- Tracing command mkdir pid 1287 tid 100220 td 0xc51d1900 sched_switch(c51d1900,0,104,191,b8978c02,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51d1900,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c9479828,0,1,c94798ec,c9479828,...) at ffs_update+0x1a2 ufs_inactive(e6f8fb9c,c0cdb5a3,c94798ec,c94798ec,c9479828,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f8fb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c94798ec,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c9479828,c0cab46b,343,340,c51a3c00,...) at vrele+0x198 kern_chdir(c51d1900,bfbd9b53,0,e6f8fd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c51d1900,e6f8fcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6f8fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd96fc, ebp = 0xbfbd9b28 --- Tracing command mkdir pid 1286 tid 100219 td 0xc51d1b40 sched_switch(c51d1b40,0,104,191,b8971e46,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51d1b40,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d871fb60,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d871fb60,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1960,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1960,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1960,0,4000,0,...) at bread+0x4c ffs_update(c946d828,0,1,c51d1be4,c946d828,...) at ffs_update+0x1a2 ufs_inactive(e6f8bb9c,c0cdb5a3,c946d8ec,c946d8ec,c946d828,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f8bb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c946d8ec,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c946d828,c0cab46b,343,340,c51a3d00,...) at vrele+0x198 kern_chdir(c51d1b40,bfbd6913,0,e6f8bd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c51d1b40,e6f8bcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6f8bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd64bc, ebp = 0xbfbd68e8 --- Tracing command mkdir pid 1285 tid 100218 td 0xc51d1d80 sched_switch(c51d1d80,0,104,191,b8989f40,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51d1d80,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c946f2b8,0,1,c51d1e24,c946f2b8,...) at ffs_update+0x1a2 ufs_inactive(e6f87b9c,c0cdb5a3,c946f37c,c946f37c,c946f2b8,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f87b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c946f37c,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c946f2b8,c0cab46b,343,340,c51a3e00,...) at vrele+0x198 kern_chdir(c51d1d80,bfbd2e73,0,e6f87d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c51d1d80,e6f87cf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6f87d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd2a1c, ebp = 0xbfbd2e48 --- Tracing command mkdir pid 1284 tid 100217 td 0xc51886c0 sched_switch(c51886c0,0,104,191,7482956c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51886c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d85c0fe0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d85c0fe0,c454e54c,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d85c0fe0,4c,c0ca8027,d85c0fe0,e6f83950,...) at bwait+0x6f bufwait(d85c0fe0,0,0,0,0,...) at bufwait+0x28 breadn(c7a696cc,0,0,800,0,...) at breadn+0x132 bread(c7a696cc,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c7a696cc,0,0,0,e6f83a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c7a696cc,e6f83bf8,e6f83c0c,0,e6f83a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f83aa4,c0cdb189,c7a696cc,c7a696cc,e6f83c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f83aa4,e6f83c0c,e6f83bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f83b38,c0caada1,e6f83be0,80000,e6f83be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f83b38,c0ca971d,2a2,e6f83bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f83be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f83be0,0,c51c402c,0,bfbfb353,...) at namei+0x57f kern_rmdirat(c51886c0,ffffff9c,bfbfb353,0,e6f83c80,...) at kern_rmdirat+0x54 kern_rmdir(c51886c0,bfbfb353,0,e6f83d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51886c0,e6f83cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f83d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbfaefc, ebp = 0xbfbfb328 --- Tracing command mkdir pid 1283 tid 100216 td 0xc5188900 sched_switch(c5188900,0,104,191,b441b40e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5188900,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8706320,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8706320,c454e5c4,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8706320,4c,c0ca8027,d8706320,e6f7f950,...) at bwait+0x6f bufwait(d8706320,0,0,0,0,...) at bufwait+0x28 breadn(c8b46c3c,0,0,800,0,...) at breadn+0x132 bread(c8b46c3c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8b46c3c,0,0,0,e6f7fa40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8b46c3c,e6f7fbf8,e6f7fc0c,0,e6f7fa84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f7faa4,c0cdb189,c8b46c3c,c8b46c3c,e6f7fc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f7faa4,e6f7fc0c,e6f7fbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f7fb38,c0caada1,e6f7fbe0,80000,e6f7fbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f7fb38,c0ca971d,2a2,e6f7fbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f7fbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f7fbe0,0,c51c412c,0,bfbdcd93,...) at namei+0x57f kern_rmdirat(c5188900,ffffff9c,bfbdcd93,0,e6f7fc80,...) at kern_rmdirat+0x54 kern_rmdir(c5188900,bfbdcd93,0,e6f7fd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5188900,e6f7fcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f7fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdc93c, ebp = 0xbfbdcd68 --- Tracing command mkdir pid 1282 tid 100215 td 0xc5188b40 sched_switch(c5188b40,0,104,191,52f0a100,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5188b40,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c94bb6cc,0,1,c5188be4,c94bb6cc,...) at ffs_update+0x1a2 ufs_inactive(e6f7bb9c,c0cdb5a3,c94bb790,c94bb790,c94bb6cc,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f7bb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c94bb790,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c94bb6cc,c0cab46b,343,340,c51c4200,...) at vrele+0x198 kern_chdir(c5188b40,bfbd8663,0,e6f7bd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5188b40,e6f7bcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6f7bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd820c, ebp = 0xbfbd8638 --- Tracing command mkdir pid 1281 tid 100214 td 0xc5188d80 sched_switch(c5188d80,0,104,191,b7d7c23c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5188d80,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d861c660,4c,c0ca802d,0,0,...) at sleepq_wait+0x63 _sleep(d861c660,c454e498,4c,c0ca802d,0,...) at _sleep+0x36b bwait(d861c660,4c,c0ca802d,d861c660,e6f77744,...) at bwait+0x6f bufwait(d861c660,d861c660,df,d861c660,c6bd6820,...) at bufwait+0x48 bufwrite(d861c660,0,c0cc5682,726,c502e600) at bufwrite+0x165 ffs_bufwrite(d861c660,0,c0cc3164,8c7,c08d0d46,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c8e79bc0,...) at softdep_process_journal+0x658 jwait(e6f778a0,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c9296c3c,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c92f9c3c,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d867af40,c9296cb0,c9296c3c,1,e6f77b60,...) at softdep_setup_remove+0x13b ufs_dirremove(c92f9d98,c9296c3c,500800c,1,c92f9c3c,...) at ufs_dirremove+0x16e ufs_rmdir(e6f77c34,c0cdb735,0,0,c92f9c3c,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6f77c34,2,e6f77c0c,bfbd6d43,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c5188d80,ffffff9c,bfbd6d43,0,e6f77c80,...) at kern_rmdirat+0x1a5 kern_rmdir(c5188d80,bfbd6d43,0,e6f77d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5188d80,e6f77cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f77d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd68ec, ebp = 0xbfbd6d18 --- Tracing command mkdir pid 1280 tid 100213 td 0xc51a7000 sched_switch(c51a7000,0,104,191,b89b0568,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51a7000,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c9478828,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6f73c28,c0cdb776,0,0,e6f73b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6f73c28,e6f73c00,e6f73b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c51a7000,ffffff9c,bfbdac13,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c51a7000,bfbdac13,0,1f8,e6f73d2c,...) at kern_mkdir+0x2e mkdir(c51a7000,e6f73cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6f73d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbda7bc, ebp = 0xbfbdabe8 --- Tracing command mkdir pid 1279 tid 100212 td 0xc51a7240 sched_switch(c51a7240,0,103,18c,b8938f44,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c4dff480,...) at mi_switch+0x200 turnstile_wait(c4dff480,c513eb40,0,1ac,c0f72a2c,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f72a2c,c51a7240,0,c0cc3164,1942,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f72a2c,0,c0cc3164,1942,c0f375b8,...) at _mtx_lock_flags+0xf7 softdep_disk_io_initiation(d875d080,0,d875d080,0,0,...) at softdep_disk_io_initiation+0x152 ffs_geom_strategy(c4b7e3b0,d875d080,df,d875d080,c568d840,...) at ffs_geom_strategy+0x13f bufwrite(d875d080,0,c0cc5682,726,c502e600) at bufwrite+0x159 ffs_bufwrite(d875d080,0,c0cc3164,8c7,4,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c834be80,...) at softdep_process_journal+0x658 jwait(8,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c94a1c3c,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c94ad000,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d8725c80,c94a1cb0,c94a1c3c,1,e6f6fb60,...) at softdep_setup_remove+0x13b ufs_dirremove(c94ad15c,c94a1c3c,500800c,1,c94ad000,...) at ufs_dirremove+0x16e ufs_rmdir(e6f6fc34,c0cdb735,0,0,c94ad000,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6f6fc34,2,e6f6fc0c,bfbd2613,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c51a7240,ffffff9c,bfbd2613,0,e6f6fc80,...) at kern_rmdirat+0x1a5 kern_rmdir(c51a7240,bfbd2613,0,e6f6fd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51a7240,e6f6fcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f6fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd21bc, ebp = 0xbfbd25e8 --- Tracing command mkdir pid 1278 tid 100211 td 0xc51a7480 sched_switch(c51a7480,0,104,191,b89597e0,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51a7480,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d871fb60,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d871fb60,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1960,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1960,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1960,0,4000,0,...) at bread+0x4c ffs_update(c94506cc,0,1,c51a7524,c94506cc,...) at ffs_update+0x1a2 ufs_inactive(e6f6bb9c,c0cdb5a3,c9450790,c9450790,c94506cc,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f6bb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c9450790,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c94506cc,c0cab46b,343,340,c51a1500,...) at vrele+0x198 kern_chdir(c51a7480,804ba70,0,e6f6bd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c51a7480,e6f6bcf8,4,c0cdbaa6,c0d88250,...) at chdir+0x22 syscall(e6f6bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbcf7dc, ebp = 0xbfbcfc08 --- Tracing command mkdir pid 1277 tid 100210 td 0xc51a76c0 sched_switch(c51a76c0,0,104,191,52f868b4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51a76c0,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c94bfc3c,0,18,200,c4c09000,...) at ffs_update+0x1a2 ufs_mkdir(e6f67c28,c0cdb776,0,0,e6f67b6c,...) at ufs_mkdir+0x85a VOP_MKDIR_APV(c0daad00,e6f67c28,e6f67c00,e6f67b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c51a76c0,ffffff9c,bfbd6913,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c51a76c0,bfbd6913,0,1f8,e6f67d2c,...) at kern_mkdir+0x2e mkdir(c51a76c0,e6f67cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6f67d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd64bc, ebp = 0xbfbd68e8 --- Tracing command mkdir pid 1276 tid 100209 td 0xc51a7900 sched_switch(c51a7900,0,104,191,a8628bee,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51a7900,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d85a86a0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d85a86a0,c454e81c,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d85a86a0,4c,c0ca8027,d85a86a0,e6f63950,...) at bwait+0x6f bufwait(d85a86a0,0,0,0,0,...) at bufwait+0x28 breadn(c852115c,0,0,800,0,...) at breadn+0x132 bread(c852115c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c852115c,0,0,0,e6f63a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c852115c,e6f63bf8,e6f63c0c,0,e6f63a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f63aa4,c0cdb189,c852115c,c852115c,e6f63c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f63aa4,e6f63c0c,e6f63bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f63b38,c0caada1,e6f63be0,80000,e6f63be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f63b38,c0ca971d,2a2,e6f63bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f63be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f63be0,0,c51a172c,0,bfbe4703,...) at namei+0x57f kern_rmdirat(c51a7900,ffffff9c,bfbe4703,0,e6f63c80,...) at kern_rmdirat+0x54 kern_rmdir(c51a7900,bfbe4703,0,e6f63d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51a7900,e6f63cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f63d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe42ac, ebp = 0xbfbe46d8 --- Tracing command mkdir pid 1275 tid 100208 td 0xc51a7b40 sched_switch(c51a7b40,0,104,191,56eadcaa,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51a7b40,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d86c9760,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d86c9760,c454e4fc,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d86c9760,4c,c0ca8027,d86c9760,e6f5f950,...) at bwait+0x6f bufwait(d86c9760,0,0,0,0,...) at bufwait+0x28 breadn(c8d1b15c,0,0,800,0,...) at breadn+0x132 bread(c8d1b15c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8d1b15c,0,0,0,e6f5fa40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8d1b15c,e6f5fbf8,e6f5fc0c,0,e6f5fa84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f5faa4,c0cdb189,c8d1b15c,c8d1b15c,e6f5fc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f5faa4,e6f5fc0c,e6f5fbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f5fb38,c0caada1,e6f5fbe0,80000,e6f5fbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f5fb38,c0ca971d,2a2,e6f5fbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f5fbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f5fbe0,0,c51a182c,0,bfbdbcd3,...) at namei+0x57f kern_rmdirat(c51a7b40,ffffff9c,bfbdbcd3,0,e6f5fc80,...) at kern_rmdirat+0x54 kern_rmdir(c51a7b40,bfbdbcd3,0,e6f5fd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51a7b40,e6f5fcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f5fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdb87c, ebp = 0xbfbdbca8 --- Tracing command mkdir pid 1274 tid 100207 td 0xc51a7d80 sched_switch(c51a7d80,0,104,191,a7255774,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51a7d80,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d869d620,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d869d620,c454e1b4,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d869d620,4c,c0ca8027,d869d620,e6f5b950,...) at bwait+0x6f bufwait(d869d620,0,0,0,0,...) at bufwait+0x28 breadn(c84c5c3c,0,0,800,0,...) at breadn+0x132 bread(c84c5c3c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c84c5c3c,0,0,0,e6f5ba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c84c5c3c,e6f5bbf8,e6f5bc0c,0,e6f5ba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f5baa4,c0cdb189,c84c5c3c,c84c5c3c,e6f5bc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f5baa4,e6f5bc0c,e6f5bbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f5bb38,c0caada1,e6f5bbe0,80000,e6f5bbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f5bb38,c0ca971d,2a2,e6f5bbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f5bbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f5bbe0,0,c51a192c,0,bfbe4703,...) at namei+0x57f kern_rmdirat(c51a7d80,ffffff9c,bfbe4703,0,e6f5bc80,...) at kern_rmdirat+0x54 kern_rmdir(c51a7d80,bfbe4703,0,e6f5bd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51a7d80,e6f5bcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f5bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe42ac, ebp = 0xbfbe46d8 --- Tracing command mkdir pid 1273 tid 100206 td 0xc51a9000 sched_switch(c51a9000,0,103,18c,b89d13fc,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c51a9000,0,c0ca7d25,5d0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,5d0,c0c9b2ec,...) at _mtx_lock_flags+0xf7 bqrelse(d871fb00,0,c0ca7d25,e29,32f000,...) at bqrelse+0x17c bdwrite(d871fb00,c9408300,100,4000,0,...) at bdwrite+0x290 ffs_update(c944a15c,0,1,c51a90a4,c944a15c,...) at ffs_update+0x350 ufs_inactive(e6f57b9c,c0cdb5a3,c944a220,c944a220,c944a15c,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f57b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c944a220,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c944a15c,c0cab46b,343,340,c51a1a00,...) at vrele+0x198 kern_chdir(c51a9000,804ba70,0,e6f57d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c51a9000,e6f57cf8,4,c0cdbaa6,c0d88250,...) at chdir+0x22 syscall(e6f57d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbcf7dc, ebp = 0xbfbcfc08 --- Tracing command mkdir pid 1272 tid 100205 td 0xc51a9240 sched_switch(c51a9240,0,103,18c,b89b50e6,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c51a9240,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e6f5370c,...) at _mtx_lock_flags+0xf7 brelse(d85469c0,d85469c0,df,d85469c0,c56d2820,...) at brelse+0x56f bufwrite(d85469c0,0,c0cc5682,726,c502e600) at bufwrite+0x16f ffs_bufwrite(d85469c0,0,c0cc3164,8c7,4,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c94d7a40,...) at softdep_process_journal+0x658 jwait(8,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c9385b54,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c9397984,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d8682fa0,c9385bc8,c9385b54,1,e6f53b60,...) at softdep_setup_remove+0x13b ufs_dirremove(c9397ae0,c9385b54,500800c,1,c9397984,...) at ufs_dirremove+0x16e ufs_rmdir(e6f53c34,c0cdb735,0,0,c9397984,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6f53c34,2,e6f53c0c,bfbd4793,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c51a9240,ffffff9c,bfbd4793,0,e6f53c80,...) at kern_rmdirat+0x1a5 kern_rmdir(c51a9240,bfbd4793,0,e6f53d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51a9240,e6f53cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f53d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd433c, ebp = 0xbfbd4768 --- Tracing command mkdir pid 1271 tid 100204 td 0xc51a9480 sched_switch(c51a9480,0,104,191,b8980924,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51a9480,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c949415c,0,1,c51a9524,c949415c,...) at ffs_update+0x1a2 ufs_inactive(e6f4fb9c,c0cdb5a3,c9494220,c9494220,c949415c,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f4fb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c9494220,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c949415c,c0cab46b,343,340,c51a1c00,...) at vrele+0x198 kern_chdir(c51a9480,bfbd8ec3,0,e6f4fd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c51a9480,e6f4fcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6f4fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd8a6c, ebp = 0xbfbd8e98 --- Tracing command mkdir pid 1270 tid 100203 td 0xc51a96c0 sched_switch(c51a96c0,0,104,191,b0e83f6e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51a96c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d85d3600,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d85d3600,c454e024,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d85d3600,4c,c0ca8027,d85d3600,e6f4b950,...) at bwait+0x6f bufwait(d85d3600,0,0,0,0,...) at bufwait+0x28 breadn(c8a87984,0,0,800,0,...) at breadn+0x132 bread(c8a87984,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8a87984,0,0,0,e6f4ba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8a87984,e6f4bbf8,e6f4bc0c,0,e6f4ba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f4baa4,c0cdb189,c8a87984,c8a87984,e6f4bc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f4baa4,e6f4bc0c,e6f4bbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f4bb38,c0caada1,e6f4bbe0,80000,e6f4bbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f4bb38,c0ca971d,2a2,e6f4bbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f4bbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f4bbe0,0,c51a1d2c,0,bfbde6b3,...) at namei+0x57f kern_rmdirat(c51a96c0,ffffff9c,bfbde6b3,0,e6f4bc80,...) at kern_rmdirat+0x54 kern_rmdir(c51a96c0,bfbde6b3,0,e6f4bd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51a96c0,e6f4bcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f4bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbde25c, ebp = 0xbfbde688 --- Tracing command mkdir pid 1269 tid 100202 td 0xc51a9900 sched_switch(c51a9900,0,103,18c,b89a59cc,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c51a9900,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e6f4770c,...) at _mtx_lock_flags+0xf7 brelse(d867c460,d867c460,df,d867c460,c94ff020,...) at brelse+0x56f bufwrite(d867c460,0,c0cc5682,726,c502e600) at bufwrite+0x16f ffs_bufwrite(d867c460,0,c0cc3164,8c7,c08d0d46,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c9472980,...) at softdep_process_journal+0x658 jwait(e6f478a0,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c93c5d98,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c93ed984,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d87ad100,c93c71d0,c93c5d98,1,e6f47b60,...) at softdep_setup_remove+0x13b ufs_dirremove(c93c1c3c,c93c5d98,500800c,1,c93ed984,...) at ufs_dirremove+0x16e ufs_rmdir(e6f47c34,c0cdb735,0,0,c93ed984,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6f47c34,2,e6f47c0c,bfbd1983,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c51a9900,ffffff9c,bfbd1983,0,e6f47c80,...) at kern_rmdirat+0x1a5 kern_rmdir(c51a9900,bfbd1983,0,e6f47d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51a9900,e6f47cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f47d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd152c, ebp = 0xbfbd1958 --- Tracing command mkdir pid 1268 tid 100201 td 0xc5165240 sched_switch(c5165240,0,104,191,a1379102,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5165240,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c94b2570,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6f43c28,c0cdb776,0,0,e6f43b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6f43c28,e6f43c00,e6f43b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c5165240,ffffff9c,bfbcfc33,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c5165240,bfbcfc33,0,1f8,e6f43d2c,...) at kern_mkdir+0x2e mkdir(c5165240,e6f43cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6f43d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbcf7dc, ebp = 0xbfbcfc08 --- Tracing command mkdir pid 1267 tid 100200 td 0xc5165480 sched_switch(c5165480,0,103,18c,b894e81a,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c5165480,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e6f3f70c,...) at _mtx_lock_flags+0xf7 brelse(d8736a40,d8736a40,df,d8736a40,c5c36040,...) at brelse+0x56f bufwrite(d8736a40,0,c0cc5682,726,c502e600) at bufwrite+0x16f ffs_bufwrite(d8736a40,0,c0cc3164,8c7,4,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c8441580,...) at softdep_process_journal+0x658 jwait(8,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c9355828,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c9370c3c,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d8798f40,c93b989c,c9355828,1,e6f3fb60,...) at softdep_setup_remove+0x13b ufs_dirremove(c93ac414,c9355828,500800c,1,c9370c3c,...) at ufs_dirremove+0x16e ufs_rmdir(e6f3fc34,c0cdb735,0,0,c9370c3c,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6f3fc34,2,e6f3fc0c,bfbd2613,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c5165480,ffffff9c,bfbd2613,0,e6f3fc80,...) at kern_rmdirat+0x1a5 kern_rmdir(c5165480,bfbd2613,0,e6f3fd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5165480,e6f3fcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f3fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd21bc, ebp = 0xbfbd25e8 --- Tracing command mkdir pid 1266 tid 100199 td 0xc51656c0 sched_switch(c51656c0,0,104,191,77032516,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51656c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d858e360,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d858e360,c454e498,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d858e360,4c,c0ca8027,d858e360,e6f3b950,...) at bwait+0x6f bufwait(d858e360,0,0,0,0,...) at bufwait+0x28 breadn(c83b6d98,0,0,800,0,...) at breadn+0x132 bread(c83b6d98,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c83b6d98,0,0,0,e6f3ba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c83b6d98,e6f3bbf8,e6f3bc0c,0,e6f3ba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f3baa4,c0cdb189,c83b6d98,c83b6d98,e6f3bc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f3baa4,e6f3bc0c,e6f3bbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f3bb38,c0caada1,e6f3bbe0,80000,e6f3bbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f3bb38,c0ca971d,2a2,e6f3bbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f3bbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f3bbe0,0,c51a222c,0,bfbe4f63,...) at namei+0x57f kern_rmdirat(c51656c0,ffffff9c,bfbe4f63,0,e6f3bc80,...) at kern_rmdirat+0x54 kern_rmdir(c51656c0,bfbe4f63,0,e6f3bd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51656c0,e6f3bcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f3bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe4b0c, ebp = 0xbfbe4f38 --- Tracing command mkdir pid 1265 tid 100198 td 0xc5165900 sched_switch(c5165900,0,103,18c,b896b708,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c5165900,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e6f3770c,...) at _mtx_lock_flags+0xf7 brelse(d86a2420,d86a2420,df,d86a2420,c5ccc820,...) at brelse+0x56f bufwrite(d86a2420,0,c0cc5682,726,c502e600) at bufwrite+0x16f ffs_bufwrite(d86a2420,0,c0cc3164,8c7,4,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c92d6580,...) at softdep_process_journal+0x658 jwait(8,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c93b8984,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c93d52b8,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d86c6500,c93b89f8,c93b8984,1,e6f37b60,...) at softdep_setup_remove+0x13b ufs_dirremove(c93d5414,c93b8984,500800c,1,c93d52b8,...) at ufs_dirremove+0x16e ufs_rmdir(e6f37c34,c0cdb735,0,0,c93d52b8,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6f37c34,2,e6f37c0c,bfbd36d3,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c5165900,ffffff9c,bfbd36d3,0,e6f37c80,...) at kern_rmdirat+0x1a5 kern_rmdir(c5165900,bfbd36d3,0,e6f37d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5165900,e6f37cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f37d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd327c, ebp = 0xbfbd36a8 --- Tracing command mkdir pid 1264 tid 100197 td 0xc5165b40 sched_switch(c5165b40,0,104,191,b89983a0,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5165b40,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c94b2000,0,1,c5165be4,c94b2000,...) at ffs_update+0x1a2 ufs_inactive(e6f33b9c,c0cdb5a3,c94b20c4,c94b20c4,c94b2000,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f33b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c94b20c4,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c94b2000,c0cab46b,343,340,c51a3100,...) at vrele+0x198 kern_chdir(c5165b40,bfbdb043,0,e6f33d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5165b40,e6f33cf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6f33d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbdabec, ebp = 0xbfbdb018 --- Tracing command mkdir pid 1263 tid 100196 td 0xc5165d80 sched_switch(c5165d80,0,104,191,73edf66a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5165d80,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d85ad7e0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d85ad7e0,c454e934,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d85ad7e0,4c,c0ca8027,d85ad7e0,e6f2f950,...) at bwait+0x6f bufwait(d85ad7e0,0,0,0,0,...) at bufwait+0x28 breadn(c8ce2414,0,0,800,0,...) at breadn+0x132 bread(c8ce2414,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8ce2414,0,0,0,e6f2fa40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8ce2414,e6f2fbf8,e6f2fc0c,0,e6f2fa84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f2faa4,c0cdb189,c8ce2414,c8ce2414,e6f2fc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f2faa4,e6f2fc0c,e6f2fbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f2fb38,c0caada1,e6f2fbe0,80000,e6f2fbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f2fb38,c0ca971d,2a2,e6f2fbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f2fbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f2fbe0,0,c5159d2c,0,bfbe0c63,...) at namei+0x57f kern_rmdirat(c5165d80,ffffff9c,bfbe0c63,0,e6f2fc80,...) at kern_rmdirat+0x54 kern_rmdir(c5165d80,bfbe0c63,0,e6f2fd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5165d80,e6f2fcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f2fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe080c, ebp = 0xbfbe0c38 --- Tracing command mkdir pid 1262 tid 100195 td 0xc5187000 sched_switch(c5187000,0,104,191,73c876ae,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5187000,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d86f6a80,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d86f6a80,c454e984,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d86f6a80,4c,c0ca8027,d86f6a80,e6f2b950,...) at bwait+0x6f bufwait(d86f6a80,0,0,0,0,...) at bufwait+0x28 breadn(c88316cc,0,0,800,0,...) at breadn+0x132 bread(c88316cc,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c88316cc,0,0,0,e6f2ba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c88316cc,e6f2bbf8,e6f2bc0c,0,e6f2ba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f2baa4,c0cdb189,c88316cc,c88316cc,e6f2bc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f2baa4,e6f2bc0c,e6f2bbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f2bb38,c0caada1,e6f2bbe0,80000,e6f2bbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f2bb38,c0ca971d,2a2,e6f2bbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f2bbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f2bbe0,0,c5159e2c,0,bfbf1433,...) at namei+0x57f kern_rmdirat(c5187000,ffffff9c,bfbf1433,0,e6f2bc80,...) at kern_rmdirat+0x54 kern_rmdir(c5187000,bfbf1433,0,e6f2bd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5187000,e6f2bcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f2bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbf0fdc, ebp = 0xbfbf1408 --- Tracing command mkdir pid 1261 tid 100194 td 0xc5187240 sched_switch(c5187240,0,104,191,b89913a8,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5187240,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c946f414,0,1,c51872e4,c946f414,...) at ffs_update+0x1a2 ufs_inactive(e6f27b9c,c0cdb5a3,c946f4d8,c946f4d8,c946f414,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f27b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c946f4d8,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c946f414,c0cab46b,343,340,c517d000,...) at vrele+0x198 kern_chdir(c5187240,bfbdd5f3,0,e6f27d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5187240,e6f27cf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6f27d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbdd19c, ebp = 0xbfbdd5c8 --- Tracing command mkdir pid 1260 tid 100193 td 0xc5187480 sched_switch(c5187480,0,104,191,b7d86576,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5187480,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d864f4e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d864f4e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1900,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1900,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1900,0,4000,0,...) at bread+0x4c ffs_update(c942a414,0,1,c5187524,c942a414,...) at ffs_update+0x1a2 ufs_inactive(e6f23b9c,c0cdb5a3,c942a4d8,c942a4d8,c942a414,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f23b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c942a4d8,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c942a414,c0cab46b,343,340,c517d100,...) at vrele+0x198 kern_chdir(c5187480,804ba70,0,e6f23d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5187480,e6f23cf8,4,c0cdbaa6,c0d88250,...) at chdir+0x22 syscall(e6f23d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd003c, ebp = 0xbfbd0468 --- Tracing command mkdir pid 1259 tid 100192 td 0xc51876c0 sched_switch(c51876c0,0,104,191,b89e25c6,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51876c0,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c946dc3c,0,1,c5187764,c946dc3c,...) at ffs_update+0x1a2 ufs_inactive(e6f1fb9c,c0cdb5a3,c946dd00,c946dd00,c946dc3c,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f1fb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c946dd00,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c946dc3c,c0cab46b,343,340,c517d200,...) at vrele+0x198 kern_chdir(c51876c0,bfbd2613,0,e6f1fd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c51876c0,e6f1fcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6f1fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd21bc, ebp = 0xbfbd25e8 --- Tracing command mkdir pid 1258 tid 100191 td 0xc5187900 sched_switch(c5187900,0,104,191,b3a8309c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5187900,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8647280,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8647280,c454e498,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8647280,4c,c0ca8027,d8647280,e6f1b950,...) at bwait+0x6f bufwait(d8647280,0,0,0,0,...) at bufwait+0x28 breadn(c8b1e15c,0,0,800,0,...) at breadn+0x132 bread(c8b1e15c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8b1e15c,0,0,0,e6f1ba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8b1e15c,e6f1bbf8,e6f1bc0c,0,e6f1ba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f1baa4,c0cdb189,c8b1e15c,c8b1e15c,e6f1bc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f1baa4,e6f1bc0c,e6f1bbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f1bb38,c0caada1,e6f1bbe0,80000,e6f1bbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f1bb38,c0ca971d,2a2,e6f1bbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f1bbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f1bbe0,0,c517d32c,0,bfbde283,...) at namei+0x57f kern_rmdirat(c5187900,ffffff9c,bfbde283,0,e6f1bc80,...) at kern_rmdirat+0x54 kern_rmdir(c5187900,bfbde283,0,e6f1bd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5187900,e6f1bcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f1bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdde2c, ebp = 0xbfbde258 --- Tracing command mkdir pid 1257 tid 100190 td 0xc5187b40 sched_switch(c5187b40,0,104,191,aff56d20,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5187b40,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d857d400,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d857d400,c454e40c,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d857d400,4c,c0ca8027,d857d400,e6f17950,...) at bwait+0x6f bufwait(d857d400,0,0,0,0,...) at bufwait+0x28 breadn(c898cae0,0,0,800,0,...) at breadn+0x132 bread(c898cae0,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c898cae0,0,0,0,e6f17a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c898cae0,e6f17bf8,e6f17c0c,0,e6f17a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6f17aa4,c0cdb189,c898cae0,c898cae0,e6f17c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6f17aa4,e6f17c0c,e6f17bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6f17b38,c0caada1,e6f17be0,80000,e6f17be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6f17b38,c0ca971d,2a2,e6f17bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6f17be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6f17be0,0,c517d42c,0,bfbe5bf3,...) at namei+0x57f kern_rmdirat(c5187b40,ffffff9c,bfbe5bf3,0,e6f17c80,...) at kern_rmdirat+0x54 kern_rmdir(c5187b40,bfbe5bf3,0,e6f17d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5187b40,e6f17cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6f17d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe579c, ebp = 0xbfbe5bc8 --- Tracing command mkdir pid 1256 tid 100189 td 0xc5187d80 sched_switch(c5187d80,0,103,18c,b8979580,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c4dff480,...) at mi_switch+0x200 turnstile_wait(c4dff480,c513eb40,0,1ac,c0f72a2c,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f72a2c,c5187d80,0,c0cc3164,1fe6,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f72a2c,0,c0cc3164,1fe6,c5110000,...) at _mtx_lock_flags+0xf7 softdep_update_inodeblock(c94b6570,d8517480,0,4000,0,...) at softdep_update_inodeblock+0x3b ffs_update(c94bb984,0,c4c09000,0,1f4,...) at ffs_update+0x1da ufs_mkdir(e6f13c28,c0cdb776,0,0,e6f13b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6f13c28,e6f13c00,e6f13b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c5187d80,ffffff9c,bfbd64e3,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c5187d80,bfbd64e3,0,1f8,e6f13d2c,...) at kern_mkdir+0x2e mkdir(c5187d80,e6f13cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6f13d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd608c, ebp = 0xbfbd64b8 --- Tracing command mkdir pid 1255 tid 100188 td 0xc5188000 sched_switch(c5188000,0,104,191,b896681a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5188000,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d8668cc0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d8668cc0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1920,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1920,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1920,0,4000,0,...) at bread+0x4c ffs_update(c943a414,0,1,c51880a4,c943a414,...) at ffs_update+0x1a2 ufs_inactive(e6f0fb9c,c0cdb5a3,c943a4d8,c943a4d8,c943a414,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f0fb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c943a4d8,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c943a414,c0cab46b,343,340,c517d600,...) at vrele+0x198 kern_chdir(c5188000,804ba70,0,e6f0fd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5188000,e6f0fcf8,4,c0cdbaa6,c0d88250,...) at chdir+0x22 syscall(e6f0fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd003c, ebp = 0xbfbd0468 --- Tracing command mkdir pid 1254 tid 100187 td 0xc5188240 sched_switch(c5188240,0,104,191,b89a4dec,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5188240,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d871fb60,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d871fb60,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1960,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1960,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1960,0,4000,0,...) at bread+0x4c ffs_update(c947015c,0,1,c51882e4,c947015c,...) at ffs_update+0x1a2 ufs_inactive(e6f0bb9c,c0cdb5a3,c9470220,c9470220,c947015c,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f0bb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c9470220,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c947015c,c0cab46b,343,340,c517d700,...) at vrele+0x198 kern_chdir(c5188240,bfbd5853,0,e6f0bd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5188240,e6f0bcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6f0bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd53fc, ebp = 0xbfbd5828 --- Tracing command mkdir pid 1253 tid 100186 td 0xc5188480 sched_switch(c5188480,0,104,191,b89426d0,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5188480,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d8668cc0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d8668cc0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1920,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1920,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1920,0,4000,0,...) at bread+0x4c ffs_update(c943a570,0,1,c5188524,c943a570,...) at ffs_update+0x1a2 ufs_inactive(e6f07b9c,c0cdb5a3,c943a634,c943a634,c943a570,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6f07b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c943a634,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c943a570,c0cab46b,343,340,c517d800,...) at vrele+0x198 kern_chdir(c5188480,804ba70,0,e6f07d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5188480,e6f07cf8,4,c0cdbaa6,c0d88250,...) at chdir+0x22 syscall(e6f07d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd003c, ebp = 0xbfbd0468 --- Tracing command mkdir pid 1252 tid 100185 td 0xc513ed80 sched_switch(c513ed80,0,104,191,b89e7258,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c513ed80,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c94caae0,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6f03c28,c0cdb776,0,0,e6f03b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6f03c28,e6f03c00,e6f03b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c513ed80,ffffff9c,bfbd0493,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c513ed80,bfbd0493,0,1f8,e6f03d2c,...) at kern_mkdir+0x2e mkdir(c513ed80,e6f03cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6f03d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd003c, ebp = 0xbfbd0468 --- Tracing command mkdir pid 1251 tid 100184 td 0xc5160000 sched_switch(c5160000,0,104,191,b89d9d10,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5160000,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c946e15c,0,18,200,c4c09000,...) at ffs_update+0x1a2 ufs_mkdir(e6effc28,c0cdb776,0,0,e6effb6c,...) at ufs_mkdir+0x85a VOP_MKDIR_APV(c0daad00,e6effc28,e6effc00,e6effb6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c5160000,ffffff9c,bfbd1123,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c5160000,bfbd1123,0,1f8,e6effd2c,...) at kern_mkdir+0x2e mkdir(c5160000,e6effcf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6effd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd0ccc, ebp = 0xbfbd10f8 --- Tracing command mkdir pid 1250 tid 100183 td 0xc5160240 sched_switch(c5160240,0,103,18c,b8998bfc,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c5160240,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e6efb70c,...) at _mtx_lock_flags+0xf7 brelse(d85353e0,d85353e0,df,d85353e0,c5b9a820,...) at brelse+0x56f bufwrite(d85353e0,0,c0cc5682,726,c502e600) at bufwrite+0x16f ffs_bufwrite(d85353e0,0,c0cc3164,8c7,4,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c94525c0,...) at softdep_process_journal+0x658 jwait(8,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c94c115c,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c94bd15c,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d867fa00,c94c11d0,c94c115c,1,e6efbb60,...) at softdep_setup_remove+0x13b ufs_dirremove(c94bd2b8,c94c115c,500800c,1,c94bd15c,...) at ufs_dirremove+0x16e ufs_rmdir(e6efbc34,c0cdb735,0,0,c94bd15c,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6efbc34,2,e6efbc0c,bfbd1983,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c5160240,ffffff9c,bfbd1983,0,e6efbc80,...) at kern_rmdirat+0x1a5 kern_rmdir(c5160240,bfbd1983,0,e6efbd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5160240,e6efbcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6efbd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd152c, ebp = 0xbfbd1958 --- Tracing command mkdir pid 1249 tid 100182 td 0xc5160480 sched_switch(c5160480,0,104,191,7559e982,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5160480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d86e9400,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d86e9400,c454e4ac,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d86e9400,4c,c0ca8027,d86e9400,e6ef7950,...) at bwait+0x6f bufwait(d86e9400,0,0,0,0,...) at bufwait+0x28 breadn(c86886cc,0,0,800,0,...) at breadn+0x132 bread(c86886cc,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c86886cc,0,0,0,e6ef7a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c86886cc,e6ef7bf8,e6ef7c0c,0,e6ef7a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6ef7aa4,c0cdb189,c86886cc,c86886cc,e6ef7c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6ef7aa4,e6ef7c0c,e6ef7bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6ef7b38,c0caada1,e6ef7be0,80000,e6ef7be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6ef7b38,c0ca971d,2a2,e6ef7bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6ef7be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6ef7be0,0,c517dc2c,0,bfbea753,...) at namei+0x57f kern_rmdirat(c5160480,ffffff9c,bfbea753,0,e6ef7c80,...) at kern_rmdirat+0x54 kern_rmdir(c5160480,bfbea753,0,e6ef7d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5160480,e6ef7cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6ef7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbea2fc, ebp = 0xbfbea728 --- Tracing command mkdir pid 1248 tid 100181 td 0xc51606c0 sched_switch(c51606c0,0,104,191,74a85a42,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51606c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d868ca00,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d868ca00,c454e330,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d868ca00,4c,c0ca8027,d868ca00,e6ef3950,...) at bwait+0x6f bufwait(d868ca00,0,0,0,0,...) at bufwait+0x28 breadn(c7b392b8,0,0,800,0,...) at breadn+0x132 bread(c7b392b8,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c7b392b8,0,0,0,e6ef3a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c7b392b8,e6ef3bf8,e6ef3c0c,0,e6ef3a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6ef3aa4,c0cdb189,c7b392b8,c7b392b8,e6ef3c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6ef3aa4,e6ef3c0c,e6ef3bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6ef3b38,c0caada1,e6ef3be0,80000,e6ef3be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6ef3b38,c0ca971d,2a2,e6ef3bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6ef3be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6ef3be0,0,c5134c2c,0,bfbe9693,...) at namei+0x57f kern_rmdirat(c51606c0,ffffff9c,bfbe9693,0,e6ef3c80,...) at kern_rmdirat+0x54 kern_rmdir(c51606c0,bfbe9693,0,e6ef3d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51606c0,e6ef3cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6ef3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe923c, ebp = 0xbfbe9668 --- Tracing command mkdir pid 1247 tid 100180 td 0xc5160900 sched_switch(c5160900,0,104,191,8650cde6,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5160900,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8750be0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8750be0,c454e588,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8750be0,4c,c0ca8027,d8750be0,e6eef950,...) at bwait+0x6f bufwait(d8750be0,0,0,0,0,...) at bufwait+0x28 breadn(c8277828,0,0,800,0,...) at breadn+0x132 bread(c8277828,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8277828,0,0,0,e6eefa40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8277828,e6eefbf8,e6eefc0c,0,e6eefa84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6eefaa4,c0cdb189,c8277828,c8277828,e6eefc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6eefaa4,e6eefc0c,e6eefbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6eefb38,c0caada1,e6eefbe0,80000,e6eefbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6eefb38,c0ca971d,2a2,e6eefbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6eefbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6eefbe0,0,c5134d2c,0,bfbe57c3,...) at namei+0x57f kern_rmdirat(c5160900,ffffff9c,bfbe57c3,0,e6eefc80,...) at kern_rmdirat+0x54 kern_rmdir(c5160900,bfbe57c3,0,e6eefd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5160900,e6eefcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6eefd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe536c, ebp = 0xbfbe5798 --- Tracing command mkdir pid 1246 tid 100179 td 0xc5160b40 sched_switch(c5160b40,0,104,191,b12a8fee,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5160b40,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d86cb300,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d86cb300,c454e268,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d86cb300,4c,c0ca8027,d86cb300,e6eeb950,...) at bwait+0x6f bufwait(d86cb300,0,0,0,0,...) at bufwait+0x28 breadn(c8adc828,0,0,800,0,...) at breadn+0x132 bread(c8adc828,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8adc828,0,0,0,e6eeba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8adc828,e6eebbf8,e6eebc0c,0,e6eeba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6eebaa4,c0cdb189,c8adc828,c8adc828,e6eebc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6eebaa4,e6eebc0c,e6eebbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6eebb38,c0caada1,e6eebbe0,80000,e6eebbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6eebb38,c0ca971d,2a2,e6eebbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6eebbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6eebbe0,0,c5134e2c,0,bfbde283,...) at namei+0x57f kern_rmdirat(c5160b40,ffffff9c,bfbde283,0,e6eebc80,...) at kern_rmdirat+0x54 kern_rmdir(c5160b40,bfbde283,0,e6eebd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5160b40,e6eebcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6eebd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdde2c, ebp = 0xbfbde258 --- Tracing command mkdir pid 1245 tid 100178 td 0xc5160d80 sched_switch(c5160d80,0,104,191,ad77eda8,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5160d80,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8566e80,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8566e80,c454e95c,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8566e80,4c,c0ca8027,d8566e80,e6ee7950,...) at bwait+0x6f bufwait(d8566e80,0,0,0,0,...) at bufwait+0x28 breadn(c891aae0,0,0,800,0,...) at breadn+0x132 bread(c891aae0,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c891aae0,0,0,0,e6ee7a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c891aae0,e6ee7bf8,e6ee7c0c,0,e6ee7a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6ee7aa4,c0cdb189,c891aae0,c891aae0,e6ee7c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6ee7aa4,e6ee7c0c,e6ee7bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6ee7b38,c0caada1,e6ee7be0,80000,e6ee7be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6ee7b38,c0ca971d,2a2,e6ee7bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6ee7be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6ee7be0,0,c515802c,0,bfbe3643,...) at namei+0x57f kern_rmdirat(c5160d80,ffffff9c,bfbe3643,0,e6ee7c80,...) at kern_rmdirat+0x54 kern_rmdir(c5160d80,bfbe3643,0,e6ee7d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5160d80,e6ee7cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6ee7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe31ec, ebp = 0xbfbe3618 --- Tracing command mkdir pid 1244 tid 100177 td 0xc5164000 sched_switch(c5164000,0,104,191,b89bd7ec,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5164000,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c9478984,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6ee3c28,c0cdb776,0,0,e6ee3b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6ee3c28,e6ee3c00,e6ee3b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c5164000,ffffff9c,bfbd0cf3,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c5164000,bfbd0cf3,0,1f8,e6ee3d2c,...) at kern_mkdir+0x2e mkdir(c5164000,e6ee3cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6ee3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd089c, ebp = 0xbfbd0cc8 --- Tracing command mkdir pid 1243 tid 100176 td 0xc5164240 sched_switch(c5164240,0,103,18c,b89d9626,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c4dff480,...) at mi_switch+0x200 turnstile_wait(c4dff480,c513eb40,0,1ac,c0f72a2c,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f72a2c,c5164240,0,c0cc3164,10c8,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f72a2c,0,c0cc3164,10c8,0,...) at _mtx_lock_flags+0xf7 softdep_setup_freeblocks(c9358658,0,0,800,0,...) at softdep_setup_freeblocks+0x70a ffs_truncate(c9337ae0,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d8780460,c92ec828,c9358658,1,e6edfb60,...) at softdep_setup_remove+0x13b ufs_dirremove(c9365c3c,c9358658,500800c,1,c9337ae0,...) at ufs_dirremove+0x16e ufs_rmdir(e6edfc34,c0cdb735,0,0,c9337ae0,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6edfc34,2,e6edfc0c,bfbd21e3,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c5164240,ffffff9c,bfbd21e3,0,e6edfc80,...) at kern_rmdirat+0x1a5 kern_rmdir(c5164240,bfbd21e3,0,e6edfd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5164240,e6edfcf8,4,e6edfcb0,c0d88ffc,...) at rmdir+0x22 syscall(e6edfd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd1d8c, ebp = 0xbfbd21b8 --- Tracing command mkdir pid 1242 tid 100175 td 0xc5164480 sched_switch(c5164480,0,104,191,7558c5e6,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5164480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8560680,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8560680,c454e3f8,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8560680,4c,c0ca8027,d8560680,e6edb950,...) at bwait+0x6f bufwait(d8560680,0,0,0,0,...) at bufwait+0x28 breadn(c8544ae0,0,0,800,0,...) at breadn+0x132 bread(c8544ae0,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8544ae0,0,0,0,e6edba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8544ae0,e6edbbf8,e6edbc0c,0,e6edba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6edbaa4,c0cdb189,c8544ae0,c8544ae0,e6edbc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6edbaa4,e6edbc0c,e6edbbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6edbb38,c0caada1,e6edbbe0,80000,e6edbbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6edbb38,c0ca971d,2a2,e6edbbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6edbbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6edbbe0,0,c515832c,0,bfbe4f63,...) at namei+0x57f kern_rmdirat(c5164480,ffffff9c,bfbe4f63,0,e6edbc80,...) at kern_rmdirat+0x54 kern_rmdir(c5164480,bfbe4f63,0,e6edbd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5164480,e6edbcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6edbd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe4b0c, ebp = 0xbfbe4f38 --- Tracing command mkdir pid 1241 tid 100174 td 0xc51646c0 sched_switch(c51646c0,0,104,191,79e79df0,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c51646c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d86b0600,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d86b0600,c454e2b8,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d86b0600,4c,c0ca8027,d86b0600,e6ed7950,...) at bwait+0x6f bufwait(d86b0600,0,0,0,0,...) at bufwait+0x28 breadn(c7f93984,0,0,800,0,...) at breadn+0x132 bread(c7f93984,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c7f93984,0,0,0,e6ed7a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c7f93984,e6ed7bf8,e6ed7c0c,0,e6ed7a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6ed7aa4,c0cdb189,c7f93984,c7f93984,e6ed7c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6ed7aa4,e6ed7c0c,e6ed7bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6ed7b38,c0caada1,e6ed7be0,80000,e6ed7be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6ed7b38,c0ca971d,2a2,e6ed7bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6ed7be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6ed7be0,0,c515842c,0,bfbe6453,...) at namei+0x57f kern_rmdirat(c51646c0,ffffff9c,bfbe6453,0,e6ed7c80,...) at kern_rmdirat+0x54 kern_rmdir(c51646c0,bfbe6453,0,e6ed7d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c51646c0,e6ed7cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6ed7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe5ffc, ebp = 0xbfbe6428 --- Tracing command mkdir pid 1240 tid 100173 td 0xc5164900 sched_switch(c5164900,0,104,191,52f73324,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5164900,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c9477ae0,0,18,200,c4c09000,...) at ffs_update+0x1a2 ufs_mkdir(e6ed3c28,c0cdb776,0,0,e6ed3b6c,...) at ufs_mkdir+0x85a VOP_MKDIR_APV(c0daad00,e6ed3c28,e6ed3c00,e6ed3b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c5164900,ffffff9c,bfbda3b3,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c5164900,bfbda3b3,0,1f8,e6ed3d2c,...) at kern_mkdir+0x2e mkdir(c5164900,e6ed3cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6ed3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd9f5c, ebp = 0xbfbda388 --- Tracing command mkdir pid 1239 tid 100172 td 0xc5164b40 sched_switch(c5164b40,0,104,191,b898d5fe,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5164b40,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c946d984,0,1,c5164be4,c946d984,...) at ffs_update+0x1a2 ufs_inactive(e6ecfb9c,c0cdb5a3,c946da48,c946da48,c946d984,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6ecfb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c946da48,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c946d984,c0cab46b,343,340,c5158600,...) at vrele+0x198 kern_chdir(c5164b40,bfbd2e73,0,e6ecfd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5164b40,e6ecfcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6ecfd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd2a1c, ebp = 0xbfbd2e48 --- Tracing command mkdir pid 1238 tid 100171 td 0xc5164d80 sched_switch(c5164d80,0,104,191,ac59f61a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5164d80,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d86a9440,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d86a9440,c454e13c,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d86a9440,4c,c0ca8027,d86a9440,e6ecb950,...) at bwait+0x6f bufwait(d86a9440,0,0,0,0,...) at bufwait+0x28 breadn(c882d984,0,0,800,0,...) at breadn+0x132 bread(c882d984,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c882d984,0,0,0,e6ecba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c882d984,e6ecbbf8,e6ecbc0c,0,e6ecba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6ecbaa4,c0cdb189,c882d984,c882d984,e6ecbc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6ecbaa4,e6ecbc0c,e6ecbbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6ecbb38,c0caada1,e6ecbbe0,80000,e6ecbbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6ecbb38,c0ca971d,2a2,e6ecbbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6ecbbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6ecbbe0,0,c515872c,0,bfbdef13,...) at namei+0x57f kern_rmdirat(c5164d80,ffffff9c,bfbdef13,0,e6ecbc80,...) at kern_rmdirat+0x54 kern_rmdir(c5164d80,bfbdef13,0,e6ecbd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5164d80,e6ecbcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6ecbd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdeabc, ebp = 0xbfbdeee8 --- Tracing command mkdir pid 1237 tid 100170 td 0xc5165000 sched_switch(c5165000,0,104,191,a2dc0fd6,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5165000,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d860c400,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d860c400,c454e22c,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d860c400,4c,c0ca8027,d860c400,e6ec7950,...) at bwait+0x6f bufwait(d860c400,0,0,0,0,...) at bufwait+0x28 breadn(c8373000,0,0,800,0,...) at breadn+0x132 bread(c8373000,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8373000,0,0,0,e6ec7a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8373000,e6ec7bf8,e6ec7c0c,0,e6ec7a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6ec7aa4,c0cdb189,c8373000,c8373000,e6ec7c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6ec7aa4,e6ec7c0c,e6ec7bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6ec7b38,c0caada1,e6ec7be0,80000,e6ec7be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6ec7b38,c0ca971d,2a2,e6ec7bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6ec7be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6ec7be0,0,c515882c,0,bfbe3643,...) at namei+0x57f kern_rmdirat(c5165000,ffffff9c,bfbe3643,0,e6ec7c80,...) at kern_rmdirat+0x54 kern_rmdir(c5165000,bfbe3643,0,e6ec7d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5165000,e6ec7cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6ec7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe31ec, ebp = 0xbfbe3618 --- Tracing command mkdir pid 1236 tid 100169 td 0xc511a900 sched_switch(c511a900,0,104,191,a13a8aec,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c511a900,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c9478000,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6ec3c28,c0cdb776,0,0,e6ec3b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6ec3c28,e6ec3c00,e6ec3b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c511a900,ffffff9c,bfbd1983,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c511a900,bfbd1983,0,1f8,e6ec3d2c,...) at kern_mkdir+0x2e mkdir(c511a900,e6ec3cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6ec3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd152c, ebp = 0xbfbd1958 --- Tracing command mkdir pid 1235 tid 100168 td 0xc511ab40 sched_switch(c511ab40,0,103,18c,b895f38a,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c511ab40,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e6ebf70c,...) at _mtx_lock_flags+0xf7 brelse(d86bf4e0,d86bf4e0,df,d86bf4e0,c56d36c0,...) at brelse+0x56f bufwrite(d86bf4e0,0,c0cc5682,726,c502e600) at bufwrite+0x16f ffs_bufwrite(d86bf4e0,0,c0cc3164,8c7,4,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c56bf580,...) at softdep_process_journal+0x658 jwait(0,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c948f0e8,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c9477984,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d8602180,c94c032c,c948f0e8,1,e6ebfb60,...) at softdep_setup_remove+0x13b ufs_dirremove(c94c9414,c948f0e8,500800c,1,c9477984,...) at ufs_dirremove+0x16e ufs_rmdir(e6ebfc34,c0cdb735,0,0,c9477984,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6ebfc34,2,e6ebfc0c,bfbcf3d3,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c511ab40,ffffff9c,bfbcf3d3,0,e6ebfc80,...) at kern_rmdirat+0x1a5 kern_rmdir(c511ab40,bfbcf3d3,0,e6ebfd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c511ab40,e6ebfcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6ebfd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbcef7c, ebp = 0xbfbcf3a8 --- Tracing command mkdir pid 1234 tid 100167 td 0xc511ad80 sched_switch(c511ad80,0,104,191,a931926c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c511ad80,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8587b60,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8587b60,c454e934,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8587b60,4c,c0ca8027,d8587b60,e6ebb950,...) at bwait+0x6f bufwait(d8587b60,0,0,0,0,...) at bufwait+0x28 breadn(c86f2000,0,0,800,0,...) at breadn+0x132 bread(c86f2000,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c86f2000,0,0,0,e6ebba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c86f2000,e6ebbbf8,e6ebbc0c,0,e6ebba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6ebbaa4,c0cdb189,c86f2000,c86f2000,e6ebbc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6ebbaa4,e6ebbc0c,e6ebbbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6ebbb38,c0caada1,e6ebbbe0,80000,e6ebbbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6ebbb38,c0ca971d,2a2,e6ebbbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6ebbbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6ebbbe0,0,c5158b2c,0,bfbdffd3,...) at namei+0x57f kern_rmdirat(c511ad80,ffffff9c,bfbdffd3,0,e6ebbc80,...) at kern_rmdirat+0x54 kern_rmdir(c511ad80,bfbdffd3,0,e6ebbd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c511ad80,e6ebbcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6ebbd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdfb7c, ebp = 0xbfbdffa8 --- Tracing command mkdir pid 1233 tid 100166 td 0xc513c000 sched_switch(c513c000,0,104,191,b896d0f6,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c513c000,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d871fb60,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d871fb60,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1960,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1960,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1960,0,4000,0,...) at bread+0x4c ffs_update(c94786cc,0,c4c09000,0,28,...) at ffs_update+0x1a2 ufs_mkdir(e6eb7c28,c0cdb776,0,0,e6eb7b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6eb7c28,e6eb7c00,e6eb7b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c513c000,ffffff9c,bfbd60b3,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c513c000,bfbd60b3,0,1f8,e6eb7d2c,...) at kern_mkdir+0x2e mkdir(c513c000,e6eb7cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6eb7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd5c5c, ebp = 0xbfbd6088 --- Tracing command mkdir pid 1232 tid 100165 td 0xc513c240 sched_switch(c513c240,0,104,191,753c0400,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c513c240,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8620760,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8620760,c454e560,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8620760,4c,c0ca8027,d8620760,e6eb3950,...) at bwait+0x6f bufwait(d8620760,0,0,0,0,...) at bufwait+0x28 breadn(c81e9ae0,0,0,800,0,...) at breadn+0x132 bread(c81e9ae0,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c81e9ae0,0,0,0,e6eb3a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c81e9ae0,e6eb3bf8,e6eb3c0c,0,e6eb3a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6eb3aa4,c0cdb189,c81e9ae0,c81e9ae0,e6eb3c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6eb3aa4,e6eb3c0c,e6eb3bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6eb3b38,c0caada1,e6eb3be0,80000,e6eb3be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6eb3b38,c0ca971d,2a2,e6eb3bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6eb3be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6eb3be0,0,c5115c2c,0,bfbe5393,...) at namei+0x57f kern_rmdirat(c513c240,ffffff9c,bfbe5393,0,e6eb3c80,...) at kern_rmdirat+0x54 kern_rmdir(c513c240,bfbe5393,0,e6eb3d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c513c240,e6eb3cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6eb3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe4f3c, ebp = 0xbfbe5368 --- Tracing command mkdir pid 1231 tid 100164 td 0xc513c480 sched_switch(c513c480,0,104,191,b6e8cc88,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c513c480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8665860,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8665860,c454e9fc,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8665860,4c,c0ca8027,d8665860,e6eaf950,...) at bwait+0x6f bufwait(d8665860,0,0,0,0,...) at bufwait+0x28 breadn(c8d29828,0,0,800,0,...) at breadn+0x132 bread(c8d29828,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8d29828,0,0,0,e6eafa40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8d29828,e6eafbf8,e6eafc0c,0,e6eafa84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6eafaa4,c0cdb189,c8d29828,c8d29828,e6eafc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6eafaa4,e6eafc0c,e6eafbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6eafb38,c0caada1,e6eafbe0,80000,e6eafbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6eafb38,c0ca971d,2a2,e6eafbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6eafbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6eafbe0,0,c5115d2c,0,bfbdc533,...) at namei+0x57f kern_rmdirat(c513c480,ffffff9c,bfbdc533,0,e6eafc80,...) at kern_rmdirat+0x54 kern_rmdir(c513c480,bfbdc533,0,e6eafd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c513c480,e6eafcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6eafd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdc0dc, ebp = 0xbfbdc508 --- Tracing command mkdir pid 1230 tid 100163 td 0xc513c6c0 sched_switch(c513c6c0,0,104,191,aeeefe86,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c513c6c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d860b080,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d860b080,c454e9e8,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d860b080,4c,c0ca8027,d860b080,e6eac950,...) at bwait+0x6f bufwait(d860b080,0,0,0,0,...) at bufwait+0x28 breadn(c8932414,0,0,800,0,...) at breadn+0x132 bread(c8932414,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8932414,0,0,0,e6eaca40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8932414,e6eacbf8,e6eacc0c,0,e6eaca84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6eacaa4,c0cdb189,c8932414,c8932414,e6eacc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6eacaa4,e6eacc0c,e6eacbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6eacb38,c0caada1,e6eacbe0,80000,e6eacbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6eacb38,c0ca971d,2a2,e6eacbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6eacbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6eacbe0,0,c5115e2c,0,bfbdef13,...) at namei+0x57f kern_rmdirat(c513c6c0,ffffff9c,bfbdef13,0,e6eacc80,...) at kern_rmdirat+0x54 kern_rmdir(c513c6c0,bfbdef13,0,e6eacd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c513c6c0,e6eaccf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6eacd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdeabc, ebp = 0xbfbdeee8 --- Tracing command mkdir pid 1229 tid 100162 td 0xc513c900 sched_switch(c513c900,0,104,191,52f265fa,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c513c900,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c94f1414,0,18,200,c4c09000,...) at ffs_update+0x1a2 ufs_mkdir(e6ea9c28,c0cdb776,0,0,e6ea9b6c,...) at ufs_mkdir+0x85a VOP_MKDIR_APV(c0daad00,e6ea9c28,e6ea9c00,e6ea9b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c513c900,ffffff9c,bfbd2613,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c513c900,bfbd2613,0,1f8,e6ea9d2c,...) at kern_mkdir+0x2e mkdir(c513c900,e6ea9cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6ea9d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd21bc, ebp = 0xbfbd25e8 --- Tracing command mkdir pid 1228 tid 100161 td 0xc513cb40 sched_switch(c513cb40,0,104,191,b89538cc,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c513cb40,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d871fb60,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d871fb60,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1960,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1960,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1960,0,4000,0,...) at bread+0x4c ffs_update(c94702b8,0,1,c513cbe4,c94702b8,...) at ffs_update+0x1a2 ufs_inactive(e6ea6b9c,c0cdb5a3,c947037c,c947037c,c94702b8,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6ea6b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c947037c,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c94702b8,c0cab46b,343,340,c5133100,...) at vrele+0x198 kern_chdir(c513cb40,bfbd4ff3,0,e6ea6d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c513cb40,e6ea6cf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6ea6d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd4b9c, ebp = 0xbfbd4fc8 --- Tracing command mkdir pid 1227 tid 100160 td 0xc513cd80 sched_switch(c513cd80,0,103,18c,b8937a46,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c513cd80,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e6ea3944,...) at _mtx_lock_flags+0xf7 brelse(d8510600,c5a41014,2,0,e6ea39c8,...) at brelse+0x56f ufs_lookup_ino(c9494414,0,e6ea3c2c,e6ea3a48,e6ea3a5c,...) at ufs_lookup_ino+0x724 ufs_lookup_ino(c9494414,e6ea3c18,e6ea3c2c,0,e6ea3aa0,...) at ufs_lookup_ino+0x9c8 ufs_lookup(e6ea3ac0,c0cdb189,c9494414,c9494414,e6ea3c2c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6ea3ac0,e6ea3c2c,e6ea3c18,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6ea3b54,c0caada1,c0dc51e0,200000,e6ea3c00,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6ea3b54,e6ea3c2c,1f1,e6ea3c18,...) at VOP_LOOKUP_APV+0xe5 lookup(e6ea3c00,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6ea3c00,0,ffffff9c,c94ad828,c5133200,...) at namei+0x57f kern_chdir(c513cd80,804ba70,0,e6ea3d2c,c0bcadc4,...) at kern_chdir+0x58 chdir(c513cd80,e6ea3cf8,4,c0cdbaa6,c0d88250,...) at chdir+0x22 syscall(e6ea3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbcf7dc, ebp = 0xbfbcfc08 --- Tracing command mkdir pid 1226 tid 100159 td 0xc513e000 sched_switch(c513e000,0,104,191,b7c2aa1c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c513e000,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d86a53a0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d86a53a0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,72dec0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,72dec0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,72dec0,0,4000,0,...) at bread+0x4c ffs_update(c91bfc3c,0,1,c513e0a4,c91bfc3c,...) at ffs_update+0x1a2 ufs_inactive(e6ea0b9c,c0cdb5a3,c91bfd00,c91bfd00,c91bfc3c,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6ea0b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c91bfd00,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c91bfc3c,c0cab46b,343,340,c5133300,...) at vrele+0x198 kern_chdir(c513e000,804ba70,0,e6ea0d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c513e000,e6ea0cf8,4,c0cdbaa6,c0d88250,...) at chdir+0x22 syscall(e6ea0d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd3f0c, ebp = 0xbfbd4338 --- Tracing command mkdir pid 1225 tid 100158 td 0xc513e240 sched_switch(c513e240,0,104,191,b89c8d30,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c513e240,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d871fb60,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d871fb60,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1960,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1960,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1960,0,4000,0,...) at bread+0x4c ffs_update(c94b2ae0,0,1,c513e2e4,c94b2ae0,...) at ffs_update+0x1a2 ufs_inactive(e6e9db9c,c0cdb5a3,c94b2ba4,c94b2ba4,c94b2ae0,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6e9db9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c94b2ba4,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c94b2ae0,c0cab46b,343,340,c5133400,...) at vrele+0x198 kern_chdir(c513e240,bfbd6d43,0,e6e9dd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c513e240,e6e9dcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6e9dd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd68ec, ebp = 0xbfbd6d18 --- Tracing command mkdir pid 1224 tid 100157 td 0xc513e480 sched_switch(c513e480,0,104,191,a1397704,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c513e480,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c94f1570,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6e9ac28,c0cdb776,0,0,e6e9ab6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6e9ac28,e6e9ac00,e6e9ab6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c513e480,ffffff9c,bfbd08c3,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c513e480,bfbd08c3,0,1f8,e6e9ad2c,...) at kern_mkdir+0x2e mkdir(c513e480,e6e9acf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6e9ad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd046c, ebp = 0xbfbd0898 --- Tracing command mkdir pid 1223 tid 100156 td 0xc513e6c0 sched_switch(c513e6c0,0,104,191,b89b69cc,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c513e6c0,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c946f15c,0,1,c513e764,c946f15c,...) at ffs_update+0x1a2 ufs_inactive(e6e97b9c,c0cdb5a3,c946f220,c946f220,c946f15c,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6e97b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c946f220,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c946f15c,c0cab46b,343,340,c5133600,...) at vrele+0x198 kern_chdir(c513e6c0,bfbd32a3,0,e6e97d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c513e6c0,e6e97cf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6e97d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd2e4c, ebp = 0xbfbd3278 --- Tracing command mkdir pid 1222 tid 100155 td 0xc513e900 sched_switch(c513e900,0,104,191,754f1bbe,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c513e900,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d854d500,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d854d500,c454e1f0,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d854d500,4c,c0ca8027,d854d500,e6e94950,...) at bwait+0x6f bufwait(d854d500,0,0,0,0,...) at bufwait+0x28 breadn(c853b570,0,0,800,0,...) at breadn+0x132 bread(c853b570,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c853b570,0,0,0,e6e94a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c853b570,e6e94bf8,e6e94c0c,0,e6e94a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e94aa4,c0cdb189,c853b570,c853b570,e6e94c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e94aa4,e6e94c0c,e6e94bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e94b38,c0caada1,e6e94be0,80000,e6e94be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e94b38,c0ca971d,2a2,e6e94bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e94be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e94be0,0,c513372c,0,bfbe3643,...) at namei+0x57f kern_rmdirat(c513e900,ffffff9c,bfbe3643,0,e6e94c80,...) at kern_rmdirat+0x54 kern_rmdir(c513e900,bfbe3643,0,e6e94d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c513e900,e6e94cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e94d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe31ec, ebp = 0xbfbe3618 --- Tracing command mkdir pid 1221 tid 100154 td 0xc513eb40 sched_switch(c513eb40,0,103,18c,b8932698,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c513eb40,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,c0cc316d,...) at _mtx_lock_flags+0xf7 brelse(d86e3c40,0,c0cc3164,870,4,...) at brelse+0x56f softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c92a5b80,...) at softdep_process_journal+0x206 jwait(8,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c9413d24,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c93fd000,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d864f620,c93c515c,c9413d24,1,e6e91b60,...) at softdep_setup_remove+0x13b ufs_dirremove(c9382984,c9413d24,500800c,1,c93fd000,...) at ufs_dirremove+0x16e ufs_rmdir(e6e91c34,c0cdb735,0,0,c93fd000,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6e91c34,2,e6e91c0c,bfbd0063,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c513eb40,ffffff9c,bfbd0063,0,e6e91c80,...) at kern_rmdirat+0x1a5 kern_rmdir(c513eb40,bfbd0063,0,e6e91d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c513eb40,e6e91cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e91d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbcfc0c, ebp = 0xbfbd0038 --- Tracing command mkdir pid 1220 tid 100153 td 0xc4e00480 sched_switch(c4e00480,0,104,191,b392c588,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c4e00480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d85b32e0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d85b32e0,c454e664,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d85b32e0,4c,c0ca8027,d85b32e0,e6e8e950,...) at bwait+0x6f bufwait(d85b32e0,0,0,0,0,...) at bufwait+0x28 breadn(c8b1d570,0,0,800,0,...) at breadn+0x132 bread(c8b1d570,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8b1d570,0,0,0,e6e8ea40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8b1d570,e6e8ebf8,e6e8ec0c,0,e6e8ea84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e8eaa4,c0cdb189,c8b1d570,c8b1d570,e6e8ec0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e8eaa4,e6e8ec0c,e6e8ebf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e8eb38,c0caada1,e6e8ebe0,80000,e6e8ebe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e8eb38,c0ca971d,2a2,e6e8ebf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e8ebe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e8ebe0,0,c513392c,0,bfbdc963,...) at namei+0x57f kern_rmdirat(c4e00480,ffffff9c,bfbdc963,0,e6e8ec80,...) at kern_rmdirat+0x54 kern_rmdir(c4e00480,bfbdc963,0,e6e8ed2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c4e00480,e6e8ecf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e8ed38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdc50c, ebp = 0xbfbdc938 --- Tracing command mkdir pid 1219 tid 100152 td 0xc4e006c0 sched_switch(c4e006c0,0,104,191,74aeedea,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c4e006c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d874af40,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d874af40,c454e740,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d874af40,4c,c0ca8027,d874af40,e6e8b950,...) at bwait+0x6f bufwait(d874af40,0,0,0,0,...) at bufwait+0x28 breadn(c8054000,0,0,800,0,...) at breadn+0x132 bread(c8054000,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8054000,0,0,0,e6e8ba40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8054000,e6e8bbf8,e6e8bc0c,0,e6e8ba84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e8baa4,c0cdb189,c8054000,c8054000,e6e8bc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e8baa4,e6e8bc0c,e6e8bbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e8bb38,c0caada1,e6e8bbe0,80000,e6e8bbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e8bb38,c0ca971d,2a2,e6e8bbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e8bbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e8bbe0,0,c5133a2c,0,bfbe70e3,...) at namei+0x57f kern_rmdirat(c4e006c0,ffffff9c,bfbe70e3,0,e6e8bc80,...) at kern_rmdirat+0x54 kern_rmdir(c4e006c0,bfbe70e3,0,e6e8bd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c4e006c0,e6e8bcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e8bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe6c8c, ebp = 0xbfbe70b8 --- Tracing command mkdir pid 1218 tid 100151 td 0xc4e00900 sched_switch(c4e00900,0,104,191,74a53a1e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c4e00900,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d877cd20,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d877cd20,c454e8d0,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d877cd20,4c,c0ca8027,d877cd20,e6e88950,...) at bwait+0x6f bufwait(d877cd20,0,0,0,0,...) at bufwait+0x28 breadn(c7b7715c,0,0,800,0,...) at breadn+0x132 bread(c7b7715c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c7b7715c,0,0,0,e6e88a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c7b7715c,e6e88bf8,e6e88c0c,0,e6e88a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e88aa4,c0cdb189,c7b7715c,c7b7715c,e6e88c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e88aa4,e6e88c0c,e6e88bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e88b38,c0caada1,e6e88be0,80000,e6e88be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e88b38,c0ca971d,2a2,e6e88bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e88be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e88be0,0,c5133b2c,0,bfbe8a03,...) at namei+0x57f kern_rmdirat(c4e00900,ffffff9c,bfbe8a03,0,e6e88c80,...) at kern_rmdirat+0x54 kern_rmdir(c4e00900,bfbe8a03,0,e6e88d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c4e00900,e6e88cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e88d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe85ac, ebp = 0xbfbe89d8 --- Tracing command mkdir pid 1217 tid 100150 td 0xc4e00b40 sched_switch(c4e00b40,0,104,191,984aeec4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c4e00b40,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8653a60,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8653a60,c454e038,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8653a60,4c,c0ca8027,d8653a60,e6e85950,...) at bwait+0x6f bufwait(d8653a60,0,0,0,0,...) at bufwait+0x28 breadn(c82f3c3c,0,0,800,0,...) at breadn+0x132 bread(c82f3c3c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c82f3c3c,0,0,0,e6e85a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c82f3c3c,e6e85bf8,e6e85c0c,0,e6e85a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e85aa4,c0cdb189,c82f3c3c,c82f3c3c,e6e85c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e85aa4,e6e85c0c,e6e85bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e85b38,c0caada1,e6e85be0,80000,e6e85be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e85b38,c0ca971d,2a2,e6e85bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e85be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e85be0,0,c5133c2c,0,bfbe5393,...) at namei+0x57f kern_rmdirat(c4e00b40,ffffff9c,bfbe5393,0,e6e85c80,...) at kern_rmdirat+0x54 kern_rmdir(c4e00b40,bfbe5393,0,e6e85d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c4e00b40,e6e85cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e85d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe4f3c, ebp = 0xbfbe5368 --- Tracing command mkdir pid 1216 tid 100149 td 0xc4e00d80 sched_switch(c4e00d80,0,104,191,b11b109e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c4e00d80,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d85604e0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d85604e0,c454e2f4,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d85604e0,4c,c0ca8027,d85604e0,e6e82950,...) at bwait+0x6f bufwait(d85604e0,0,0,0,0,...) at bufwait+0x28 breadn(c8aaa15c,0,0,800,0,...) at breadn+0x132 bread(c8aaa15c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8aaa15c,0,0,0,e6e82a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8aaa15c,e6e82bf8,e6e82c0c,0,e6e82a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e82aa4,c0cdb189,c8aaa15c,c8aaa15c,e6e82c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e82aa4,e6e82c0c,e6e82bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e82b38,c0caada1,e6e82be0,80000,e6e82be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e82b38,c0ca971d,2a2,e6e82bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e82be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e82be0,0,c5134a2c,0,bfbdd1c3,...) at namei+0x57f kern_rmdirat(c4e00d80,ffffff9c,bfbdd1c3,0,e6e82c80,...) at kern_rmdirat+0x54 kern_rmdir(c4e00d80,bfbdd1c3,0,e6e82d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c4e00d80,e6e82cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e82d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdcd6c, ebp = 0xbfbdd198 --- Tracing command mkdir pid 1215 tid 100148 td 0xc5119000 sched_switch(c5119000,0,104,191,56bc7210,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5119000,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d86f6400,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d86f6400,c454e574,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d86f6400,4c,c0ca8027,d86f6400,e6e7f950,...) at bwait+0x6f bufwait(d86f6400,0,0,0,0,...) at bufwait+0x28 breadn(c8ca315c,0,0,800,0,...) at breadn+0x132 bread(c8ca315c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8ca315c,0,0,0,e6e7fa40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8ca315c,e6e7fbf8,e6e7fc0c,0,e6e7fa84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e7faa4,c0cdb189,c8ca315c,c8ca315c,e6e7fc0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e7faa4,e6e7fc0c,e6e7fbf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e7fb38,c0caada1,e6e7fbe0,80000,e6e7fbe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e7fb38,c0ca971d,2a2,e6e7fbf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e7fbe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e7fbe0,0,c4ddc22c,0,bfbdde53,...) at namei+0x57f kern_rmdirat(c5119000,ffffff9c,bfbdde53,0,e6e7fc80,...) at kern_rmdirat+0x54 kern_rmdir(c5119000,bfbdde53,0,e6e7fd2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5119000,e6e7fcf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e7fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdd9fc, ebp = 0xbfbdde28 --- Tracing command mkdir pid 1214 tid 100147 td 0xc5119240 sched_switch(c5119240,0,104,191,52f18996,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5119240,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c94c9570,0,1,c51192e4,c94c9570,...) at ffs_update+0x1a2 ufs_inactive(e6e7cb9c,c0cdb5a3,c94c9634,c94c9634,c94c9570,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6e7cb9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c94c9634,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c94c9570,c0cab46b,343,340,c4c10500,...) at vrele+0x198 kern_chdir(c5119240,bfbd5c83,0,e6e7cd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5119240,e6e7ccf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6e7cd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd582c, ebp = 0xbfbd5c58 --- Tracing command mkdir pid 1213 tid 100146 td 0xc5119480 sched_switch(c5119480,0,104,191,7cbc8a58,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5119480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d87286c0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d87286c0,c454e9fc,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d87286c0,4c,c0ca8027,d87286c0,e6e79950,...) at bwait+0x6f bufwait(d87286c0,0,0,0,0,...) at bufwait+0x28 breadn(c8035c3c,0,0,800,0,...) at breadn+0x132 bread(c8035c3c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8035c3c,0,0,0,e6e79a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8035c3c,e6e79bf8,e6e79c0c,0,e6e79a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e79aa4,c0cdb189,c8035c3c,c8035c3c,e6e79c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e79aa4,e6e79c0c,e6e79bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e79b38,c0caada1,e6e79be0,80000,e6e79be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e79b38,c0ca971d,2a2,e6e79bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e79be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e79be0,0,c4abe42c,0,bfbe8a03,...) at namei+0x57f kern_rmdirat(c5119480,ffffff9c,bfbe8a03,0,e6e79c80,...) at kern_rmdirat+0x54 kern_rmdir(c5119480,bfbe8a03,0,e6e79d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5119480,e6e79cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e79d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe85ac, ebp = 0xbfbe89d8 --- Tracing command mkdir pid 1212 tid 100145 td 0xc51196c0 sched_switch(c51196c0,0,104,191,b89c0418,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c51196c0,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c94bbc3c,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6e76c28,c0cdb776,0,0,e6e76b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6e76c28,e6e76c00,e6e76b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c51196c0,ffffff9c,bfbd4ff3,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c51196c0,bfbd4ff3,0,1f8,e6e76d2c,...) at kern_mkdir+0x2e mkdir(c51196c0,e6e76cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6e76d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd4b9c, ebp = 0xbfbd4fc8 --- Tracing command mkdir pid 1211 tid 100144 td 0xc5119900 sched_switch(c5119900,0,104,191,b8987cca,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5119900,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c94b22b8,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6e73c28,c0cdb776,0,0,e6e73b6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6e73c28,e6e73c00,e6e73b6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c5119900,ffffff9c,bfbd0493,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c5119900,bfbd0493,0,1f8,e6e73d2c,...) at kern_mkdir+0x2e mkdir(c5119900,e6e73cf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6e73d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd003c, ebp = 0xbfbd0468 --- Tracing command mkdir pid 1210 tid 100143 td 0xc5119b40 sched_switch(c5119b40,0,104,191,af73167e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c5119b40,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8557e00,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8557e00,c454e830,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8557e00,4c,c0ca8027,d8557e00,e6e70950,...) at bwait+0x6f bufwait(d8557e00,0,0,0,0,...) at bufwait+0x28 breadn(c894ed98,0,0,800,0,...) at breadn+0x132 bread(c894ed98,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c894ed98,0,0,0,e6e70a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c894ed98,e6e70bf8,e6e70c0c,0,e6e70a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e70aa4,c0cdb189,c894ed98,c894ed98,e6e70c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e70aa4,e6e70c0c,e6e70bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e70b38,c0caada1,e6e70be0,80000,e6e70be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e70b38,c0ca971d,2a2,e6e70bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e70be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e70be0,0,c4df652c,0,bfbe0403,...) at namei+0x57f kern_rmdirat(c5119b40,ffffff9c,bfbe0403,0,e6e70c80,...) at kern_rmdirat+0x54 kern_rmdir(c5119b40,bfbe0403,0,e6e70d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c5119b40,e6e70cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e70d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdffac, ebp = 0xbfbe03d8 --- Tracing command mkdir pid 1209 tid 100142 td 0xc5119d80 sched_switch(c5119d80,0,104,191,b89c2368,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c5119d80,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c942c984,0,1,c5119e24,c942c984,...) at ffs_update+0x1a2 ufs_inactive(e6e6db9c,c0cdb5a3,c942ca48,c942ca48,c942c984,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6e6db9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c942ca48,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c942c984,c0cab46b,343,340,c4ddc800,...) at vrele+0x198 kern_chdir(c5119d80,bfbd4bc3,0,e6e6dd2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c5119d80,e6e6dcf8,4,c0cc41d9,c0d88250,...) at chdir+0x22 syscall(e6e6dd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd476c, ebp = 0xbfbd4b98 --- Tracing command mkdir pid 1208 tid 100141 td 0xc511a000 sched_switch(c511a000,0,104,191,a1a4a6c2,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c511a000,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d871a000,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d871a000,c454e4fc,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d871a000,4c,c0ca8027,d871a000,e6e6a950,...) at bwait+0x6f bufwait(d871a000,0,0,0,0,...) at bufwait+0x28 breadn(c83feae0,0,0,800,0,...) at breadn+0x132 bread(c83feae0,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c83feae0,0,0,0,e6e6aa40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c83feae0,e6e6abf8,e6e6ac0c,0,e6e6aa84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e6aaa4,c0cdb189,c83feae0,c83feae0,e6e6ac0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e6aaa4,e6e6ac0c,e6e6abf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e6ab38,c0caada1,e6e6abe0,80000,e6e6abe0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e6ab38,c0ca971d,2a2,e6e6abf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e6abe0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e6abe0,0,c4ddc12c,0,bfbe2583,...) at namei+0x57f kern_rmdirat(c511a000,ffffff9c,bfbe2583,0,e6e6ac80,...) at kern_rmdirat+0x54 kern_rmdir(c511a000,bfbe2583,0,e6e6ad2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c511a000,e6e6acf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e6ad38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe212c, ebp = 0xbfbe2558 --- Tracing command mkdir pid 1207 tid 100140 td 0xc511a240 sched_switch(c511a240,0,104,191,80935b54,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c511a240,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d862ec80,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d862ec80,c454e970,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d862ec80,4c,c0ca8027,d862ec80,e6e67950,...) at bwait+0x6f bufwait(d862ec80,0,0,0,0,...) at bufwait+0x28 breadn(c81342b8,0,0,800,0,...) at breadn+0x132 bread(c81342b8,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c81342b8,0,0,0,e6e67a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c81342b8,e6e67bf8,e6e67c0c,0,e6e67a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e67aa4,c0cdb189,c81342b8,c81342b8,e6e67c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e67aa4,e6e67c0c,e6e67bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e67b38,c0caada1,e6e67be0,80000,e6e67be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e67b38,c0ca971d,2a2,e6e67bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e67be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e67be0,0,c4df692c,0,bfbe4b33,...) at namei+0x57f kern_rmdirat(c511a240,ffffff9c,bfbe4b33,0,e6e67c80,...) at kern_rmdirat+0x54 kern_rmdir(c511a240,bfbe4b33,0,e6e67d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c511a240,e6e67cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e67d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe46dc, ebp = 0xbfbe4b08 --- Tracing command mkdir pid 1206 tid 100139 td 0xc511a480 sched_switch(c511a480,0,104,191,9a59f69c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c511a480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8719cc0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8719cc0,c454e2f4,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8719cc0,4c,c0ca8027,d8719cc0,e6e64950,...) at bwait+0x6f bufwait(d8719cc0,0,0,0,0,...) at bufwait+0x28 breadn(c82faae0,0,0,800,0,...) at breadn+0x132 bread(c82faae0,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c82faae0,0,0,0,e6e64a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c82faae0,e6e64bf8,e6e64c0c,0,e6e64a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e64aa4,c0cdb189,c82faae0,c82faae0,e6e64c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e64aa4,e6e64c0c,e6e64bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e64b38,c0caada1,e6e64be0,80000,e6e64be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e64b38,c0ca971d,2a2,e6e64bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e64be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e64be0,0,c4df6a2c,0,bfbe5393,...) at namei+0x57f kern_rmdirat(c511a480,ffffff9c,bfbe5393,0,e6e64c80,...) at kern_rmdirat+0x54 kern_rmdir(c511a480,bfbe5393,0,e6e64d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c511a480,e6e64cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e64d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe4f3c, ebp = 0xbfbe5368 --- Tracing command mkdir pid 1205 tid 100138 td 0xc511a6c0 sched_switch(c511a6c0,0,104,191,b0f6f270,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c511a6c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d85b9c80,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d85b9c80,c454e2cc,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d85b9c80,4c,c0ca8027,d85b9c80,e6e61950,...) at bwait+0x6f bufwait(d85b9c80,0,0,0,0,...) at bufwait+0x28 breadn(c8abf000,0,0,800,0,...) at breadn+0x132 bread(c8abf000,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8abf000,0,0,0,e6e61a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8abf000,e6e61bf8,e6e61c0c,0,e6e61a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e61aa4,c0cdb189,c8abf000,c8abf000,e6e61c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e61aa4,e6e61c0c,e6e61bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e61b38,c0caada1,e6e61be0,80000,e6e61be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e61b38,c0ca971d,2a2,e6e61bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e61be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e61be0,0,c4df6b2c,0,bfbdffd3,...) at namei+0x57f kern_rmdirat(c511a6c0,ffffff9c,bfbdffd3,0,e6e61c80,...) at kern_rmdirat+0x54 kern_rmdir(c511a6c0,bfbdffd3,0,e6e61d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c511a6c0,e6e61cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e61d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdfb7c, ebp = 0xbfbdffa8 --- Tracing command mkdir pid 1204 tid 100137 td 0xc4dfc000 sched_switch(c4dfc000,0,104,191,a137f1b2,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c4dfc000,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d87874e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d87874e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,19a0,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,19a0,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,19a0,0,4000,0,...) at bread+0x4c ffs_update(c9477d98,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6e5ec28,c0cdb776,0,0,e6e5eb6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6e5ec28,e6e5ec00,e6e5eb6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c4dfc000,ffffff9c,bfbcfc33,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c4dfc000,bfbcfc33,0,1f8,e6e5ed2c,...) at kern_mkdir+0x2e mkdir(c4dfc000,e6e5ecf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6e5ed38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbcf7dc, ebp = 0xbfbcfc08 --- Tracing command mkdir pid 1203 tid 100136 td 0xc4dfc240 sched_switch(c4dfc240,0,104,191,b899382e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c4dfc240,0,c0ca10ba,260,50,...) at sleepq_switch+0x15f sleepq_wait(d85174e0,50,c0ca8750,4,0,...) at sleepq_wait+0x63 __lockmgr_args(d85174e0,81900,c4b7e3b0,c0ca8750,50,...) at __lockmgr_args+0xb3f getblk(c4b7e2b8,1980,0,4000,0,...) at getblk+0x163 breadn(c4b7e2b8,1980,0,4000,0,...) at breadn+0x44 bread(c4b7e2b8,1980,0,4000,0,...) at bread+0x4c ffs_update(c946e2b8,0,c4c09000,0,1f4,...) at ffs_update+0x1a2 ufs_mkdir(e6e5bc28,c0cdb776,0,0,e6e5bb6c,...) at ufs_mkdir+0x51f VOP_MKDIR_APV(c0daad00,e6e5bc28,e6e5bc00,e6e5bb6c,0,...) at VOP_MKDIR_APV+0xc5 kern_mkdirat(c4dfc240,ffffff9c,bfbd2a43,0,1f8,...) at kern_mkdirat+0x21b kern_mkdir(c4dfc240,bfbd2a43,0,1f8,e6e5bd2c,...) at kern_mkdir+0x2e mkdir(c4dfc240,e6e5bcf8,8,c0cc199d,c0d88fe0,...) at mkdir+0x29 syscall(e6e5bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (136, FreeBSD ELF32, mkdir), eip = 0x2817d5c3, esp = 0xbfbd25ec, ebp = 0xbfbd2a18 --- Tracing command mkdir pid 1202 tid 100135 td 0xc4dfc480 sched_switch(c4dfc480,0,104,191,54fe8d5e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c4dfc480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d86b77c0,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d86b77c0,c454e434,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d86b77c0,4c,c0ca8027,d86b77c0,e6e58950,...) at bwait+0x6f bufwait(d86b77c0,0,0,0,0,...) at bufwait+0x28 breadn(c8ce36cc,0,0,800,0,...) at breadn+0x132 bread(c8ce36cc,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8ce36cc,0,0,0,e6e58a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8ce36cc,e6e58bf8,e6e58c0c,0,e6e58a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e58aa4,c0cdb189,c8ce36cc,c8ce36cc,e6e58c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e58aa4,e6e58c0c,e6e58bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e58b38,c0caada1,e6e58be0,80000,e6e58be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e58b38,c0ca971d,2a2,e6e58bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e58be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e58be0,0,c4df6e2c,0,bfbd8ec3,...) at namei+0x57f kern_rmdirat(c4dfc480,ffffff9c,bfbd8ec3,0,e6e58c80,...) at kern_rmdirat+0x54 kern_rmdir(c4dfc480,bfbd8ec3,0,e6e58d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c4dfc480,e6e58cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e58d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd8a6c, ebp = 0xbfbd8e98 --- Tracing command mkdir pid 1201 tid 100134 td 0xc4dfc6c0 sched_switch(c4dfc6c0,0,103,18c,b896f7f4,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4dfc6c0,0,c0ca7d25,5d0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,5d0,c0c9b2ec,...) at _mtx_lock_flags+0xf7 bqrelse(d87983e0,0,c0ca7d25,e29,f161b000,...) at bqrelse+0x17c bdwrite(d87983e0,c933a800,100,4000,0,...) at bdwrite+0x290 ffs_update(c92732b8,0,1,c4dfc764,c92732b8,...) at ffs_update+0x350 ufs_inactive(e6e55b9c,c0cdb5a3,c927337c,c927337c,c92732b8,...) at ufs_inactive+0x35a VOP_INACTIVE_APV(c0daad00,e6e55b9c,c0caa12b,924,c0dc5560,...) at VOP_INACTIVE_APV+0xc5 vinactive(c927337c,0,c0caa12b,88d,8,...) at vinactive+0xb1 vrele(c92732b8,c0cab46b,343,340,c502e000,...) at vrele+0x198 kern_chdir(c4dfc6c0,804ba70,0,e6e55d2c,c0bcadc4,...) at kern_chdir+0x1ed chdir(c4dfc6c0,e6e55cf8,4,c0cdbaa6,c0d88250,...) at chdir+0x22 syscall(e6e55d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (12, FreeBSD ELF32, chdir), eip = 0x280eb21f, esp = 0xbfbd2e4c, ebp = 0xbfbd3278 --- Tracing command mkdir pid 1200 tid 100118 td 0xc4c1a6c0 sched_switch(c4c1a6c0,0,104,191,560c3e72,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c4c1a6c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d870c640,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d870c640,c454e81c,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d870c640,4c,c0ca8027,d870c640,e6e13950,...) at bwait+0x6f bufwait(d870c640,0,0,0,0,...) at bufwait+0x28 breadn(c8c98414,0,0,800,0,...) at breadn+0x132 bread(c8c98414,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c8c98414,0,0,0,e6e13a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c8c98414,e6e13bf8,e6e13c0c,0,e6e13a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e13aa4,c0cdb189,c8c98414,c8c98414,e6e13c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e13aa4,e6e13c0c,e6e13bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e13b38,c0caada1,e6e13be0,80000,e6e13be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e13b38,c0ca971d,2a2,e6e13bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e13be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e13be0,0,c502ec2c,0,bfbdcd93,...) at namei+0x57f kern_rmdirat(c4c1a6c0,ffffff9c,bfbdcd93,0,e6e13c80,...) at kern_rmdirat+0x54 kern_rmdir(c4c1a6c0,bfbdcd93,0,e6e13d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c4c1a6c0,e6e13cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e13d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbdc93c, ebp = 0xbfbdcd68 --- Tracing command mkdir pid 1199 tid 100094 td 0xc4c64d80 sched_switch(c4c64d80,0,103,18c,b89b78ec,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4c64d80,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e6da770c,...) at _mtx_lock_flags+0xf7 brelse(d85908c0,d85908c0,df,d85908c0,c5c36020,...) at brelse+0x56f bufwrite(d85908c0,0,c0cc5682,726,c502e600) at bufwrite+0x16f ffs_bufwrite(d85908c0,0,c0cc3164,8c7,4,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c7e14e40,...) at softdep_process_journal+0x658 jwait(8,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c93c8984,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c942c828,0,0,0,c4c09000,...) at ffs_truncate+0x1970 handle_workitem_remove(c0f72a2c,0,c0cc3164,16b9,0,...) at handle_workitem_remove+0x2c6 softdep_setup_remove(d861ce80,c94091d0,c93c8984,1,e6da7b60,...) at softdep_setup_remove+0x13b ufs_dirremove(c9419ae0,c93c8984,500800c,1,c942c828,...) at ufs_dirremove+0x16e ufs_rmdir(e6da7c34,c0cdb735,0,0,c942c828,...) at ufs_rmdir+0xe5 VOP_RMDIR_APV(c0daad00,e6da7c34,2,e6da7c0c,bfbd0493,...) at VOP_RMDIR_APV+0xf6 kern_rmdirat(c4c64d80,ffffff9c,bfbd0493,0,e6da7c80,...) at kern_rmdirat+0x1a5 kern_rmdir(c4c64d80,bfbd0493,0,e6da7d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c4c64d80,e6da7cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6da7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbd003c, ebp = 0xbfbd0468 --- Tracing command mkdir pid 1198 tid 100133 td 0xc4dfc900 sched_switch(c4dfc900,0,104,191,80751e0a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c4dfc900,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(d8624a00,4c,c0ca8027,0,0,...) at sleepq_wait+0x63 _sleep(d8624a00,c454e754,4c,c0ca8027,0,...) at _sleep+0x36b bwait(d8624a00,4c,c0ca8027,d8624a00,e6e40950,...) at bwait+0x6f bufwait(d8624a00,0,0,0,0,...) at bufwait+0x28 breadn(c80e7984,0,0,800,0,...) at breadn+0x132 bread(c80e7984,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c80e7984,0,0,0,e6e40a40,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c80e7984,e6e40bf8,e6e40c0c,0,e6e40a84,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e40aa4,c0cdb189,c80e7984,c80e7984,e6e40c0c,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e40aa4,e6e40c0c,e6e40bf8,c4c09000,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e40b38,c0caada1,e6e40be0,80000,e6e40be0,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e40b38,c0ca971d,2a2,e6e40bf8,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e40be0,c0ca971d,ea,c5,ffffff9c,...) at lookup+0x67b namei(e6e40be0,0,c502ea2c,0,bfbe4703,...) at namei+0x57f kern_rmdirat(c4dfc900,ffffff9c,bfbe4703,0,e6e40c80,...) at kern_rmdirat+0x54 kern_rmdir(c4dfc900,bfbe4703,0,e6e40d2c,c0bcadc4,...) at kern_rmdir+0x27 rmdir(c4dfc900,e6e40cf8,4,c0cc199d,c0d88ffc,...) at rmdir+0x22 syscall(e6e40d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (137, FreeBSD ELF32, rmdir), eip = 0x280eab9b, esp = 0xbfbe42ac, ebp = 0xbfbe46d8 --- Tracing command mkdir pid 1197 tid 100054 td 0xc4b1a900 sched_switch(c4b1a900,0,104,191,3f739cee,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,5c,...) at mi_switch+0x200 sleepq_switch(c4b1a900,0,c0ca10ba,1a0,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c474bd48,5c,c0ca38dc,100,0,...) at sleepq_wait_sig+0x17 _sleep(c474bd48,c474bdd0,15c,c0ca38dc,0,...) at _sleep+0x354 kern_wait(c4b1a900,4ae,e6cd9c74,0,0,...) at kern_wait+0xb76 wait4(c4b1a900,e6cd9cf8,10,c0ca4141,c0d881c4,...) at wait4+0x3b syscall(e6cd9d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2810107b, esp = 0xbfbfe99c, ebp = 0xbfbfe9b8 --- Tracing command mkdir pid 1196 tid 100079 td 0xc4c1a000 sched_switch(c4c1a000,0,104,191,3f5f039e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,5c,...) at mi_switch+0x200 sleepq_switch(c4c1a000,0,c0ca10ba,1a0,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4c16000,5c,c0ca38dc,100,0,...) at sleepq_wait_sig+0x17 _sleep(c4c16000,c4c16088,15c,c0ca38dc,0,...) at _sleep+0x354 kern_wait(c4c1a000,4ad,e6d67c74,0,0,...) at kern_wait+0xb76 wait4(c4c1a000,e6d67cf8,10,c4c1a000,c0d881c4,...) at wait4+0x3b syscall(e6d67d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2810107b, esp = 0xbfbfe9cc, ebp = 0xbfbfe9e8 --- Tracing command bash pid 1170 tid 100124 td 0xc4dfdd80 sched_switch(c4dfdd80,0,104,191,12389fe8,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,5c,...) at mi_switch+0x200 sleepq_switch(c4dfdd80,0,c0ca10ba,1a0,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4df87f8,5c,c0ca38dc,100,0,...) at sleepq_wait_sig+0x17 _sleep(c4df87f8,c4df8880,15c,c0ca38dc,0,...) at _sleep+0x354 kern_wait(c4dfdd80,ffffffff,e6e25c74,6,0,...) at kern_wait+0xb76 wait4(c4dfdd80,e6e25cf8,10,c0ca37cb,c0d881c4,...) at wait4+0x3b syscall(e6e25d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x282be07b, esp = 0xbfbfe9cc, ebp = 0xbfbfe9e8 --- Tracing command sshd pid 1169 tid 100083 td 0xc4c176c0 sched_switch(c4c176c0,0,104,191,18ed042c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c176c0,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c4ab7e10,0,c0c9b2ec,c4c176c0,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4ab7e24,0,e6d83a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c4ab7e24,c4ab7e10,c0ca3342,603,c4cf0930,...) at _cv_wait_sig+0x240 seltdwait(c4cf0930,58,c48ffa00,c4c176c0,200246,...) at seltdwait+0xa2 kern_select(c4c176c0,a,286030b8,286030dc,0,0,20,0,28100c70) at kern_select+0x4f4 select(c4c176c0,e6d83cf8,14,c0c84e00,c0d88b2c,...) at select+0x66 syscall(e6d83d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x283ce033, esp = 0xbfbfde5c, ebp = 0xbfbfdea8 --- Tracing command sshd pid 1167 tid 100121 td 0xc4dfb480 sched_switch(c4dfb480,0,104,191,6ef9a588,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,58,...) at mi_switch+0x200 sleepq_switch(c4dfb480,0,c0ca10ba,1a0,58,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4e0ed98,58,c0ca6e77,100,0,...) at sleepq_wait_sig+0x17 _sleep(c4e0ed98,c4e0ed58,158,c0ca6e77,0) at _sleep+0x354 sbwait(c4e0ed34,4,c0ca6f46,5c5,c4e0ed58,...) at sbwait+0x76 soreceive_generic(c4e0ece0,0,e6e1cc58,0,0,...) at soreceive_generic+0x3f0 soreceive(c4e0ece0,0,e6e1cc58,0,0,0) at soreceive+0x38 soo_read(c4b63508,e6e1cc58,c4c0aa80,0,c4dfb480,...) at soo_read+0x4e dofileread(e6e1cc58,ffffffff,ffffffff,0,c4b63508,...) at dofileread+0x96 kern_readv(c4dfb480,5,e6e1cc58,e6e1cc78,1,...) at kern_readv+0x58 read(c4dfb480,e6e1ccf8,c,c0cbec26,c0d88154,...) at read+0x4f syscall(e6e1cd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x283ce0b3, esp = 0xbfbfde4c, ebp = 0xbfbfde88 --- Tracing command getty pid 1166 tid 100129 td 0xc4dfd240 sched_switch(c4dfd240,0,104,191,395cf7a4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4dfd240,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,c4dfd240,c4dfd240,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c483a070,0,c0ca56bf,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c483a070,c0df9ef0,c0ca5076,510,0,...) at _cv_wait_sig+0x240 tty_wait(c483a000,c483a070,e6e34c58,1,0,...) at tty_wait+0x71 ttydisc_read(c483a000,e6e34c58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c4838000,e6e34c58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c4b582d8,e6e34c58,c4578100,0,c4dfd240,...) at devfs_read_f+0x7e dofileread(e6e34c58,ffffffff,ffffffff,0,c4b582d8,...) at dofileread+0x96 kern_readv(c4dfd240,0,e6e34c58,e6e34c78,1,...) at kern_readv+0x58 read(c4dfd240,e6e34cf8,c,c0cb4d40,c0d88154,...) at read+0x4f syscall(e6e34d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0b3, esp = 0xbfbfedbc, ebp = 0xbfbfede8 --- Tracing command getty pid 1165 tid 100063 td 0xc481bd80 sched_switch(c481bd80,0,104,191,3968e7c0,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c481bd80,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,c481bd80,c481bd80,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c483a270,0,c0ca56bf,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c483a270,c0df9ef0,c0ca5076,510,0,...) at _cv_wait_sig+0x240 tty_wait(c483a200,c483a270,e6d03c58,1,0,...) at tty_wait+0x71 ttydisc_read(c483a200,e6d03c58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c4838100,e6d03c58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c4b63310,e6d03c58,c4578100,0,c481bd80,...) at devfs_read_f+0x7e dofileread(e6d03c58,ffffffff,ffffffff,0,c4b63310,...) at dofileread+0x96 kern_readv(c481bd80,0,e6d03c58,e6d03c78,1,...) at kern_readv+0x58 read(c481bd80,e6d03cf8,c,c0cb4d40,c0d88154,...) at read+0x4f syscall(e6d03d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0b3, esp = 0xbfbfedbc, ebp = 0xbfbfede8 --- Tracing command getty pid 1164 tid 100069 td 0xc4c04900 sched_switch(c4c04900,0,104,191,39681bb8,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c04900,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,c4c04900,c4c04900,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c468ee70,0,c0ca56bf,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c468ee70,c0df9ef0,c0ca5076,510,0,...) at _cv_wait_sig+0x240 tty_wait(c468ee00,c468ee70,e6d2bc58,1,0,...) at tty_wait+0x71 ttydisc_read(c468ee00,e6d2bc58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c4838200,e6d2bc58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c4b00930,e6d2bc58,c4578100,0,c4c04900,...) at devfs_read_f+0x7e dofileread(e6d2bc58,ffffffff,ffffffff,0,c4b00930,...) at dofileread+0x96 kern_readv(c4c04900,0,e6d2bc58,e6d2bc78,1,...) at kern_readv+0x58 read(c4c04900,e6d2bcf8,c,c0cb4d40,c0d88154,...) at read+0x4f syscall(e6d2bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0b3, esp = 0xbfbfedbc, ebp = 0xbfbfede8 --- Tracing command getty pid 1163 tid 100122 td 0xc4e00240 sched_switch(c4e00240,0,104,191,3942f2e4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4e00240,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,c4e00240,c4e00240,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c468ec70,0,c0ca56bf,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c468ec70,c0df9ef0,c0ca5076,510,0,...) at _cv_wait_sig+0x240 tty_wait(c468ec00,c468ec70,e6e1fc58,1,0,...) at tty_wait+0x71 ttydisc_read(c468ec00,e6e1fc58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c4838300,e6e1fc58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c4b2b2d8,e6e1fc58,c4578100,0,c4e00240,...) at devfs_read_f+0x7e dofileread(e6e1fc58,ffffffff,ffffffff,0,c4b2b2d8,...) at dofileread+0x96 kern_readv(c4e00240,0,e6e1fc58,e6e1fc78,1,...) at kern_readv+0x58 read(c4e00240,e6e1fcf8,c,c0cb4d40,c0d88154,...) at read+0x4f syscall(e6e1fd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0b3, esp = 0xbfbfedbc, ebp = 0xbfbfede8 --- Tracing command getty pid 1162 tid 100084 td 0xc4c17480 sched_switch(c4c17480,0,104,191,39ad5f10,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c17480,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,c4c17480,c4c17480,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4820870,0,c0ca56bf,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c4820870,c0df9ef0,c0ca5076,510,0,...) at _cv_wait_sig+0x240 tty_wait(c4820800,c4820870,e6d87c58,1,0,...) at tty_wait+0x71 ttydisc_read(c4820800,e6d87c58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c4838400,e6d87c58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c4b2b508,e6d87c58,c4578100,0,c4c17480,...) at devfs_read_f+0x7e dofileread(e6d87c58,ffffffff,ffffffff,0,c4b2b508,...) at dofileread+0x96 kern_readv(c4c17480,0,e6d87c58,e6d87c78,1,...) at kern_readv+0x58 read(c4c17480,e6d87cf8,c,c0cb4d40,c0d88154,...) at read+0x4f syscall(e6d87d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0b3, esp = 0xbfbfedbc, ebp = 0xbfbfede8 --- Tracing command getty pid 1161 tid 100127 td 0xc4dfd6c0 sched_switch(c4dfd6c0,0,104,191,3982e784,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4dfd6c0,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,c4dfd6c0,c4dfd6c0,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4820470,0,c0ca56bf,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c4820470,c0df9ef0,c0ca5076,510,0,...) at _cv_wait_sig+0x240 tty_wait(c4820400,c4820470,e6e2ec58,1,0,...) at tty_wait+0x71 ttydisc_read(c4820400,e6e2ec58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c4764500,e6e2ec58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c4cf09a0,e6e2ec58,c4578100,0,c4dfd6c0,...) at devfs_read_f+0x7e dofileread(e6e2ec58,ffffffff,ffffffff,0,c4cf09a0,...) at dofileread+0x96 kern_readv(c4dfd6c0,0,e6e2ec58,e6e2ec78,1,...) at kern_readv+0x58 read(c4dfd6c0,e6e2ecf8,c,c0cb4d40,c0d88154,...) at read+0x4f syscall(e6e2ed38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0b3, esp = 0xbfbfedbc, ebp = 0xbfbfede8 --- Tracing command getty pid 1160 tid 100132 td 0xc4dfcb40 sched_switch(c4dfcb40,0,104,191,399446b4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4dfcb40,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,c4dfcb40,c4dfcb40,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c468ea70,0,c0ca56bf,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c468ea70,c0df9ef0,c0ca5076,510,0,...) at _cv_wait_sig+0x240 tty_wait(c468ea00,c468ea70,e6e3dc58,1,0,...) at tty_wait+0x71 ttydisc_read(c468ea00,e6e3dc58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c4821400,e6e3dc58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c4cf0a48,e6e3dc58,c4578100,0,c4dfcb40,...) at devfs_read_f+0x7e dofileread(e6e3dc58,ffffffff,ffffffff,0,c4cf0a48,...) at dofileread+0x96 kern_readv(c4dfcb40,0,e6e3dc58,e6e3dc78,1,...) at kern_readv+0x58 read(c4dfcb40,e6e3dcf8,c,c0cb4d40,c0d88154,...) at read+0x4f syscall(e6e3dd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0b3, esp = 0xbfbfedbc, ebp = 0xbfbfede8 --- Tracing command getty pid 1159 tid 100110 td 0xc4b186c0 sched_switch(c4b186c0,0,104,191,399def2c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4b186c0,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,c4b186c0,c4b186c0,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c468e670,0,c0ca56bf,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c468e670,c0df9ef0,c0ca5076,510,0,...) at _cv_wait_sig+0x240 tty_wait(c468e600,c468e670,e6dfbc58,1,0,...) at tty_wait+0x71 ttydisc_read(c468e600,e6dfbc58,0,9f,0,...) at ttydisc_read+0x22c ttydev_read(c4821300,e6dfbc58,0,0,1,...) at ttydev_read+0xaa devfs_read_f(c4cf0af0,e6dfbc58,c4578100,0,c4b186c0,...) at devfs_read_f+0x7e dofileread(e6dfbc58,ffffffff,ffffffff,0,c4cf0af0,...) at dofileread+0x96 kern_readv(c4b186c0,0,e6dfbc58,e6dfbc78,1,...) at kern_readv+0x58 read(c4b186c0,e6dfbcf8,c,c0cb4d40,c0d88154,...) at read+0x4f syscall(e6dfbd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (3, FreeBSD ELF32, read), eip = 0x2818e0b3, esp = 0xbfbfedbc, ebp = 0xbfbfede8 --- Tracing command inetd pid 1137 tid 100105 td 0xc4b1a240 sched_switch(c4b1a240,0,104,191,23a1689c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4b1a240,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c4ab7cd0,0,c0c9b2ec,c4b1a240,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4ab7ce4,0,e6deca7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c4ab7ce4,c4ab7cd0,c0ca3342,603,c4b002d8,...) at _cv_wait_sig+0x240 seltdwait(c4b002d8,58,c4578100,c4b1a240,4,...) at seltdwait+0xa2 kern_select(c4b1a240,8,bfbfdfd0,0,0,0,20,0,281b6498) at kern_select+0x4f4 select(c4b1a240,e6deccf8,14,c0ca3928,c0d88b2c,...) at select+0x66 syscall(e6decd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x281a2033, esp = 0xbfbfdf8c, ebp = 0xbfbfee18 --- Tracing command moused pid 1113 tid 100109 td 0xc4b18900 sched_switch(c4b18900,0,104,191,10a38a66,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4b18900,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c4d1bc50,0,c0c9b2ec,c4b18900,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4d1bc64,0,e6df8a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c4d1bc64,c4d1bc50,c0ca3342,603,c4b00770,...) at _cv_wait_sig+0x240 seltdwait(c4b00770,58,c4578100,c4b18900,0,...) at seltdwait+0xa2 kern_select(c4b18900,6,bfbfea34,0,0,0,20,0,0) at kern_select+0x4f4 select(c4b18900,e6df8cf8,14,c0cb4d40,c0d88b2c,...) at select+0x66 syscall(e6df8d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x281ab033, esp = 0xbfbfe9bc, ebp = 0xbfbfeb58 --- Tracing command watchdogd pid 1095 tid 100071 td 0xc4c04480 sched_switch(c4c04480,0,104,191,980fced4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,5c,...) at mi_switch+0x200 sleepq_switch(c4c04480,0,c0ca10ba,1a0,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4bff7f8,5c,c0ca38dc,100,0,...) at sleepq_wait_sig+0x17 _sleep(c4bff7f8,c4bff880,15c,c0ca38dc,0,...) at _sleep+0x354 kern_wait(c4c04480,744,e6d33c74,0,0,...) at kern_wait+0xb76 wait4(c4c04480,e6d33cf8,10,c4c04480,c0d881c4,...) at wait4+0x3b syscall(e6d33d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x2811807b, esp = 0xbfbfec6c, ebp = 0xbfbfed18 --- Tracing command cron pid 1073 tid 100126 td 0xc4dfd900 sched_switch(c4dfd900,0,104,191,bba407ce,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,5c,...) at mi_switch+0x200 sleepq_switch(c4dfd900,0,c0ca10ba,1a0,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(ea61,c08c67e0,c4dfd900,0,100,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c0dfa744,5c,c0c9de11,100,0,...) at sleepq_timedwait_sig+0x1a _sleep(c0dfa744,0,15c,c0c9de11,ea61,...) at _sleep+0x31e kern_nanosleep(c4dfd900,e6e2bc64,e6e2bc6c,3c,0,...) at kern_nanosleep+0xc1 nanosleep(c4dfd900,e6e2bcf8,8,c0ca3a19,c0d89b40,...) at nanosleep+0x6f syscall(e6e2bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (240, FreeBSD ELF32, nanosleep), eip = 0x28178ad7, esp = 0xbfbfec8c, ebp = 0xbfbfecb8 --- Tracing command sendmail pid 1067 tid 100128 td 0xc4dfd480 sched_switch(c4dfd480,0,104,191,34266492,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,68,...) at mi_switch+0x200 sleepq_switch(c4dfd480,0,c0ca10ba,1a0,68,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4df7da0,68,c0c50943,100,0,...) at sleepq_wait_sig+0x17 _sleep(c4df7da0,c4df7dd0,168,c0c50943,0,...) at _sleep+0x354 kern_sigsuspend(c4dfd480,0,0,0,0,...) at kern_sigsuspend+0xae sigsuspend(c4dfd480,e6e31cf8,4,c0ca37cb,c0d8a64c,...) at sigsuspend+0x4d syscall(e6e31d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (4, FreeBSD ELF32, write), eip = 0x28332efb, esp = 0xbfbfcf8c, ebp = 0xbfbfcfb8 --- Tracing command sendmail pid 1061 tid 100060 td 0xc4af8480 sched_switch(c4af8480,0,104,191,d8b552d6,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4af8480,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(e6cf4a4c,c087d44a,c4d1b310,0,c4af8480,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c4d1b324,0,e6cf4a7c,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c4d1b324,c4d1b310,1389,603,c4b00498,...) at _cv_timedwait_sig+0x250 seltdwait(e6cf4c28,e6cf4c30,c4c1da00,c4af8480,c188b014,...) at seltdwait+0x8a kern_select(c4af8480,5,bfbfc510,0,0,e6cf4c70,20,5,0) at kern_select+0x4f4 select(c4af8480,e6cf4cf8,14,c0ca3cef,c0d88b2c,...) at select+0x66 syscall(e6cf4d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x283d7033, esp = 0xbfbfc47c, ebp = 0xbfbfcfa8 --- Tracing command sshd pid 1054 tid 100088 td 0xc481b240 sched_switch(c481b240,0,104,191,bf4ae31e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c481b240,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c4a3ca50,0,c0c9b2ec,c481b240,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4a3ca64,0,e6d95a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c4a3ca64,c4a3ca50,c0ca3342,603,c4affb98,...) at _cv_wait_sig+0x240 seltdwait(c4affb98,58,c4a86280,c481b240,c0cc7788,...) at seltdwait+0xa2 kern_select(c481b240,5,286090b0,0,0,0,20,0,8) at kern_select+0x4f4 select(c481b240,e6d95cf8,14,c0cbec26,c0d88b2c,...) at select+0x66 syscall(e6d95d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x283ce033, esp = 0xbfbfdf1c, ebp = 0xbfbfee38 --- Tracing command ntpd pid 1017 tid 100120 td 0xc4dfb6c0 sched_switch(c4dfb6c0,0,103,18c,16d3e1a,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4dfb6c0,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(800,4000,0,a72,c4b56b28,...) at getnewbuf+0x5e getblk(c4c2ec3c,0,0,800,0,...) at getblk+0x412 breadn(c4c2ec3c,0,0,800,0,...) at breadn+0x44 bread(c4c2ec3c,0,0,800,0,...) at bread+0x4c ffs_blkatoff(c4c2ec3c,0,0,0,e6e19890,...) at ffs_blkatoff+0xd1 ufs_lookup_ino(c4c2ec3c,e6e19bbc,e6e19bd0,0,e6e198d4,...) at ufs_lookup_ino+0x2d8 ufs_lookup(e6e198f4,c0cdb189,c4c2ec3c,c4c2ec3c,e6e19bd0,...) at ufs_lookup+0x2a VOP_CACHEDLOOKUP_APV(c0daad00,e6e198f4,e6e19bd0,e6e19bbc,c4578100,...) at VOP_CACHEDLOOKUP_APV+0xc5 vfs_cache_lookup(e6e19988,c0caada1,e6e19ba4,80000,e6e19ba4,...) at vfs_cache_lookup+0xd6 VOP_LOOKUP_APV(c0daad00,e6e19988,c0ca971d,2a2,e6e19bbc,...) at VOP_LOOKUP_APV+0xe5 lookup(e6e19ba4,c0ca971d,ea,c5,c4c61d48,...) at lookup+0x67b namei(e6e19ba4,e6e19a80,c0c97561,5aa,0,...) at namei+0x57f vn_open_cred(e6e19ba4,e6e19c5c,1a4,0,c4578100,...) at vn_open_cred+0x90 vn_open(e6e19ba4,e6e19c5c,1a4,c4fb9188,0,...) at vn_open+0x3b kern_openat(c4dfb6c0,ffffff9c,284170a0,0,602,...) at kern_openat+0x11f kern_open(c4dfb6c0,284170a0,0,601,1b6,...) at kern_open+0x35 open(c4dfb6c0,e6e19cf8,c,c0ca3d90,c0d8818c,...) at open+0x30 syscall(e6e19d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (5, FreeBSD ELF32, open), eip = 0x28342603, esp = 0xbfbfeb3c, ebp = 0xbfbfeb78 --- Tracing command nfsd pid 918 tid 100104 td 0xc4c1ad80 sched_switch(c4c1ad80,0,104,191,f80ee310,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c1ad80,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(e6de9bf8,c087d44a,c48ff180,0,c4c1ad80,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c4ab6350,0,e6de9c28,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c4ab6350,c48ff180,1388,3af,0,...) at _cv_timedwait_sig+0x250 svc_run_internal(e6de9d24,c0863018,c48ff180,e6de9d38,c0c9805b,...) at svc_run_internal+0x356 svc_thread_start(c48ff180,e6de9d38,c0c9805b,343,c4af7aa0,...) at svc_thread_start+0x10 fork_exit(c0a82c40,c48ff180,e6de9d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0x2e, eip = 0xc, esp = 0x33, ebp = 0 --- Tracing command nfsd pid 918 tid 100103 td 0xc4c64000 sched_switch(c4c64000,0,104,191,f717be4a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c64000,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(e6de6bf8,c087d44a,c48ff180,0,c4c64000,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c4ab6310,0,e6de6c28,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c4ab6310,c48ff180,1388,3af,5a5a5a5a,...) at _cv_timedwait_sig+0x250 svc_run_internal(e6de6d24,c0863018,c48ff180,e6de6d38,c0c9805b,...) at svc_run_internal+0x356 svc_thread_start(c48ff180,e6de6d38,c0c9805b,343,c4af7aa0,...) at svc_thread_start+0x10 fork_exit(c0a82c40,c48ff180,e6de6d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0x2e, eip = 0xc, esp = 0x33, ebp = 0 --- Tracing command nfsd pid 918 tid 100102 td 0xc4c64240 sched_switch(c4c64240,0,104,191,f82a579a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c64240,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(e6de3bf8,c087d44a,c48ff180,0,c4c64240,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c4ab62d0,0,e6de3c28,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c4ab62d0,c48ff180,1388,3af,5a5a5a5a,...) at _cv_timedwait_sig+0x250 svc_run_internal(e6de3d24,c0863018,c48ff180,e6de3d38,c0c9805b,...) at svc_run_internal+0x356 svc_thread_start(c48ff180,e6de3d38,c0c9805b,343,c4af7aa0,...) at svc_thread_start+0x10 fork_exit(c0a82c40,c48ff180,e6de3d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0x2e, eip = 0xc, esp = 0x33, ebp = 0 --- Tracing command nfsd pid 918 tid 100076 td 0xc4c01900 sched_switch(c4c01900,0,104,191,f57c048a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c01900,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(e6d47ae8,c087d44a,c48ff180,0,c4c01900,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c4d1a6d0,0,e6d47b18,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c4d1a6d0,c48ff180,1388,3af,e6d47b60,...) at _cv_timedwait_sig+0x250 svc_run_internal(c4c01a64,14,c0cc03ad,c0cbee61,e6d47c3c,...) at svc_run_internal+0x356 svc_run(c48ff180,0,c0cbf165,1fd,0,...) at svc_run+0x7f nfssvc_nfsd(bfbfe8b0,e6d47c3c,c,c4578100,e6d47c50,...) at nfssvc_nfsd+0xad nfssvc_nfsserver(c4c01900,e6d47cf8,bfbfe8b0,c4c01900,c4af7aa0,...) at nfssvc_nfsserver+0x24f nfssvc(c4c01900,e6d47cf8,8,c0ca3cef,c0d891f4,...) at nfssvc+0x83 syscall(e6d47d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (155, FreeBSD ELF32, nfssvc), eip = 0x280daadb, esp = 0xbfbfe86c, ebp = 0xbfbfead8 --- Tracing command nfsd pid 917 tid 100098 td 0xc4c64480 sched_switch(c4c64480,0,104,191,d36968c6,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c64480,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c4a88310,0,c0c9b2ec,c4c64480,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4a88324,0,e6db3a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c4a88324,c4a88310,c0ca3342,603,c4b63000,...) at _cv_wait_sig+0x240 seltdwait(c4b63000,58,c4578100,c4c64480,ebe,...) at seltdwait+0xa2 kern_select(c4c64480,5,bfbfece0,0,0,0,20,bfbffff4,1) at kern_select+0x4f4 select(c4c64480,e6db3cf8,14,c4c64480,c0d88b2c,...) at select+0x66 syscall(e6db3d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x2817e033, esp = 0xbfbfeadc, ebp = 0xbfbfee18 --- Tracing command mountd pid 915 tid 100093 td 0xc4c65000 sched_switch(c4c65000,0,104,191,31a33522,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c65000,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c4836250,0,c0c9b2ec,c4c65000,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4836264,0,e6da4a7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c4836264,c4836250,c0ca3342,603,c4b63cb0,...) at _cv_wait_sig+0x240 seltdwait(c4b63cb0,58,c4578100,c4c65000,c0f3a8f0,...) at seltdwait+0xa2 kern_select(c4c65000,9,bfbfed8c,0,0,0,20,0,281a6498) at kern_select+0x4f4 select(c4c65000,e6da4cf8,14,c0cbec26,c0d88b2c,...) at select+0x66 syscall(e6da4d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x28192033, esp = 0xbfbfed5c, ebp = 0xbfbfee28 --- Tracing command rpcbind pid 820 tid 100056 td 0xc4b1a480 sched_switch(c4b1a480,0,104,191,97637692,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4b1a480,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(e6ce1aa8,c087d44a,c4d1ac10,0,c4b1a480,...) at sleepq_catch_signals+0xb7 sleepq_timedwait_sig(c4d1ac24,0,e6ce1ad8,101,0,...) at sleepq_timedwait_sig+0x1a _cv_timedwait_sig(c4d1ac24,c4d1ac10,7531,603,e6ce1b8c,...) at _cv_timedwait_sig+0x250 seltdwait(e6ce1c5c,e6ce1c64,511,c4b1a480,e6ce1b5c,...) at seltdwait+0x8a poll(c4b1a480,e6ce1cf8,c,c0ca3a19,c0d897dc,...) at poll+0x300 syscall(e6ce1d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (209, FreeBSD ELF32, poll), eip = 0x2813f01f, esp = 0xbfbfcc0c, ebp = 0xbfbfedd8 --- Tracing command syslogd pid 746 tid 100064 td 0xc481bb40 sched_switch(c481bb40,0,103,18c,fe147b1a,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c481bb40,0,c0ca7d25,6e0,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,6e0,c08cff4c,...) at _mtx_lock_flags+0xf7 getnewbuf(1000,4000,0,a72,0,...) at getnewbuf+0x5e getblk(c4c2d15c,2,0,1000,0,...) at getblk+0x412 breadn(c4c2d15c,2,0,1000,0,...) at breadn+0x44 bread(c4c2d15c,2,0,1000,0,...) at bread+0x4c ffs_balloc_ufs2(c4c2d15c,8918,0,4f,c4578100,...) at ffs_balloc_ufs2+0xe6c ffs_write(e6d07be0,c0cdb872,c4c2d15c,0,c4c2d15c,...) at ffs_write+0x372 VOP_WRITE_APV(c0daad00,e6d07be0,c4c2d15c,25f,0,...) at VOP_WRITE_APV+0x136 vn_write(c4b00c40,c94e3180,c4578100,0,c481bb40,...) at vn_write+0x1ca dofilewrite(c94e3180,ffffffff,ffffffff,0,c4b00c40,...) at dofilewrite+0x95 kern_writev(c481bb40,11,c94e3180,c94e3180,bfbfd27c,...) at kern_writev+0x58 writev(c481bb40,e6d07cf8,c,c0ca3a19,c0d88e3c,...) at writev+0x46 syscall(e6d07d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (121, FreeBSD ELF32, writev), eip = 0x281777eb, esp = 0xbfbfd1fc, ebp = 0xbfbfd8f8 --- Tracing command devd pid 616 tid 100073 td 0xc4c04000 sched_switch(c4c04000,0,104,191,f5457d9e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4c04000,0,c0ca10ba,1a0,0,...) at sleepq_switch+0x15f sleepq_catch_signals(c087d44a,c4a3b390,0,c0c9b2ec,c4c04000,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c4a3b3a4,0,e6d3ba7c,101,0,...) at sleepq_wait_sig+0x17 _cv_wait_sig(c4a3b3a4,c4a3b390,c0ca3342,603,c4b58c40,...) at _cv_wait_sig+0x240 seltdwait(c4b58c40,58,c4578100,c4c04000,c0c94b0e,...) at seltdwait+0xa2 kern_select(c4c04000,6,bfbfe9a0,0,0,0,20,0,10) at kern_select+0x4f4 select(c4c04000,e6d3bcf8,14,c0c3c089,c0d88b2c,...) at select+0x66 syscall(e6d3bd38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (93, FreeBSD ELF32, select), eip = 0x8088ba3, esp = 0xbfbfe96c, ebp = 0xbfbfee48 --- Tracing command flowcleaner pid 19 tid 100050 td 0xc47676c0 sched_switch(c47676c0,0,104,191,e6e81994,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c47676c0,0,c0ca10ba,283,c47676c0,...) at sleepq_switch+0x15f sleepq_timedwait(c0f67288,0,e4addcc4,1,0,...) at sleepq_timedwait+0x6b _cv_timedwait(c0f67288,c0f67290,2710,3f0,0,...) at _cv_timedwait+0x250 flowtable_cleaner(0,e4addd38,c0c9805b,343,c4a51550,...) at flowtable_cleaner+0x1bf fork_exit(c0936040,0,e4addd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4addd70, ebp = 0 --- Tracing command softdepflush pid 18 tid 100049 td 0xc4767900 sched_switch(c4767900,0,103,18c,b894bd6c,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c51a8000,...) at mi_switch+0x200 turnstile_wait(c51a8000,c481a000,0,1ac,c0f66e10,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f66e10,c4767900,0,c0ca7d25,55d,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f66e10,0,c0ca7d25,55d,e4ada858,...) at _mtx_lock_flags+0xf7 brelse(d8555560,d8555560,df,d8555560,d98298c0,...) at brelse+0x56f bufwrite(d8555560,0,c0cc5682,726,c502e600) at bufwrite+0x16f ffs_bufwrite(d8555560,0,c0cc3164,8c7,c08d0d46,...) at ffs_bufwrite+0x290 softdep_process_journal(c0f72a2c,4,c0cc3164,76c,c8434740,...) at softdep_process_journal+0x658 jwait(e4ada9ec,0,c0cc3164,10c8,0,...) at jwait+0x20 softdep_setup_freeblocks(c5a9b4fc,0,0,800,0,...) at softdep_setup_freeblocks+0x7f5 ffs_truncate(c5ab0984,0,0,0,c4567600,...) at ffs_truncate+0x1970 handle_workitem_remove(0,e4adac88,2,491,8,...) at handle_workitem_remove+0x2c6 process_worklist_item(c0f72a2c,0,c0cc3164,424,c4767900,...) at process_worklist_item+0x1e2 softdep_process_worklist(c5110000,0,c0cc3164,3c6,3e8,...) at softdep_process_worklist+0x81 softdep_flush(0,e4adad38,c0c9805b,343,c4a517f8,...) at softdep_flush+0x287 fork_exit(c0aca920,0,e4adad38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4adad70, ebp = 0 --- Tracing command vnlru pid 17 tid 100048 td 0xc4767b40 sched_switch(c4767b40,0,104,191,85f19436,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,50,...) at mi_switch+0x200 sleepq_switch(c4767b40,0,c0ca10ba,283,0,...) at sleepq_switch+0x15f sleepq_timedwait(c4a51aa0,50,c0cab0fb,0,0,...) at sleepq_timedwait+0x6b _sleep(c4a51aa0,c0f67054,250,c0cab0fb,3e8,...) at _sleep+0x339 vnlru_proc(0,e4ad7d38,c0c9805b,343,c4a51aa0,...) at vnlru_proc+0xe7 fork_exit(c09218e0,0,e4ad7d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4ad7d70, ebp = 0 --- Tracing command syncer pid 16 tid 100047 td 0xc4767d80 sched_switch(c4767d80,0,103,18c,79efec9c,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c4dff480,...) at mi_switch+0x200 turnstile_wait(c4dff480,c513eb40,0,1ac,c0f72a2c,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f72a2c,c4767d80,0,c0cc3164,25b9,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f72a2c,0,c0cc3164,25b9,c4b5f920,...) at _mtx_lock_flags+0xf7 softdep_get_depcounts(c4ab1b50,e4ad4c08,e4ad4c04,506,4,...) at softdep_get_depcounts+0x34 ffs_sync(c4ab1b50,3,c0caa12b,d74,c4ab1b50,...) at ffs_sync+0x10d sync_fsync(e4ad4c7c,c0cdaf21,c4b5f8ec,e4ad4c7c,c4b5f828,...) at sync_fsync+0x18f VOP_FSYNC_APV(c0d99f40,e4ad4c7c,c0caa12b,69d,c4767d80,...) at VOP_FSYNC_APV+0xc5 sync_vnode(c0f67094,c0f67080,3e8,6cc,4e20,...) at sync_vnode+0x16b sched_sync(0,e4ad4d38,c0c9805b,343,c4a51d48,...) at sched_sync+0x273 fork_exit(c0920d10,0,e4ad4d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4ad4d70, ebp = 0 --- Tracing command bufdaemon pid 15 tid 100046 td 0xc481a000 sched_switch(c481a000,0,103,18c,b894498e,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c4dff480,...) at mi_switch+0x200 turnstile_wait(c4dff480,c513eb40,0,1ac,c0f72a2c,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f72a2c,c481a000,0,c0cc3164,24c2,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f72a2c,0,c0cc3164,24c2,d858f200,...) at _mtx_lock_flags+0xf7 softdep_count_dependencies(d858f200,0,c0ca7d25,8ca,0,...) at softdep_count_dependencies+0x30 flushbufqueues(ce,c0c9b2ec,c457b330,0,0,...) at flushbufqueues+0x450 buf_do_flush(c457b2a8,0,c0ca7d25,859,64,...) at buf_do_flush+0x19 buf_daemon(0,e4ad1d38,c0c9805b,343,c457b2a8,...) at buf_daemon+0xba fork_exit(c0908f20,0,e4ad1d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4ad1d70, ebp = 0 --- Tracing command pagezero pid 9 tid 100045 td 0xc481a240 sched_switch(c481a240,0,104,191,e0379992,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c481a240,0,c0ca10ba,283,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0f73894,0,c0ccadc5,0,0,...) at sleepq_timedwait+0x6b _sleep(c0f73894,c0f73380,0,c0ccadc5,493e0,...) at _sleep+0x339 vm_pagezero(0,e4aced38,c0c9805b,343,c457b550,...) at vm_pagezero+0xdc fork_exit(c0b09130,0,e4aced38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4aced70, ebp = 0 --- Tracing command vmdaemon pid 8 tid 100044 td 0xc481a480 sched_switch(c481a480,0,104,191,e2fb0478,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,68,...) at mi_switch+0x200 sleepq_switch(c481a480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(c0f734c4,68,c0ca8669,0,0,...) at sleepq_wait+0x63 _sleep(c0f734c4,c0f734c8,68,c0ca8669,0,...) at _sleep+0x36b vm_daemon(0,e4acbd38,c0c9805b,343,c457b7f8,...) at vm_daemon+0x59 fork_exit(c0b035d0,0,e4acbd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4acbd70, ebp = 0 --- Tracing command pagedaemon pid 7 tid 100043 td 0xc481a6c0 sched_switch(c481a6c0,0,104,191,f08c9f3a,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,44,...) at mi_switch+0x200 sleepq_switch(c481a6c0,0,c0ca10ba,283,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0f7348c,44,c0ca8669,0,0,...) at sleepq_timedwait+0x6b _sleep(c0f7348c,c0f73380,44,c0ca8669,1388,...) at _sleep+0x339 vm_pageout(0,e4ac8d38,c0c9805b,343,c457baa0,...) at vm_pageout+0x2bb fork_exit(c0b04470,0,e4ac8d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4ac8d70, ebp = 0 --- Tracing command fdc0 pid 6 tid 100041 td 0xc481ab40 sched_switch(c481ab40,0,104,191,800afd9e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c481ab40,0,c0ca10ba,283,0,...) at sleepq_switch+0x15f sleepq_timedwait(c468e83c,4c,c0c924e1,0,0,...) at sleepq_timedwait+0x6b _sleep(c468e83c,c468e8f0,4c,c0c924e1,3e8,...) at _sleep+0x339 fdc_thread(c468e800,e4ac2d38,c0c9805b,343,c457bd48,...) at fdc_thread+0x27d fork_exit(c0b866b0,c468e800,e4ac2d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4ac2d70, ebp = 0 --- Tracing command usb pid 14 tid 100034 td 0xc47656c0 sched_switch(c47656c0,0,104,191,655ba9a4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c47656c0,0,c0ca10ba,260,c47656c0,...) at sleepq_switch+0x15f sleepq_wait(c479edac,0,c4362cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c479edac,c479ee4c,c0c8b553,6c,c479edb4,...) at _cv_wait+0x240 usb_process(c479eda4,c4362d38,c0c9805b,343,c474b000,...) at usb_process+0x193 fork_exit(c07bf6e0,c479eda4,c4362d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4362d70, ebp = 0 --- Tracing command usb pid 14 tid 100033 td 0xc4765900 sched_switch(c4765900,0,104,191,9f4363ae,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4765900,0,c0ca10ba,260,c4765900,...) at sleepq_switch+0x15f sleepq_wait(c479ed7c,0,c435fcbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c479ed7c,c479ee4c,c0c8b553,6c,c479ed84,...) at _cv_wait+0x240 usb_process(c479ed74,c435fd38,c0c9805b,343,c474b000,...) at usb_process+0x193 fork_exit(c07bf6e0,c479ed74,c435fd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc435fd70, ebp = 0 --- Tracing command usb pid 14 tid 100032 td 0xc4765b40 sched_switch(c4765b40,0,104,191,64e555a0,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4765b40,0,c0ca10ba,260,c4765b40,...) at sleepq_switch+0x15f sleepq_wait(c479ed4c,0,c435ccbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c479ed4c,c479ee4c,c0c8b553,6c,c479ed54,...) at _cv_wait+0x240 usb_process(c479ed44,c435cd38,c0c9805b,343,c474b000,...) at usb_process+0x193 fork_exit(c07bf6e0,c479ed44,c435cd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc435cd70, ebp = 0 --- Tracing command usb pid 14 tid 100031 td 0xc4765d80 sched_switch(c4765d80,0,104,191,64e5265c,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4765d80,0,c0ca10ba,260,c4765d80,...) at sleepq_switch+0x15f sleepq_wait(c479ed1c,0,c4359cbc,1,0,...) at sleepq_wait+0x63 _cv_wait(c479ed1c,c479ee4c,c0c8b553,6c,c479ed24,...) at _cv_wait+0x240 usb_process(c479ed14,c4359d38,c0c9805b,343,c474b000,...) at usb_process+0x193 fork_exit(c07bf6e0,c479ed14,c4359d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4359d70, ebp = 0 --- Tracing command xpt_thrd pid 5 tid 100023 td 0xc4756000 sched_switch(c4756000,0,104,191,64e4e690,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c4756000,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(c0dc6954,4c,c0c3723a,0,0,...) at sleepq_wait+0x63 _sleep(c0dc6954,c0dc696c,4c,c0c3723a,0,...) at _sleep+0x36b xpt_scanner_thread(0,c431ad38,c0c9805b,343,c474b2a8,...) at xpt_scanner_thread+0x4a fork_exit(c0484a60,0,c431ad38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc431ad70, ebp = 0 --- Tracing command yarrow pid 13 tid 100017 td 0xc457e240 sched_switch(c457e240,0,104,191,da0bf096,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c457e240,0,c0ca10ba,283,2,...) at sleepq_switch+0x15f sleepq_timedwait(c0dfa5a4,0,c0c924e1,2,0,...) at sleepq_timedwait+0x6b _sleep(c0dfa5a4,0,0,c0c924e1,64,...) at _sleep+0x339 pause(c0c924e1,64,c0c7f4de,111,0,...) at pause+0x47 random_kthread(0,c4308d38,c0c9805b,343,c474b550,...) at random_kthread+0x1ef fork_exit(c0738120,0,c4308d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4308d70, ebp = 0 --- Tracing command g_down pid 4 tid 100015 td 0xc457e6c0 sched_switch(c457e6c0,0,104,191,b89d7946,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c457e6c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(c0df8364,4c,c0c924e1,0,0,...) at sleepq_wait+0x63 _sleep(c0df8364,c0df82c8,24c,c0c924e1,0,...) at _sleep+0x36b g_io_schedule_down(c457e6c0,0,c0c93ba9,74,0,...) at g_io_schedule_down+0x56 g_down_procbody(0,c4302d38,c0c9805b,343,c457a000,...) at g_down_procbody+0x8d fork_exit(c082a0e0,0,c4302d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4302d70, ebp = 0 --- Tracing command g_up pid 3 tid 100014 td 0xc457e900 sched_switch(c457e900,0,103,18c,b89e9e88,...) at sched_switch+0x406 mi_switch(103,0,c0ca193f,2e1,c4dff480,...) at mi_switch+0x200 turnstile_wait(c4dff480,c513eb40,0,1ac,c0f72a2c,...) at turnstile_wait+0x48a _mtx_lock_sleep(c0f72a2c,c457e900,0,c0cc3164,1c71,...) at _mtx_lock_sleep+0x14d _mtx_lock_flags(c0f72a2c,0,c0cc3164,1c71,54,...) at _mtx_lock_flags+0xf7 softdep_disk_write_complete(d87b5160,c42ffc28,c08cff4c,c0f3b130,c457e9a4,...) at softdep_disk_write_complete+0x4a bufdone_finish(d87b5160,c1879000,d87b5160,c5834000,c42ffc98,...) at bufdone_finish+0x26 bufdone(d87b5160,c454e538) at bufdone+0x6a g_vfs_done(c5834000,0,c0ca7d25,c16,c5834000,...) at g_vfs_done+0x85 biodone(c5834000,c0df82e8,24c,c0c924e1,0,...) at biodone+0xa5 g_io_schedule_up(c457e900,0,c0c93ba9,5d,0,...) at g_io_schedule_up+0xc7 g_up_procbody(0,c42ffd38,c0c9805b,343,c457a2a8,...) at g_up_procbody+0x8d fork_exit(c082a170,0,c42ffd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42ffd70, ebp = 0 --- Tracing command g_event pid 2 tid 100013 td 0xc457eb40 sched_switch(c457eb40,0,104,191,dba7fe08,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,4c,...) at mi_switch+0x200 sleepq_switch(c457eb40,0,c0ca10ba,283,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0df8358,4c,c0c924e1,0,0,...) at sleepq_timedwait+0x6b _sleep(c0df8358,0,4c,c0c924e1,64,...) at _sleep+0x339 g_event_procbody(0,c42fcd38,c0c9805b,343,c457a550,...) at g_event_procbody+0xcb fork_exit(c082a200,0,c42fcd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42fcd70, ebp = 0 --- Tracing command intr pid 12 tid 100042 td 0xc481a900 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100040 td 0xc481ad80 sched_switch(c481ad80,0,109,191,5357fda8,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c47acef0,...) at mi_switch+0x200 ithread_loop(c4815b20,e4ab5d38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c4815b20,e4ab5d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4ab5d70, ebp = 0 --- Tracing command intr pid 12 tid 100039 td 0xc481b000 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100038 td 0xc4756d80 sched_switch(c4756d80,0,109,191,646e7800,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c4578070,...) at mi_switch+0x200 ithread_loop(c480dca0,e4aafd38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c480dca0,e4aafd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4aafd70, ebp = 0 --- Tracing command intr pid 12 tid 100037 td 0xc4765000 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100036 td 0xc4765240 sched_switch(c4765240,0,109,191,b97275b6,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c45c1370,...) at mi_switch+0x200 ithread_loop(c480d820,e4aa6d38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c480d820,e4aa6d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4aa6d70, ebp = 0 --- Tracing command intr pid 12 tid 100035 td 0xc4765480 sched_switch(c4765480,0,109,191,c8650366,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c45c11f0,...) at mi_switch+0x200 ithread_loop(c47afb10,e4aa0d38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c47afb10,e4aa0d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xe4aa0d70, ebp = 0 --- Tracing command intr pid 12 tid 100030 td 0xc4767000 sched_switch(c4767000,0,109,191,643ca348,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c45c1270,...) at mi_switch+0x200 ithread_loop(c4784830,c4356d38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c4784830,c4356d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4356d70, ebp = 0 --- Tracing command intr pid 12 tid 100028 td 0xc4767480 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100024 td 0xc45c3d80 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100022 td 0xc4756240 sched_switch(c4756240,0,109,191,273975c2,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c4714b70,...) at mi_switch+0x200 ithread_loop(c4516940,c4317d38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c4516940,c4317d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4317d70, ebp = 0 --- Tracing command intr pid 12 tid 100021 td 0xc4756480 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100019 td 0xc4756900 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100012 td 0xc457ed80 sched_switch(c457ed80,0,109,191,e6e6d756,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c45c1c70,...) at mi_switch+0x200 ithread_loop(c4579090,c42f9d38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c4579090,c42f9d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42f9d70, ebp = 0 --- Tracing command intr pid 12 tid 100011 td 0xc45c3000 sched_switch(c45c3000,0,109,191,9b5fe080,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c45c1cf0,...) at mi_switch+0x200 ithread_loop(c45790a0,c42f6d38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c45790a0,c42f6d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42f6d70, ebp = 0 --- Tracing command intr pid 12 tid 100010 td 0xc45c3240 sched_switch(c45c3240,0,109,191,90ac0d60,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c45c1d70,...) at mi_switch+0x200 ithread_loop(c45790b0,c42f3d38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c45790b0,c42f3d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42f3d70, ebp = 0 --- Tracing command intr pid 12 tid 100009 td 0xc45c3480 sched_switch(c45c3480,0,109,191,dba7bc70,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c45c1df0,...) at mi_switch+0x200 ithread_loop(c45790c0,c42f0d38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c45790c0,c42f0d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42f0d70, ebp = 0 --- Tracing command intr pid 12 tid 100008 td 0xc457c000 fork_trampoline() at fork_trampoline Tracing command intr pid 12 tid 100007 td 0xc457c240 sched_switch(c457c240,0,109,191,53abcefc,...) at sched_switch+0x406 mi_switch(109,0,c0c982da,52d,c45c1ef0,...) at mi_switch+0x200 ithread_loop(c45790e0,c42ead38,c0c9805b,343,c457a7f8,...) at ithread_loop+0x1f6 fork_exit(c0866000,c45790e0,c42ead38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42ead70, ebp = 0 --- Tracing command idle pid 11 tid 100006 td 0xc457c480 kdb_enter(c0c45a81,c0c62291,0,31bc825,0,...) at kdb_enter+0x3a hardclock(0,c0ba1885,0,1f4,c4820200,...) at hardclock+0x11d lapic_handle_timer(c42e4c34) at lapic_handle_timer+0x9f Xtimerint() at Xtimerint+0x1f --- interrupt, eip = 0xc0ba1885, esp = 0xc42e4c74, ebp = 0xc42e4c74 --- acpi_cpu_c1(1,0,0,c08af9c1,c0e0cde0,...) at acpi_cpu_c1+0x5 acpi_cpu_idle(c42e4cb4,c0bb8fdb,1,c42e4cf8,c08afcbe,...) at acpi_cpu_idle+0x11c cpu_idle_acpi(1,c42e4cf8,c08afcbe,1,c42e4cd4,...) at cpu_idle_acpi+0x1b cpu_idle(1,c42e4cd4,c0c9e6ed,3b0,c457c480,...) at cpu_idle+0x1b sched_idletd(0,c42e4d38,c0c9805b,343,c457aaa0,...) at sched_idletd+0x23e fork_exit(c08afa80,0,c42e4d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42e4d70, ebp = 0 --- Tracing command idle pid 11 tid 100005 td 0xc457c6c0 cpustop_handler(2,c42e1c28,c0bcb046,c42e1bb8,c087d094,...) at cpustop_handler+0x32 ipi_nmi_handler(c42e1bb8,c087d094,c0dfa7bc,4,c457aaa0,...) at ipi_nmi_handler+0x2f trap(c42e1c34) at trap+0x36 calltrap() at calltrap+0x6 --- trap 0x13, eip = 0xc0ba1885, esp = 0xc42e1c74, ebp = 0xc42e1c74 --- acpi_cpu_c1(1,0,1,c08af9c1,c0e0cde0,...) at acpi_cpu_c1+0x5 acpi_cpu_idle(c42e1cb4,c0bb8fdb,0,c42e1cf8,c08afcbe,...) at acpi_cpu_idle+0x11c cpu_idle_acpi(0,c42e1cf8,c08afcbe,0,c42e1cd4,...) at cpu_idle_acpi+0x1b cpu_idle(0,c42e1cd4,c0c9e6ed,a09,c457c6c0,...) at cpu_idle+0x1b sched_idletd(0,c42e1d38,c0c9805b,343,c457aaa0,...) at sched_idletd+0x23e fork_exit(c08afa80,0,c42e1d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42e1d70, ebp = 0 --- Tracing command idle pid 11 tid 100004 td 0xc457c900 cpustop_handler(4,c42dec28,c0bcb046,c42debb8,c087d094,...) at cpustop_handler+0x32 ipi_nmi_handler(c42debb8,c087d094,c0dfa7f8,4,c457aaa0,...) at ipi_nmi_handler+0x2f trap(c42dec34) at trap+0x36 calltrap() at calltrap+0x6 --- trap 0x13, eip = 0xc0ba1885, esp = 0xc42dec74, ebp = 0xc42dec74 --- acpi_cpu_c1(1,0,2,c08af9c1,c0e0cde0,...) at acpi_cpu_c1+0x5 acpi_cpu_idle(c42decb4,c0bb8fdb,0,c42decf8,c08afcbe,...) at acpi_cpu_idle+0x11c cpu_idle_acpi(0,c42decf8,c08afcbe,0,c42decd4,...) at cpu_idle_acpi+0x1b cpu_idle(0,c42decd4,c0c9e6ed,3b0,c457c900,...) at cpu_idle+0x1b sched_idletd(0,c42ded38,c0c9805b,343,c457aaa0,...) at sched_idletd+0x23e fork_exit(c08afa80,0,c42ded38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42ded70, ebp = 0 --- Tracing command idle pid 11 tid 100003 td 0xc457cb40 cpustop_handler(8,c42dbc28,c0bcb046,c42dbbb8,c087d094,...) at cpustop_handler+0x32 ipi_nmi_handler(c42dbbb8,c087d094,c0dfa834,4,c457aaa0,...) at ipi_nmi_handler+0x2f trap(c42dbc34) at trap+0x36 calltrap() at calltrap+0x6 --- trap 0x13, eip = 0xc0ba1885, esp = 0xc42dbc74, ebp = 0xc42dbc74 --- acpi_cpu_c1(1,0,3,c08af9c1,c0e0cde0,...) at acpi_cpu_c1+0x5 acpi_cpu_idle(c42dbcb4,c0bb8fdb,0,c42dbcf8,c08afcbe,...) at acpi_cpu_idle+0x11c cpu_idle_acpi(0,c42dbcf8,c08afcbe,0,c42dbcd4,...) at cpu_idle_acpi+0x1b cpu_idle(0,c42dbcd4,c0c9e6ed,3b0,c457cb40,...) at cpu_idle+0x1b sched_idletd(0,c42dbd38,c0c9805b,343,c457aaa0,...) at sched_idletd+0x23e fork_exit(c08afa80,0,c42dbd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42dbd70, ebp = 0 --- Tracing command init pid 1 tid 100002 td 0xc457cd80 sched_switch(c457cd80,0,104,191,357c7c82,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,5c,...) at mi_switch+0x200 sleepq_switch(c457cd80,0,c0ca10ba,1a0,5c,...) at sleepq_switch+0x15f sleepq_catch_signals(c0ca10ba,160,0,100,100,...) at sleepq_catch_signals+0xb7 sleepq_wait_sig(c457ad48,5c,c0ca38dc,100,0,...) at sleepq_wait_sig+0x17 _sleep(c457ad48,c457add0,15c,c0ca38dc,0,...) at _sleep+0x354 kern_wait(c457cd80,ffffffff,c42d7c74,0,0,...) at kern_wait+0xb76 wait4(c457cd80,c42d7cf8,10,c457cd80,c0d881c4,...) at wait4+0x3b syscall(c42d7d38) at syscall+0x2b4 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (7, FreeBSD ELF32, wait4), eip = 0x8054def, esp = 0xbfbfe90c, ebp = 0xbfbfe928 --- Tracing command audit pid 10 tid 100001 td 0xc457e000 sched_switch(c457e000,0,104,191,64df43bc,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c457e000,0,c0ca10ba,260,c457e000,...) at sleepq_switch+0x15f sleepq_wait(c0f722c0,0,c42d4c9c,1,0,...) at sleepq_wait+0x63 _cv_wait(c0f722c0,c0f722a4,c0cc1109,194,0,...) at _cv_wait+0x240 audit_worker(0,c42d4d38,c0c9805b,343,c457b000,...) at audit_worker+0x84 fork_exit(c0a92d60,0,c42d4d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc42d4d70, ebp = 0 --- Tracing command kernel pid 0 tid 100029 td 0xc4767240 sched_switch(c4767240,0,104,191,643c06b4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4767240,0,c0ca10ba,260,c4767240,...) at sleepq_switch+0x15f sleepq_wait(c4782340,0,c0c9d759,c0c924e1,0,...) at sleepq_wait+0x63 msleep_spin(c4782340,c4782358,c0c924e1,0,c0c9b2ec,...) at msleep_spin+0x21d taskqueue_thread_loop(c478a5a0,c4352d38,c0c9805b,343,c0df8440,...) at taskqueue_thread_loop+0x94 fork_exit(c08c9200,c478a5a0,c4352d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4352d70, ebp = 0 --- Tracing command kernel pid 0 tid 100027 td 0xc45c36c0 sched_switch(c45c36c0,0,104,191,c97ce164,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c45c36c0,0,c0ca10ba,260,c45c36c0,...) at sleepq_switch+0x15f sleepq_wait(c4749100,0,c0c9d759,c0c924e1,0,...) at sleepq_wait+0x63 msleep_spin(c4749100,c4749118,c0c924e1,0,c0c9b2ec,...) at msleep_spin+0x21d taskqueue_thread_loop(c0dc97a0,c4326d38,c0c9805b,343,c0df8440,...) at taskqueue_thread_loop+0x94 fork_exit(c08c9200,c0dc97a0,c4326d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4326d70, ebp = 0 --- Tracing command kernel pid 0 tid 100026 td 0xc45c3900 sched_switch(c45c3900,0,104,191,c97cc048,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c45c3900,0,c0ca10ba,260,c45c3900,...) at sleepq_switch+0x15f sleepq_wait(c4749100,0,c0c9d759,c0c924e1,0,...) at sleepq_wait+0x63 msleep_spin(c4749100,c4749118,c0c924e1,0,c0c9b2ec,...) at msleep_spin+0x21d taskqueue_thread_loop(c0dc97a0,c4323d38,c0c9805b,343,c0df8440,...) at taskqueue_thread_loop+0x94 fork_exit(c08c9200,c0dc97a0,c4323d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4323d70, ebp = 0 --- Tracing command kernel pid 0 tid 100025 td 0xc45c3b40 sched_switch(c45c3b40,0,104,191,c97c9ad8,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c45c3b40,0,c0ca10ba,260,c45c3b40,...) at sleepq_switch+0x15f sleepq_wait(c4749100,0,c0c9d759,c0c924e1,0,...) at sleepq_wait+0x63 msleep_spin(c4749100,c4749118,c0c924e1,0,c0c9b2ec,...) at msleep_spin+0x21d taskqueue_thread_loop(c0dc97a0,c4320d38,c0c9805b,343,c0df8440,...) at taskqueue_thread_loop+0x94 fork_exit(c08c9200,c0dc97a0,c4320d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4320d70, ebp = 0 --- Tracing command kernel pid 0 tid 100020 td 0xc47566c0 sched_switch(c47566c0,0,104,191,df8c23e4,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c47566c0,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(c4749380,0,c0c924e1,0,0,...) at sleepq_wait+0x63 _sleep(c4749380,c4749398,0,c0c924e1,0,...) at _sleep+0x36b taskqueue_thread_loop(c0e0cfc8,c4311d38,c0c9805b,343,c0df8440,...) at taskqueue_thread_loop+0xba fork_exit(c08c9200,c0e0cfc8,c4311d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4311d70, ebp = 0 --- Tracing command kernel pid 0 tid 100018 td 0xc4756b40 sched_switch(c4756b40,0,104,191,c9692168,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c4756b40,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(c4749600,0,c0c924e1,0,0,...) at sleepq_wait+0x63 _sleep(c4749600,c4749618,0,c0c924e1,0,...) at _sleep+0x36b taskqueue_thread_loop(c0df8cd0,c430bd38,c0c9805b,343,c0df8440,...) at taskqueue_thread_loop+0xba fork_exit(c08c9200,c0df8cd0,c430bd38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc430bd70, ebp = 0 --- Tracing command kernel pid 0 tid 100016 td 0xc457e480 sched_switch(c457e480,0,104,191,2e518fa,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,0,...) at mi_switch+0x200 sleepq_switch(c457e480,0,c0ca10ba,260,0,...) at sleepq_switch+0x15f sleepq_wait(c4561dc0,0,c0c924e1,0,0,...) at sleepq_wait+0x63 _sleep(c4561dc0,c4561dd8,0,c0c924e1,0,...) at _sleep+0x36b taskqueue_thread_loop(c0e0ba60,c4305d38,c0c9805b,343,c0df8440,...) at taskqueue_thread_loop+0xba fork_exit(c08c9200,c0e0ba60,c4305d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xc4305d70, ebp = 0 --- Tracing command kernel pid 0 tid 100000 td 0xc0df86f0 sched_switch(c0df86f0,0,104,191,dd8ebe8e,...) at sched_switch+0x406 mi_switch(104,0,c0ca10ba,1eb,44,...) at mi_switch+0x200 sleepq_switch(c0df86f0,0,c0ca10ba,283,0,...) at sleepq_switch+0x15f sleepq_timedwait(c0df8440,44,c0c9ef62,0,0,...) at sleepq_timedwait+0x6b _sleep(c0df8440,0,44,c0c9ef62,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: 1007 MB Dumping 151 MB: 136 120 104 88 72 56 40 24 8 Dump complete = 0xf db:0:doadump> reset $ svn diff -x -p /usr/src/sys Index: /usr/src/sys/ufs/ufs/ufs_dirhash.c =================================================================== --- /usr/src/sys/ufs/ufs/ufs_dirhash.c (revision 200565) +++ /usr/src/sys/ufs/ufs/ufs_dirhash.c (working copy) @@ -68,8 +68,6 @@ __FBSDID("$FreeBSD$"); static MALLOC_DEFINE(M_DIRHASH, "ufs_dirhash", "UFS directory hash tables"); -static SYSCTL_NODE(_vfs, OID_AUTO, ufs, CTLFLAG_RD, 0, "UFS filesystem"); - static int ufs_mindirhashsize = DIRBLKSIZ * 5; SYSCTL_INT(_vfs_ufs, OID_AUTO, dirhash_minsize, CTLFLAG_RW, &ufs_mindirhashsize, Index: /usr/src/sys/ufs/ufs/ufs_vnops.c =================================================================== --- /usr/src/sys/ufs/ufs/ufs_vnops.c (revision 200565) +++ /usr/src/sys/ufs/ufs/ufs_vnops.c (working copy) @@ -114,6 +114,8 @@ static vop_close_t ufsfifo_close; static vop_kqfilter_t ufsfifo_kqfilter; static vop_pathconf_t ufsfifo_pathconf; +SYSCTL_NODE(_vfs, OID_AUTO, ufs, CTLFLAG_RD, 0, "UFS filesystem"); + /* * A virgin directory (no blushing please). */ @@ -902,6 +904,9 @@ ufs_link(ap) error = EXDEV; goto out; } + if (VTOI(tdvp)->i_effnlink < 2) + panic("ufs_link: Bad link count %d on parent", + VTOI(tdvp)->i_effnlink); ip = VTOI(vp); if ((nlink_t)ip->i_nlink >= LINK_MAX) { error = EMLINK; @@ -916,7 +921,7 @@ ufs_link(ap) DIP_SET(ip, i_nlink, ip->i_nlink); ip->i_flag |= IN_CHANGE; if (DOINGSOFTDEP(vp)) - softdep_change_linkcnt(ip); + softdep_setup_link(VTOI(tdvp), ip); error = UFS_UPDATE(vp, !(DOINGSOFTDEP(vp) | DOINGASYNC(vp))); if (!error) { ufs_makedirentry(ip, cnp, &newdir); @@ -929,7 +934,7 @@ ufs_link(ap) DIP_SET(ip, i_nlink, ip->i_nlink); ip->i_flag |= IN_CHANGE; if (DOINGSOFTDEP(vp)) - softdep_change_linkcnt(ip); + softdep_revert_link(VTOI(tdvp), ip); } out: return (error); @@ -990,6 +995,11 @@ ufs_whiteout(ap) return (error); } +static volatile int rename_restarts; +SYSCTL_INT(_vfs_ufs, OID_AUTO, rename_restarts, CTLFLAG_RD, + __DEVOLATILE(int *, &rename_restarts), 0, + "Times rename had to restart due to lock contention"); + /* * Rename system call. * rename("foo", "bar"); @@ -1029,14 +1039,16 @@ ufs_rename(ap) struct vnode *tdvp = ap->a_tdvp; struct vnode *fvp = ap->a_fvp; struct vnode *fdvp = ap->a_fdvp; + struct vnode *nvp; struct componentname *tcnp = ap->a_tcnp; struct componentname *fcnp = ap->a_fcnp; struct thread *td = fcnp->cn_thread; - struct inode *ip, *xp, *dp; + struct inode *ip, *xp, *tdp, *fdp; struct direct newdir; - int doingdirectory = 0, oldparent = 0, newparent = 0; + int doingdirectory, newparent; int error = 0, ioflag; - ino_t fvp_ino; + struct mount *mp; + ino_t ino; #ifdef INVARIANTS if ((tcnp->cn_flags & HASBUF) == 0 || @@ -1049,7 +1061,6 @@ ufs_rename(ap) if ((fvp->v_mount != tdvp->v_mount) || (tvp && (fvp->v_mount != tvp->v_mount))) { error = EXDEV; -abortit: if (tdvp == tvp) vrele(tdvp); else @@ -1060,63 +1071,202 @@ ufs_rename(ap) vrele(fvp); return (error); } - + mp = tdvp->v_mount; + VOP_UNLOCK(tdvp, 0); + if (tvp && tvp != tdvp) + VOP_UNLOCK(tvp, 0); + error = vfs_busy(mp, 0); + if (error) { + mp = NULL; + goto releout; + } +relock: + /* + * We need to acquire 2 to 4 locks depending on whether tvp is NULL + * and fdvp and tdvp are the same directory. Subsequently we need + * to double-check all paths and in the directory rename case we + * need to verify that we are not creating a directory loop. To + * handle this we acquire fdvp and fvp in order using blocking + * locks followed by non-blocking acquisitions for all remaining + * locks. If we fail to acquire any lock in the path we will + * drop all held locks, acquire the new lock in a blocking fashion, + * and then release it and restart the rename. This acquire/release + * step ensures that we do not spin on a lock waiting for release. + */ + error = vn_lock(fdvp, LK_EXCLUSIVE); + if (error) + goto releout; + error = vn_lock(fvp, LK_EXCLUSIVE); + if (error) { + VOP_UNLOCK(fdvp, 0); + goto releout; + } + if (vn_lock(tdvp, LK_EXCLUSIVE | LK_NOWAIT) != 0) { + VOP_UNLOCK(fdvp, 0); + VOP_UNLOCK(fvp, 0); + error = vn_lock(tdvp, LK_EXCLUSIVE); + if (error) + goto releout; + VOP_UNLOCK(tdvp, 0); + atomic_add_int(&rename_restarts, 1); + goto relock; + } + /* + * If vn_lock fails due to VI_DOOMED being set on fdvp, fvp, or tdvp + * it is a fatal condition. If it occurs on tvp we carry on as if + * it was removed and ufs_lookup_ino() below will resolve the + * condition that cleared it. + */ + if (tvp && vn_lock(tvp, LK_EXCLUSIVE | LK_NOWAIT) != 0) { + VOP_UNLOCK(fdvp, 0); + VOP_UNLOCK(tdvp, 0); + VOP_UNLOCK(fvp, 0); + error = vn_lock(tvp, LK_EXCLUSIVE); + if (error) + tvp = NULL; + else + VOP_UNLOCK(tvp, 0); + atomic_add_int(&rename_restarts, 1); + goto relock; + } + fdp = VTOI(fdvp); + ip = VTOI(fvp); + tdp = VTOI(tdvp); + xp = NULL; + if (tvp) + xp = VTOI(tvp); + /* + * Re-resolve fvp to be certain it still exists at the same inode + * number. If the lookup fails abort the rename. If the inode + * number has changed we need to VGET it and then restart the + * whole lock operation. + */ + error = ufs_lookup_ino(fdvp, NULL, fcnp, &ino); + if (error) + goto unlockout; + if (ino != ip->i_number) { + VOP_UNLOCK(fdvp, 0); + VOP_UNLOCK(tdvp, 0); + vput(fvp); + if (tvp) + VOP_UNLOCK(tvp, 0); + error = VFS_VGET(mp, ino, LK_EXCLUSIVE, &fvp); + if (error) + goto releout; + VOP_UNLOCK(fvp, 0); + atomic_add_int(&rename_restarts, 1); + goto relock; + } + /* + * Re-lookup to now that all of the locks are held. + */ + error = ufs_lookup_ino(tdvp, NULL, tcnp, &ino); + if (error != 0 && error != EJUSTRETURN) + goto unlockout; + /* + * If tvp disappeared we just need to restart. + */ + if (error == EJUSTRETURN && tvp != NULL) { + vput(tvp); + tvp = NULL; + VOP_UNLOCK(fdvp, 0); + VOP_UNLOCK(tdvp, 0); + VOP_UNLOCK(fvp, 0); + atomic_add_int(&rename_restarts, 1); + goto relock; + } + /* + * If tvp changed out from under us we need to drop the old one, + * VGET the new one, and restart. + */ + if (error == 0 && (tvp == NULL || xp->i_number != ino)) { + if (tvp != NULL) + vput(tvp); + VOP_UNLOCK(fdvp, 0); + VOP_UNLOCK(tdvp, 0); + VOP_UNLOCK(fvp, 0); + error = VFS_VGET(mp, ino, LK_EXCLUSIVE, &tvp); + if (error) + tvp = NULL; + else + VOP_UNLOCK(tvp, 0); + atomic_add_int(&rename_restarts, 1); + goto relock; + } if (tvp && ((VTOI(tvp)->i_flags & (NOUNLINK | IMMUTABLE | APPEND)) || (VTOI(tdvp)->i_flags & APPEND))) { error = EPERM; - goto abortit; + goto unlockout; } - /* * Renaming a file to itself has no effect. The upper layers should - * not call us in that case. Temporarily just warn if they do. + * not call us in that case. */ - if (fvp == tvp) { - printf("ufs_rename: fvp == tvp (can't happen)\n"); - error = 0; - goto abortit; - } - - if ((error = vn_lock(fvp, LK_EXCLUSIVE)) != 0) - goto abortit; - dp = VTOI(fdvp); - ip = VTOI(fvp); + if (fvp == tvp) + panic("ufs_rename: fvp == tvp (can't happen)\n"); + doingdirectory = 0; + newparent = 0; + ino = ip->i_number; if (ip->i_nlink >= LINK_MAX) { - VOP_UNLOCK(fvp, 0); error = EMLINK; - goto abortit; + goto unlockout; } if ((ip->i_flags & (NOUNLINK | IMMUTABLE | APPEND)) - || (dp->i_flags & APPEND)) { - VOP_UNLOCK(fvp, 0); + || (fdp->i_flags & APPEND)) { error = EPERM; - goto abortit; + goto unlockout; } if ((ip->i_mode & IFMT) == IFDIR) { /* * Avoid ".", "..", and aliases of "." for obvious reasons. */ if ((fcnp->cn_namelen == 1 && fcnp->cn_nameptr[0] == '.') || - dp == ip || (fcnp->cn_flags | tcnp->cn_flags) & ISDOTDOT || - (ip->i_flag & IN_RENAME)) { - VOP_UNLOCK(fvp, 0); + fdp == ip || (fcnp->cn_flags | tcnp->cn_flags) & ISDOTDOT) { error = EINVAL; - goto abortit; + goto unlockout; } - ip->i_flag |= IN_RENAME; - oldparent = dp->i_number; + if (fdp->i_number != tdp->i_number) + newparent = tdp->i_number; doingdirectory = 1; } - vrele(fdvp); /* - * When the target exists, both the directory - * and target vnodes are returned locked. + * If ".." must be changed (ie the directory gets a new + * parent) then the source directory must not be in the + * directory hierarchy above the target, as this would + * orphan everything below the source directory. Also + * the user must have write permission in the source so + * as to be able to change "..". */ - dp = VTOI(tdvp); - xp = NULL; - if (tvp) - xp = VTOI(tvp); + if (doingdirectory && newparent) { + error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred, tcnp->cn_thread); + if (error) + goto unlockout; + error = ufs_checkpath(ino, fdp->i_number, tdp, tcnp->cn_cred, + &ino); + /* + * We encountered a lock that we have to wait for. Unlock + * everything else and VGET before restarting. + */ + if (ino) { + VOP_UNLOCK(tdvp, 0); + VOP_UNLOCK(fdvp, 0); + VOP_UNLOCK(fvp, 0); + if (tvp) + VOP_UNLOCK(tvp, 0); + error = VFS_VGET(mp, ino, LK_EXCLUSIVE, &nvp); + if (error == 0) + vput(nvp); + atomic_add_int(&rename_restarts, 1); + goto relock; + } + if (error) + goto unlockout; + if ((tcnp->cn_flags & SAVESTART) == 0) + panic("ufs_rename: lost to startdir"); + } + if (ip->i_effnlink == 0 || fdp->i_effnlink == 0 || tdp->i_effnlink == 0) + panic("Bad effnlink ip %p, fdp %p, tdp %p", ip, fdp, tdp); /* * 1) Bump link count while we're moving stuff @@ -1129,49 +1279,12 @@ ufs_rename(ap) DIP_SET(ip, i_nlink, ip->i_nlink); ip->i_flag |= IN_CHANGE; if (DOINGSOFTDEP(fvp)) - softdep_change_linkcnt(ip); - if ((error = UFS_UPDATE(fvp, !(DOINGSOFTDEP(fvp) | - DOINGASYNC(fvp)))) != 0) { - VOP_UNLOCK(fvp, 0); + softdep_setup_link(tdp, ip); + error = UFS_UPDATE(fvp, !(DOINGSOFTDEP(fvp) | DOINGASYNC(fvp))); + if (error) goto bad; - } /* - * If ".." must be changed (ie the directory gets a new - * parent) then the source directory must not be in the - * directory hierarchy above the target, as this would - * orphan everything below the source directory. Also - * the user must have write permission in the source so - * as to be able to change "..". We must repeat the call - * to namei, as the parent directory is unlocked by the - * call to checkpath(). - */ - error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred, tcnp->cn_thread); - fvp_ino = ip->i_number; - VOP_UNLOCK(fvp, 0); - if (oldparent != dp->i_number) - newparent = dp->i_number; - if (doingdirectory && newparent) { - if (error) /* write access check above */ - goto bad; - if (xp != NULL) - vput(tvp); - error = ufs_checkpath(fvp_ino, dp, tcnp->cn_cred); - if (error) - goto out; - if ((tcnp->cn_flags & SAVESTART) == 0) - panic("ufs_rename: lost to startdir"); - VREF(tdvp); - error = relookup(tdvp, &tvp, tcnp); - if (error) - goto out; - vrele(tdvp); - dp = VTOI(tdvp); - xp = NULL; - if (tvp) - xp = VTOI(tvp); - } - /* * 2) If target doesn't exist, link the target * to the source and unlink the source. * Otherwise, rewrite the target directory @@ -1179,46 +1292,27 @@ ufs_rename(ap) * expunge the original entry's existence. */ if (xp == NULL) { - if (dp->i_dev != ip->i_dev) + if (tdp->i_dev != ip->i_dev) panic("ufs_rename: EXDEV"); - /* - * Account for ".." in new directory. - * When source and destination have the same - * parent we don't fool with the link count. - */ if (doingdirectory && newparent) { - if ((nlink_t)dp->i_nlink >= LINK_MAX) { + /* + * Account for ".." in new directory. + * When source and destination have the same + * parent we don't adjust the link count. The + * actual link modification is completed when + * .. is rewritten below. + */ + if ((nlink_t)tdp->i_nlink >= LINK_MAX) { error = EMLINK; goto bad; } - dp->i_effnlink++; - dp->i_nlink++; - DIP_SET(dp, i_nlink, dp->i_nlink); - dp->i_flag |= IN_CHANGE; - if (DOINGSOFTDEP(tdvp)) - softdep_change_linkcnt(dp); - error = UFS_UPDATE(tdvp, !(DOINGSOFTDEP(tdvp) | - DOINGASYNC(tdvp))); - if (error) - goto bad; } ufs_makedirentry(ip, tcnp, &newdir); error = ufs_direnter(tdvp, NULL, &newdir, tcnp, NULL); - if (error) { - if (doingdirectory && newparent) { - dp->i_effnlink--; - dp->i_nlink--; - DIP_SET(dp, i_nlink, dp->i_nlink); - dp->i_flag |= IN_CHANGE; - if (DOINGSOFTDEP(tdvp)) - softdep_change_linkcnt(dp); - (void)UFS_UPDATE(tdvp, 1); - } + if (error) goto bad; - } - vput(tdvp); } else { - if (xp->i_dev != dp->i_dev || xp->i_dev != ip->i_dev) + if (xp->i_dev != tdp->i_dev || xp->i_dev != ip->i_dev) panic("ufs_rename: EXDEV"); /* * Short circuit rename(foo, foo). @@ -1231,7 +1325,7 @@ ufs_rename(ap) * destination of the rename. This implements append-only * directories. */ - if ((dp->i_mode & S_ISTXT) && + if ((tdp->i_mode & S_ISTXT) && VOP_ACCESS(tdvp, VADMIN, tcnp->cn_cred, td) && VOP_ACCESS(tvp, VADMIN, tcnp->cn_cred, td)) { error = EPERM; @@ -1242,9 +1336,9 @@ ufs_rename(ap) * to it. Also, ensure source and target are compatible * (both directories, or both not directories). */ - if ((xp->i_mode&IFMT) == IFDIR) { + if ((xp->i_mode & IFMT) == IFDIR) { if ((xp->i_effnlink > 2) || - !ufs_dirempty(xp, dp->i_number, tcnp->cn_cred)) { + !ufs_dirempty(xp, tdp->i_number, tcnp->cn_cred)) { error = ENOTEMPTY; goto bad; } @@ -1257,16 +1351,16 @@ ufs_rename(ap) error = EISDIR; goto bad; } - error = ufs_dirrewrite(dp, xp, ip->i_number, + error = ufs_dirrewrite(tdp, xp, ip->i_number, IFTODT(ip->i_mode), (doingdirectory && newparent) ? newparent : doingdirectory); if (error) goto bad; if (doingdirectory) { if (!newparent) { - dp->i_effnlink--; + tdp->i_effnlink--; if (DOINGSOFTDEP(tdvp)) - softdep_change_linkcnt(dp); + softdep_change_linkcnt(tdp); } xp->i_effnlink--; if (DOINGSOFTDEP(tvp)) @@ -1285,9 +1379,9 @@ ufs_rename(ap) * them now. */ if (!newparent) { - dp->i_nlink--; - DIP_SET(dp, i_nlink, dp->i_nlink); - dp->i_flag |= IN_CHANGE; + tdp->i_nlink--; + DIP_SET(tdp, i_nlink, tdp->i_nlink); + tdp->i_flag |= IN_CHANGE; } xp->i_nlink--; DIP_SET(xp, i_nlink, xp->i_nlink); @@ -1295,105 +1389,80 @@ ufs_rename(ap) ioflag = IO_NORMAL; if (!DOINGASYNC(tvp)) ioflag |= IO_SYNC; + /* Don't go to bad here as the new link exists. */ if ((error = UFS_TRUNCATE(tvp, (off_t)0, ioflag, tcnp->cn_cred, tcnp->cn_thread)) != 0) - goto bad; + goto unlockout; } - vput(tdvp); - vput(tvp); - xp = NULL; } /* - * 3) Unlink the source. + * 3) Unlink the source. We have to resolve the path again to + * fixup the directory offset and count for ufs_dirremove. */ - fcnp->cn_flags &= ~MODMASK; - fcnp->cn_flags |= LOCKPARENT | LOCKLEAF; - if ((fcnp->cn_flags & SAVESTART) == 0) - panic("ufs_rename: lost from startdir"); - VREF(fdvp); - error = relookup(fdvp, &fvp, fcnp); - if (error == 0) - vrele(fdvp); - if (fvp != NULL) { - xp = VTOI(fvp); - dp = VTOI(fdvp); - } else { - /* - * From name has disappeared. IN_RENAME is not sufficient - * to protect against directory races due to timing windows, - * so we have to remove the panic. XXX the only real way - * to solve this issue is at a much higher level. By the - * time we hit ufs_rename() it's too late. - */ -#if 0 - if (doingdirectory) - panic("ufs_rename: lost dir entry"); -#endif - vrele(ap->a_fvp); - return (0); + if (fdvp == tdvp) { + error = ufs_lookup_ino(fdvp, NULL, fcnp, &ino); + if (error) + panic("ufs_rename: from entry went away!"); } /* - * Ensure that the directory entry still exists and has not - * changed while the new name has been entered. If the source is - * a file then the entry may have been unlinked or renamed. In - * either case there is no further work to be done. If the source - * is a directory then it cannot have been rmdir'ed; the IN_RENAME - * flag ensures that it cannot be moved by another rename or removed - * by a rmdir. + * If the source is a directory with a + * new parent, the link count of the old + * parent directory must be decremented + * and ".." set to point to the new parent. */ - if (xp != ip) { + if (doingdirectory && newparent) { /* - * From name resolves to a different inode. IN_RENAME is - * not sufficient protection against timing window races - * so we can't panic here. XXX the only real way - * to solve this issue is at a much higher level. By the - * time we hit ufs_rename() it's too late. + * If xp exists we simply use its link, otherwise we must + * add a new one. */ -#if 0 - if (doingdirectory) - panic("ufs_rename: lost dir entry"); -#endif - } else { - /* - * If the source is a directory with a - * new parent, the link count of the old - * parent directory must be decremented - * and ".." set to point to the new parent. - */ - if (doingdirectory && newparent) { - xp->i_offset = mastertemplate.dot_reclen; - ufs_dirrewrite(xp, dp, newparent, DT_DIR, 0); - cache_purge(fdvp); + if (xp == NULL) { + tdp->i_effnlink++; + tdp->i_nlink++; + DIP_SET(tdp, i_nlink, tdp->i_nlink); + tdp->i_flag |= IN_CHANGE; + if (DOINGSOFTDEP(tdvp)) + softdep_setup_dotdot_link(tdp, ip); + error = UFS_UPDATE(tdvp, !(DOINGSOFTDEP(tdvp) | + DOINGASYNC(tdvp))); + /* Don't go to bad here as the new link exists. */ + if (error) + goto unlockout; } - error = ufs_dirremove(fdvp, xp, fcnp->cn_flags, 0); - xp->i_flag &= ~IN_RENAME; + ip->i_offset = mastertemplate.dot_reclen; + ufs_dirrewrite(ip, fdp, newparent, DT_DIR, 0); + cache_purge(fdvp); } - if (dp) - vput(fdvp); - if (xp) - vput(fvp); - vrele(ap->a_fvp); + error = ufs_dirremove(fdvp, ip, fcnp->cn_flags, 0); + +unlockout: + vput(tdvp); + vput(fdvp); + vput(fvp); + if (tvp) + vput(tvp); + if (mp) + vfs_unbusy(mp); return (error); bad: - if (xp) - vput(ITOV(xp)); - vput(ITOV(dp)); -out: - if (doingdirectory) - ip->i_flag &= ~IN_RENAME; - if (vn_lock(fvp, LK_EXCLUSIVE) == 0) { - ip->i_effnlink--; - ip->i_nlink--; - DIP_SET(ip, i_nlink, ip->i_nlink); - ip->i_flag |= IN_CHANGE; - ip->i_flag &= ~IN_RENAME; - if (DOINGSOFTDEP(fvp)) - softdep_change_linkcnt(ip); - vput(fvp); - } else - vrele(fvp); + ip->i_effnlink--; + ip->i_nlink--; + DIP_SET(ip, i_nlink, ip->i_nlink); + ip->i_flag |= IN_CHANGE; + if (DOINGSOFTDEP(fvp)) + softdep_revert_link(tdp, ip); + goto unlockout; + +releout: + vrele(tdvp); + if (tvp) + vrele(tvp); + vrele(fdvp); + vrele(fvp); + if (mp) + vfs_unbusy(mp); + return (error); } @@ -1565,8 +1634,7 @@ ufs_mkdir(ap) ip->i_effnlink = 2; ip->i_nlink = 2; DIP_SET(ip, i_nlink, 2); - if (DOINGSOFTDEP(tvp)) - softdep_change_linkcnt(ip); + if (cnp->cn_flags & ISWHITEOUT) { ip->i_flags |= UF_OPAQUE; DIP_SET(ip, i_flags, ip->i_flags); @@ -1582,8 +1650,8 @@ ufs_mkdir(ap) DIP_SET(dp, i_nlink, dp->i_nlink); dp->i_flag |= IN_CHANGE; if (DOINGSOFTDEP(dvp)) - softdep_change_linkcnt(dp); - error = UFS_UPDATE(tvp, !(DOINGSOFTDEP(dvp) | DOINGASYNC(dvp))); + softdep_setup_mkdir(dp, ip); + error = UFS_UPDATE(dvp, !(DOINGSOFTDEP(dvp) | DOINGASYNC(dvp))); if (error) goto bad; #ifdef MAC @@ -1701,8 +1769,6 @@ bad: dp->i_nlink--; DIP_SET(dp, i_nlink, dp->i_nlink); dp->i_flag |= IN_CHANGE; - if (DOINGSOFTDEP(dvp)) - softdep_change_linkcnt(dp); /* * No need to do an explicit VOP_TRUNCATE here, vrele will * do this for us because we set the link count to 0. @@ -1712,7 +1778,8 @@ bad: DIP_SET(ip, i_nlink, 0); ip->i_flag |= IN_CHANGE; if (DOINGSOFTDEP(tvp)) - softdep_change_linkcnt(ip); + softdep_revert_mkdir(dp, ip); + vput(tvp); } out: @@ -1748,10 +1815,13 @@ ufs_rmdir(ap) * tries to remove a locally mounted on directory). */ error = 0; - if ((ip->i_flag & IN_RENAME) || ip->i_effnlink < 2) { + if (ip->i_effnlink < 2) { error = EINVAL; goto out; } + if (dp->i_effnlink < 3) + panic("ufs_dirrem: Bad link count %d on parent", + dp->i_effnlink); if (!ufs_dirempty(ip, dp->i_number, cnp->cn_cred)) { error = ENOTEMPTY; goto out; @@ -1775,18 +1845,14 @@ ufs_rmdir(ap) */ dp->i_effnlink--; ip->i_effnlink--; - if (DOINGSOFTDEP(vp)) { - softdep_change_linkcnt(dp); - softdep_change_linkcnt(ip); - } + if (DOINGSOFTDEP(vp)) + softdep_setup_rmdir(dp, ip); error = ufs_dirremove(dvp, ip, cnp->cn_flags, 1); if (error) { dp->i_effnlink++; ip->i_effnlink++; - if (DOINGSOFTDEP(vp)) { - softdep_change_linkcnt(dp); - softdep_change_linkcnt(ip); - } + if (DOINGSOFTDEP(vp)) + softdep_revert_rmdir(dp, ip); goto out; } cache_purge(dvp); @@ -2282,6 +2348,9 @@ ufs_makeinode(mode, dvp, vpp, cnp) if ((mode & IFMT) == 0) mode |= IFREG; + if (VTOI(dvp)->i_effnlink < 2) + panic("ufs_makeinode: Bad link count %d on parent", + VTOI(dvp)->i_effnlink); error = UFS_VALLOC(dvp, mode, cnp->cn_cred, &tvp); if (error) return (error); @@ -2411,7 +2480,7 @@ ufs_makeinode(mode, dvp, vpp, cnp) ip->i_nlink = 1; DIP_SET(ip, i_nlink, 1); if (DOINGSOFTDEP(tvp)) - softdep_change_linkcnt(ip); + softdep_setup_create(VTOI(dvp), ip); if ((ip->i_mode & ISGID) && !groupmember(ip->i_gid, cnp->cn_cred) && priv_check_cred(cnp->cn_cred, PRIV_VFS_SETGID, 0)) { ip->i_mode &= ~ISGID; @@ -2484,7 +2553,7 @@ bad: DIP_SET(ip, i_nlink, 0); ip->i_flag |= IN_CHANGE; if (DOINGSOFTDEP(tvp)) - softdep_change_linkcnt(ip); + softdep_revert_create(VTOI(dvp), ip); vput(tvp); return (error); } Index: /usr/src/sys/ufs/ufs/ufsmount.h =================================================================== --- /usr/src/sys/ufs/ufs/ufsmount.h (revision 200565) +++ /usr/src/sys/ufs/ufs/ufsmount.h (working copy) @@ -57,6 +57,7 @@ struct ucred; struct uio; struct vnode; struct ufs_extattr_per_mount; +struct jblocks; /* This structure describes the UFS specific mount structure data. */ struct ufsmount { @@ -75,6 +76,10 @@ struct ufsmount { long um_numindirdeps; /* outstanding indirdeps */ struct workhead softdep_workitem_pending; /* softdep work queue */ struct worklist *softdep_worklist_tail; /* Tail pointer for above */ + struct workhead softdep_journal_pending; /* journal work queue */ + struct worklist *softdep_journal_tail; /* Tail pointer for above */ + struct jblocks *softdep_jblocks; /* Journal block information */ + int softdep_on_journal; /* Items on the journal list */ int softdep_on_worklist; /* Items on the worklist */ int softdep_on_worklist_inprogress; /* Busy items on worklist */ int softdep_deps; /* Total dependency count */ Index: /usr/src/sys/ufs/ufs/ufs_lookup.c =================================================================== --- /usr/src/sys/ufs/ufs/ufs_lookup.c (revision 200565) +++ /usr/src/sys/ufs/ufs/ufs_lookup.c (working copy) @@ -77,9 +77,6 @@ SYSCTL_INT(_debug, OID_AUTO, dircheck, CTLFLAG_RW, /* true if old FS format...*/ #define OFSFMT(vp) ((vp)->v_mount->mnt_maxsymlinklen <= 0) -static int ufs_lookup_(struct vnode *, struct vnode **, struct componentname *, - ino_t *); - /* * Convert a component of a pathname into a pointer to a locked inode. * This is a very central and rather complicated routine. @@ -134,11 +131,11 @@ ufs_lookup(ap) } */ *ap; { - return (ufs_lookup_(ap->a_dvp, ap->a_vpp, ap->a_cnp, NULL)); + return (ufs_lookup_ino(ap->a_dvp, ap->a_vpp, ap->a_cnp, NULL)); } -static int -ufs_lookup_(struct vnode *vdp, struct vnode **vpp, struct componentname *cnp, +int +ufs_lookup_ino(struct vnode *vdp, struct vnode **vpp, struct componentname *cnp, ino_t *dd_ino) { struct inode *dp; /* inode for directory being searched */ @@ -464,6 +461,8 @@ notfound: return (ENOENT); found: + if (dd_ino != NULL) + *dd_ino = ino; if (numdirpasses == 2) nchstats.ncs_pass2++; /* @@ -486,11 +485,6 @@ found: if ((flags & ISLASTCN) && nameiop == LOOKUP) dp->i_diroff = i_offset &~ (DIRBLKSIZ - 1); - if (dd_ino != NULL) { - *dd_ino = ino; - return (0); - } - /* * If deleting, and at end of pathname, return * parameters which can be used to remove file. @@ -520,6 +514,8 @@ found: dp->i_count = 0; else dp->i_count = dp->i_offset - prevoff; + if (dd_ino != NULL) + return (0); if (dp->i_number == ino) { VREF(vdp); *vpp = vdp; @@ -560,6 +556,8 @@ found: dp->i_offset = i_offset; if (dp->i_number == ino) return (EISDIR); + if (dd_ino != NULL) + return (0); if ((error = VFS_VGET(vdp->v_mount, ino, LK_EXCLUSIVE, &tdp)) != 0) return (error); @@ -567,6 +565,8 @@ found: cnp->cn_flags |= SAVENAME; return (0); } + if (dd_ino != NULL) + return (0); /* * Step through the translation in the name. We do not `vput' the @@ -598,7 +598,7 @@ found: * to the inode we looked up before vdp lock was * dropped. */ - error = ufs_lookup_(pdp, NULL, cnp, &ino1); + error = ufs_lookup_ino(pdp, NULL, cnp, &ino1); if (error) { vput(tdp); return (error); @@ -821,9 +821,13 @@ ufs_direnter(dvp, tvp, dirp, cnp, newdirbp) } if (softdep_setup_directory_add(bp, dp, dp->i_offset, dirp->d_ino, newdirbp, 1) == 0) { + if (newdirbp) + bdwrite(newdirbp); bdwrite(bp); return (UFS_UPDATE(dvp, 0)); } + if (newdirbp) + bdwrite(newdirbp); /* We have just allocated a directory block in an * indirect block. Rather than tracking when it gets * claimed by the inode, we simply do a VOP_FSYNC @@ -976,6 +980,8 @@ ufs_direnter(dvp, tvp, dirp, cnp, newdirbp) (void) softdep_setup_directory_add(bp, dp, dp->i_offset + (caddr_t)ep - dirbuf, dirp->d_ino, newdirbp, 0); + if (newdirbp) + bdwrite(newdirbp); bdwrite(bp); } else { if (DOINGASYNC(dvp)) { @@ -1084,7 +1090,7 @@ out: if (DOINGSOFTDEP(dvp)) { if (ip) { ip->i_effnlink--; - softdep_change_linkcnt(ip); + softdep_setup_unlink(dp, ip); softdep_setup_remove(bp, dp, ip, isrmdir); } if (softdep_slowdown(dvp)) { @@ -1146,7 +1152,7 @@ ufs_dirrewrite(dp, oip, newinum, newtype, isrmdir) ep->d_type = newtype; oip->i_effnlink--; if (DOINGSOFTDEP(vdp)) { - softdep_change_linkcnt(oip); + softdep_setup_unlink(dp, oip); softdep_setup_directory_change(bp, dp, oip, newinum, isrmdir); bdwrite(bp); } else { @@ -1267,25 +1273,25 @@ ufs_dir_dd_ino(struct vnode *vp, struct ucred *cre /* * Check if source directory is in the path of the target directory. - * Target is supplied locked, source is unlocked. - * The target is always vput before returning. */ int -ufs_checkpath(ino_t source_ino, struct inode *target, struct ucred *cred) +ufs_checkpath(ino_t source_ino, ino_t parent_ino, struct inode *target, struct ucred *cred, ino_t *wait_ino) { - struct vnode *vp, *vp1; + struct mount *mp; + struct vnode *tvp, *vp, *vp1; int error; ino_t dd_ino; - vp = ITOV(target); - if (target->i_number == source_ino) { - error = EEXIST; - goto out; - } + vp = tvp = ITOV(target); + mp = vp->v_mount; + *wait_ino = 0; + if (target->i_number == source_ino) + return (EEXIST); + if (target->i_number == parent_ino) + return (0); + if (target->i_number == ROOTINO) + return (0); error = 0; - if (target->i_number == ROOTINO) - goto out; - for (;;) { error = ufs_dir_dd_ino(vp, cred, &dd_ino); if (error != 0) @@ -1296,9 +1302,13 @@ int } if (dd_ino == ROOTINO) break; - error = vn_vget_ino(vp, dd_ino, LK_EXCLUSIVE, &vp1); - if (error != 0) + if (dd_ino == parent_ino) break; + error = VFS_VGET(mp, dd_ino, LK_EXCLUSIVE | LK_NOWAIT, &vp1); + if (error != 0) { + *wait_ino = dd_ino; + break; + } /* Recheck that ".." still points to vp1 after relock of vp */ error = ufs_dir_dd_ino(vp, cred, &dd_ino); if (error != 0) { @@ -1310,14 +1320,14 @@ int vput(vp1); continue; } - vput(vp); + if (vp != tvp) + vput(vp); vp = vp1; } -out: if (error == ENOTDIR) - printf("checkpath: .. not a directory\n"); - if (vp != NULL) + panic("checkpath: .. not a directory\n"); + if (vp != tvp) vput(vp); return (error); } Index: /usr/src/sys/ufs/ufs/ufs_extern.h =================================================================== --- /usr/src/sys/ufs/ufs/ufs_extern.h (revision 200565) +++ /usr/src/sys/ufs/ufs/ufs_extern.h (working copy) @@ -57,7 +57,7 @@ int ufs_bmap(struct vop_bmap_args *); int ufs_bmaparray(struct vnode *, ufs2_daddr_t, ufs2_daddr_t *, struct buf *, int *, int *); int ufs_fhtovp(struct mount *, struct ufid *, struct vnode **); -int ufs_checkpath(ino_t, struct inode *, struct ucred *); +int ufs_checkpath(ino_t, ino_t, struct inode *, struct ucred *, ino_t *); void ufs_dirbad(struct inode *, doff_t, char *); int ufs_dirbadentry(struct vnode *, struct direct *, int); int ufs_dirempty(struct inode *, ino_t, struct ucred *); @@ -69,6 +69,8 @@ int ufs_direnter(struct vnode *, struct vnode *, struct componentname *, struct buf *); int ufs_dirremove(struct vnode *, struct inode *, int, int); int ufs_dirrewrite(struct inode *, struct inode *, ino_t, int, int); +int ufs_lookup_ino(struct vnode *, struct vnode **, struct componentname *, + ino_t *); int ufs_getlbns(struct vnode *, ufs2_daddr_t, struct indir *, int *); int ufs_inactive(struct vop_inactive_args *); int ufs_init(struct vfsconf *); @@ -81,6 +83,9 @@ vfs_root_t ufs_root; int ufs_uninit(struct vfsconf *); int ufs_vinit(struct mount *, struct vop_vector *, struct vnode **); +#include +SYSCTL_DECL(_vfs_ufs); + /* * Soft update function prototypes. */ @@ -94,6 +99,17 @@ void softdep_setup_directory_change(struct buf *, void softdep_change_linkcnt(struct inode *); void softdep_releasefile(struct inode *); int softdep_slowdown(struct vnode *); +void softdep_setup_create(struct inode *, struct inode *); +void softdep_setup_dotdot_link(struct inode *, struct inode *); +void softdep_setup_link(struct inode *, struct inode *); +void softdep_setup_mkdir(struct inode *, struct inode *); +void softdep_setup_rmdir(struct inode *, struct inode *); +void softdep_setup_unlink(struct inode *, struct inode *); +void softdep_revert_create(struct inode *, struct inode *); +void softdep_revert_dotdot_link(struct inode *, struct inode *); +void softdep_revert_link(struct inode *, struct inode *); +void softdep_revert_mkdir(struct inode *, struct inode *); +void softdep_revert_rmdir(struct inode *, struct inode *); /* * Flags to low-level allocation routines. The low 16-bits are reserved Index: /usr/src/sys/ufs/ffs/ffs_vfsops.c =================================================================== --- /usr/src/sys/ufs/ffs/ffs_vfsops.c (revision 200565) +++ /usr/src/sys/ufs/ffs/ffs_vfsops.c (working copy) @@ -858,6 +858,7 @@ ffs_mountfs(devvp, mp, td) */ bzero(fs->fs_fsmnt, MAXMNTLEN); strlcpy(fs->fs_fsmnt, mp->mnt_stat.f_mntonname, MAXMNTLEN); + mp->mnt_stat.f_iosize = fs->fs_bsize; if( mp->mnt_flag & MNT_ROOTFS) { /* @@ -899,7 +900,6 @@ ffs_mountfs(devvp, mp, td) * This would all happen while the filesystem was busy/not * available, so would effectively be "atomic". */ - mp->mnt_stat.f_iosize = fs->fs_bsize; (void) ufs_extattr_autostart(mp, td); #endif /* !UFS_EXTATTR_AUTOSTART */ #endif /* !UFS_EXTATTR */ @@ -1829,9 +1829,6 @@ ffs_bufwrite(struct buf *bp) } BO_UNLOCK(bp->b_bufobj); - /* Mark the buffer clean */ - bundirty(bp); - /* * If this buffer is marked for background writing and we * do not have to wait for it, make a copy and write the @@ -1872,9 +1869,16 @@ ffs_bufwrite(struct buf *bp) newbp->b_flags &= ~B_INVAL; #ifdef SOFTUPDATES - /* move over the dependencies */ - if (!LIST_EMPTY(&bp->b_dep)) - softdep_move_dependencies(bp, newbp); + /* + * Move over the dependencies. If there are rollbacks, + * leave the parent buffer dirtied as it will need to + * be written again. + */ + if (LIST_EMPTY(&bp->b_dep) || + softdep_move_dependencies(bp, newbp) == 0) + bundirty(bp); +#else + bundirty(bp); #endif /* @@ -1887,8 +1891,11 @@ ffs_bufwrite(struct buf *bp) */ bqrelse(bp); bp = newbp; - } + } else + /* Mark the buffer clean */ + bundirty(bp); + /* Let the normal bufwrite do the rest for us */ normal_write: return (bufwrite(bp)); Index: /usr/src/sys/ufs/ffs/ffs_softdep.c =================================================================== --- /usr/src/sys/ufs/ffs/ffs_softdep.c (revision 200565) +++ /usr/src/sys/ufs/ffs/ffs_softdep.c (working copy) @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -130,10 +131,12 @@ softdep_setup_inomapdep(bp, ip, newinum) } void -softdep_setup_blkmapdep(bp, mp, newblkno) +softdep_setup_blkmapdep(bp, mp, newblkno, frags, oldfrags) struct buf *bp; struct mount *mp; ufs2_daddr_t newblkno; + int frags; + int oldfrags; { panic("softdep_setup_blkmapdep called"); @@ -403,24 +406,6 @@ softdep_get_depcounts(struct mount *mp, * These definitions need to be adapted to the system to which * this file is being ported. */ -/* - * malloc types defined for the softdep system. - */ -static MALLOC_DEFINE(M_PAGEDEP, "pagedep","File page dependencies"); -static MALLOC_DEFINE(M_INODEDEP, "inodedep","Inode dependencies"); -static MALLOC_DEFINE(M_NEWBLK, "newblk","New block allocation"); -static MALLOC_DEFINE(M_BMSAFEMAP, "bmsafemap","Block or frag allocated from cyl group map"); -static MALLOC_DEFINE(M_ALLOCDIRECT, "allocdirect","Block or frag dependency for an inode"); -static MALLOC_DEFINE(M_INDIRDEP, "indirdep","Indirect block dependencies"); -static MALLOC_DEFINE(M_ALLOCINDIR, "allocindir","Block dependency for an indirect block"); -static MALLOC_DEFINE(M_FREEFRAG, "freefrag","Previously used frag for an inode"); -static MALLOC_DEFINE(M_FREEBLKS, "freeblks","Blocks freed from an inode"); -static MALLOC_DEFINE(M_FREEFILE, "freefile","Inode deallocated"); -static MALLOC_DEFINE(M_DIRADD, "diradd","New directory entry"); -static MALLOC_DEFINE(M_MKDIR, "mkdir","New directory"); -static MALLOC_DEFINE(M_DIRREM, "dirrem","Directory entry deleted"); -static MALLOC_DEFINE(M_NEWDIRBLK, "newdirblk","Unclaimed new directory block"); -static MALLOC_DEFINE(M_SAVEDINO, "savedino","Saved inodes"); #define M_SOFTDEP_FLAGS (M_WAITOK | M_USE_RESERVE) @@ -438,8 +423,62 @@ softdep_get_depcounts(struct mount *mp, #define D_MKDIR 11 #define D_DIRREM 12 #define D_NEWDIRBLK 13 -#define D_LAST D_NEWDIRBLK +#define D_FREEWORK 14 +#define D_FREEDEP 15 +#define D_JADDREF 16 +#define D_JREMREF 17 +#define D_JNEWBLK 18 +#define D_JFREEBLK 19 +#define D_JFREEFRAG 20 +#define D_JSEG 21 +#define D_JSEGDEP 22 +#define D_LAST D_JSEGDEP +unsigned long dep_current[D_LAST + 1]; +unsigned long dep_total[D_LAST + 1]; + + +SYSCTL_NODE(_debug, OID_AUTO, softdep, CTLFLAG_RW, 0, "soft updates stats"); +SYSCTL_NODE(_debug_softdep, OID_AUTO, total, CTLFLAG_RW, 0, + "total dependencies allocated"); +SYSCTL_NODE(_debug_softdep, OID_AUTO, current, CTLFLAG_RW, 0, + "current dependencies allocated"); + +#define SOFTDEP_TYPE(type, str, long) \ + static MALLOC_DEFINE(M_ ## type, #str, long); \ + SYSCTL_LONG(_debug_softdep_total, OID_AUTO, str, CTLFLAG_RD, \ + &dep_total[D_ ## type], 0, ""); \ + SYSCTL_LONG(_debug_softdep_current, OID_AUTO, str, CTLFLAG_RD, \ + &dep_current[D_ ## type], 0, ""); + +SOFTDEP_TYPE(PAGEDEP, pagedep, "File page dependencies"); +SOFTDEP_TYPE(INODEDEP, inodedep, "Inode dependencies"); +SOFTDEP_TYPE(NEWBLK, newblk, "New block allocation"); +SOFTDEP_TYPE(BMSAFEMAP, bmsafemap, + "Block or frag allocated from cyl group map"); +SOFTDEP_TYPE(ALLOCDIRECT, allocdirect, "Block or frag dependency for an inode"); +SOFTDEP_TYPE(INDIRDEP, indirdep, "Indirect block dependencies"); +SOFTDEP_TYPE(ALLOCINDIR, allocindir, "Block dependency for an indirect block"); +SOFTDEP_TYPE(FREEFRAG, freefrag, "Previously used frag for an inode"); +SOFTDEP_TYPE(FREEBLKS, freeblks, "Blocks freed from an inode"); +SOFTDEP_TYPE(FREEFILE, freefile, "Inode deallocated"); +SOFTDEP_TYPE(DIRADD, diradd, "New directory entry"); +SOFTDEP_TYPE(MKDIR, mkdir, "New directory"); +SOFTDEP_TYPE(DIRREM, dirrem, "Directory entry deleted"); +SOFTDEP_TYPE(NEWDIRBLK, newdirblk, "Unclaimed new directory block"); +SOFTDEP_TYPE(FREEWORK, freework, "free an inode block"); +SOFTDEP_TYPE(FREEDEP, freedep, "track a block free"); +SOFTDEP_TYPE(JADDREF, jaddref, "Journal inode ref add"); +SOFTDEP_TYPE(JREMREF, jremref, "Journal inode ref remove"); +SOFTDEP_TYPE(JNEWBLK, jnewblk, "Journal new block"); +SOFTDEP_TYPE(JFREEBLK, jfreeblk, "Journal free block"); +SOFTDEP_TYPE(JFREEFRAG, jfreefrag, "Journal free frag"); +SOFTDEP_TYPE(JSEG, jseg, "Journal segment"); +SOFTDEP_TYPE(JSEGDEP, jsegdep, "Journal segment complete"); + +static MALLOC_DEFINE(M_SAVEDINO, "savedino", "Saved inodes"); +static MALLOC_DEFINE(M_JBLOCKS, "jblocks", "Journal block locations"); + /* * translate from workitem type to memory type * MUST match the defines above, such that memtype[D_XXX] == M_XXX @@ -458,7 +497,16 @@ static struct malloc_type *memtype[] = { M_DIRADD, M_MKDIR, M_DIRREM, - M_NEWDIRBLK + M_NEWDIRBLK, + M_FREEWORK, + M_FREEDEP, + M_JADDREF, + M_JREMREF, + M_JNEWBLK, + M_JFREEBLK, + M_JFREEFRAG, + M_JSEG, + M_JSEGDEP }; #define DtoM(type) (memtype[type]) @@ -467,17 +515,21 @@ static struct malloc_type *memtype[] = { * Names of malloc types. */ #define TYPENAME(type) \ - ((unsigned)(type) < D_LAST ? memtype[type]->ks_shortdesc : "???") + ((unsigned)(type) <= D_LAST ? memtype[type]->ks_shortdesc : "???") /* * End system adaptation definitions. */ +#define DOTDOT_OFFSET offsetof(struct dirtemplate, dotdot_ino) +#define DOT_OFFSET offsetof(struct dirtemplate, dot_ino) + /* * Forward declarations. */ struct inodedep_hashhead; struct newblk_hashhead; struct pagedep_hashhead; +struct bmsafemap_hashhead; /* * Internal function prototypes. @@ -494,52 +546,119 @@ static int flush_deplist(struct allocdirectlst *, static int handle_written_filepage(struct pagedep *, struct buf *); static void diradd_inode_written(struct diradd *, struct inodedep *); static int handle_written_inodeblock(struct inodedep *, struct buf *); -static void handle_allocdirect_partdone(struct allocdirect *); +static int handle_written_bmsafemap(struct bmsafemap *, struct buf *); +static void handle_written_jaddref(struct jaddref *, struct jsegdep *); +static void handle_written_jremref(struct jremref *, struct jsegdep *); +static void handle_written_jseg(struct jseg *, struct buf *); +static void handle_written_jnewblk(struct jnewblk *, struct jsegdep *); +static void handle_written_jfreeblk(struct jfreeblk *, struct jsegdep *); +static void handle_written_jfreefrag(struct jfreefrag *, struct jsegdep *); +static void jseg_write(struct jblocks *, struct jseg *, uint8_t *); +static void jaddref_write(struct jaddref *, uint8_t *); +static void jremref_write(struct jremref *, uint8_t *); +static void jnewblk_write(struct jnewblk *, uint8_t *); +static void jfreeblk_write(struct jfreeblk *, uint8_t *); +static void jfreefrag_write(struct jfreefrag *, uint8_t *); +static void handle_allocdirect_partdone(struct allocdirect *, + struct workhead *); static void handle_allocindir_partdone(struct allocindir *); static void initiate_write_filepage(struct pagedep *, struct buf *); +static void initiate_write_indirdep(struct indirdep*, struct buf *); static void handle_written_mkdir(struct mkdir *, int); +static void initiate_write_bmsafemap(struct bmsafemap *, struct buf *); static void initiate_write_inodeblock_ufs1(struct inodedep *, struct buf *); static void initiate_write_inodeblock_ufs2(struct inodedep *, struct buf *); static void handle_workitem_freefile(struct freefile *); static void handle_workitem_remove(struct dirrem *, struct vnode *); static struct dirrem *newdirrem(struct buf *, struct inode *, struct inode *, int, struct dirrem **); -static void free_diradd(struct diradd *); -static void free_allocindir(struct allocindir *, struct inodedep *); +static void free_indirdep(struct indirdep *); +static void free_diradd(struct diradd *, struct workhead *); +static void merge_diradd(struct inodedep *, struct diradd *); +static void complete_diradd(struct diradd *); +static struct diradd *diradd_lookup(struct pagedep *, int); +static void cancel_diradd_dotdot(struct inode *, struct dirrem *); +static void free_allocindir(struct allocindir *, struct inodedep *, + struct workhead *, short); +static void cancel_allocindir(struct allocindir *, struct inodedep *, + struct freeblks *); +static void complete_mkdir(struct mkdir *); static void free_newdirblk(struct newdirblk *); -static int indir_trunc(struct freeblks *, ufs2_daddr_t, int, ufs_lbn_t, - ufs2_daddr_t *); -static void deallocate_dependencies(struct buf *, struct inodedep *); +static void free_jremref(struct jremref *); +static void free_jaddref(struct jaddref *); +static void free_jsegdep(struct jsegdep *); +static void free_jseg(struct jseg *); +static void free_jnewblk(struct jnewblk *); +static void free_jfreeblk(struct jfreeblk *); +static void free_jfreefrag(struct jfreefrag *); +static void free_freedep(struct freedep *); +static void cancel_jnewblk(struct jnewblk *, struct workhead *); +static void cancel_jaddref(struct jaddref *, struct inodedep *, + struct workhead *); +static int indir_trunc(struct freework *, ufs2_daddr_t, ufs_lbn_t); +static int deallocate_dependencies(struct buf *, struct inodedep *, + struct freeblks *); static void free_allocdirect(struct allocdirectlst *, - struct allocdirect *, int); + struct allocdirect *, struct workhead *, short, int); +static void cancel_allocdirect(struct allocdirectlst *, + struct allocdirect *, struct freeblks *, int); static int check_inode_unwritten(struct inodedep *); static int free_inodedep(struct inodedep *); +static void freework_freeblock(struct freework *); +static void freework_freeindir(struct freework *); static void handle_workitem_freeblocks(struct freeblks *, int); +static void handle_complete_freeblocks(struct freeblks *); +static void handle_workitem_indirblk(struct freework *); +static void handle_written_freework(struct freework *); static void merge_inode_lists(struct allocdirectlst *,struct allocdirectlst *); static void setup_allocindir_phase2(struct buf *, struct inode *, - struct allocindir *); + struct inodedep *, struct allocindir *, struct indir *, int, + ufs_lbn_t); static struct allocindir *newallocindir(struct inode *, int, ufs2_daddr_t, - ufs2_daddr_t); + ufs2_daddr_t, ufs_lbn_t); static void handle_workitem_freefrag(struct freefrag *); -static struct freefrag *newfreefrag(struct inode *, ufs2_daddr_t, long); +static struct freefrag *newfreefrag(struct inode *, ufs2_daddr_t, long, + ufs_lbn_t); static void allocdirect_merge(struct allocdirectlst *, struct allocdirect *, struct allocdirect *); -static struct bmsafemap *bmsafemap_lookup(struct mount *, struct buf *); +static struct freefrag *allocindir_merge(struct allocindir *, + struct allocindir *); +static int bmsafemap_find(struct bmsafemap_hashhead *, struct mount *, int, + struct bmsafemap **); +static struct bmsafemap *bmsafemap_lookup(struct mount *, struct buf *, + int cg); static int newblk_find(struct newblk_hashhead *, struct fs *, ufs2_daddr_t, struct newblk **); static int newblk_lookup(struct fs *, ufs2_daddr_t, int, struct newblk **); static int inodedep_find(struct inodedep_hashhead *, struct fs *, ino_t, struct inodedep **); static int inodedep_lookup(struct mount *, ino_t, int, struct inodedep **); -static int pagedep_lookup(struct inode *, ufs_lbn_t, int, struct pagedep **); +static int pagedep_lookup(struct mount *, ino_t, ufs_lbn_t, int, + struct pagedep **); static int pagedep_find(struct pagedep_hashhead *, ino_t, ufs_lbn_t, struct mount *mp, int, struct pagedep **); static void pause_timer(void *); static int request_cleanup(struct mount *, int); static int process_worklist_item(struct mount *, int); +static void jwork_move(short, short, struct workhead *, struct workhead *); static void add_to_worklist(struct worklist *); static void softdep_flush(void); static int softdep_speedup(void); +static int journal_mount(struct mount *, struct fs *, struct ucred *); +static void add_to_journal(struct worklist *); +static void remove_from_journal(struct worklist *); +static void softdep_process_journal(struct mount *, int); +static struct jremref *newjremref(struct dirrem *, struct inode *, + struct inode *ip, off_t); +static struct jaddref *newjaddref(struct inode *, ino_t, off_t, int16_t, + uint16_t); +static struct jfreeblk *newjfreeblk(struct freeblks *, struct inode *, + ufs_lbn_t, ufs2_daddr_t, int); +static void jwait(struct worklist *wk); +static struct inodedep *inodedep_lookup_ip(struct inode *); +static int bmsafemap_rollbacks(struct bmsafemap *); +static struct freefile * handle_bufwait(struct inodedep *, struct workhead *, + struct workhead *, int); /* * Exported softdep operations. @@ -572,40 +691,134 @@ MTX_SYSINIT(softdep_lock, &lk, "Softdep Lock", MTX (item)->wk_state &= ~ONWORKLIST; \ LIST_REMOVE(item, wk_list); \ } while (0) +#define WORKLIST_INSERT_UNLOCKED WORKLIST_INSERT +#define WORKLIST_REMOVE_UNLOCKED WORKLIST_REMOVE + #else /* DEBUG */ -static void worklist_insert(struct workhead *, struct worklist *); -static void worklist_remove(struct worklist *); +static void worklist_insert(struct workhead *, struct worklist *, int); +static void worklist_remove(struct worklist *, int); -#define WORKLIST_INSERT(head, item) worklist_insert(head, item) -#define WORKLIST_REMOVE(item) worklist_remove(item) +#define WORKLIST_INSERT(head, item) worklist_insert(head, item, 1) +#define WORKLIST_INSERT_UNLOCKED(head, item) worklist_insert(head, item, 0) +#define WORKLIST_REMOVE(item) worklist_remove(item, 1) +#define WORKLIST_REMOVE_UNLOCKED(item) worklist_remove(item, 0) static void -worklist_insert(head, item) +worklist_insert(head, item, locked) struct workhead *head; struct worklist *item; + int locked; { - mtx_assert(&lk, MA_OWNED); + if (locked) + mtx_assert(&lk, MA_OWNED); if (item->wk_state & ONWORKLIST) - panic("worklist_insert: already on list"); + panic("worklist_insert: %p %s(0x%X) already on list", + item, TYPENAME(item->wk_type), item->wk_state); item->wk_state |= ONWORKLIST; LIST_INSERT_HEAD(head, item, wk_list); } static void -worklist_remove(item) +worklist_remove(item, locked) struct worklist *item; + int locked; { - mtx_assert(&lk, MA_OWNED); + if (locked) + mtx_assert(&lk, MA_OWNED); if ((item->wk_state & ONWORKLIST) == 0) - panic("worklist_remove: not on list"); + panic("worklist_remove: %p %s(0x%X) not on list", + item, TYPENAME(item->wk_type), item->wk_state); item->wk_state &= ~ONWORKLIST; LIST_REMOVE(item, wk_list); } #endif /* DEBUG */ /* + * Merge two jsegdeps keeping only the oldest one as newer references + * can't be discarded until after older references. + */ +static inline struct jsegdep * +jsegdep_merge(struct jsegdep *one, struct jsegdep *two) +{ + struct jsegdep *swp; + + if (two == NULL) + return (one); + + if (one->jd_seg->js_seq > two->jd_seg->js_seq) { + swp = one; + one = two; + two = swp; + } + WORKLIST_REMOVE(&two->jd_list); + free_jsegdep(two); + + return (one); +} + +/* + * If two freedeps are compatible free one to reduce list size. + */ +static inline struct freedep * +freedep_merge(struct freedep *one, struct freedep *two) +{ + if (two == NULL) + return (one); + + if (one->fd_freework == two->fd_freework) { + WORKLIST_REMOVE(&two->fd_list); + free_freedep(two); + } + return (one); +} + +/* + * Move journal work from one list to another. Duplicate freedeps and + * jsegdeps are coalesced to keep the lists as small as possible. + */ +static void +jwork_move(type, line, dst, src) + short type; + short line; + struct workhead *dst; + struct workhead *src; +{ + struct freedep *freedep; + struct jsegdep *jsegdep; + struct worklist *wkn; + struct worklist *wk; + + KASSERT(dst != src, + ("jwork_move: dst == src")); + freedep = NULL; + jsegdep = NULL; + LIST_FOREACH_SAFE(wk, dst, wk_list, wkn) { + if (wk->wk_type == D_JSEGDEP) + jsegdep = jsegdep_merge(WK_JSEGDEP(wk), jsegdep); + if (wk->wk_type == D_FREEDEP) + freedep = freedep_merge(WK_FREEDEP(wk), freedep); + } + + mtx_assert(&lk, MA_OWNED); + while ((wk = LIST_FIRST(src)) != NULL) { + WORKLIST_REMOVE(wk); + WORKLIST_INSERT(dst, wk); + if (wk->wk_type == D_JSEGDEP) { + jsegdep = jsegdep_merge(WK_JSEGDEP(wk), jsegdep); +#ifdef DEBUG + jsegdep->jd_type = type; + jsegdep->jd_line = line; +#endif + continue; + } + if (wk->wk_type == D_FREEDEP) + freedep = freedep_merge(WK_FREEDEP(wk), freedep); + } +} + +/* * Routines for tracking and managing workitems. */ static void workitem_free(struct worklist *, int); @@ -623,13 +836,16 @@ workitem_free(item, type) #ifdef DEBUG if (item->wk_state & ONWORKLIST) - panic("workitem_free: still on list"); + panic("workitem_free: %s(0x%X) still on list", + TYPENAME(item->wk_type), item->wk_state); if (item->wk_type != type) - panic("workitem_free: type mismatch"); + panic("workitem_free: type mismatch %s != %s", + TYPENAME(item->wk_type), TYPENAME(type)); #endif ump = VFSTOUFS(item->wk_mp); if (--ump->softdep_deps == 0 && ump->softdep_req) wakeup(&ump->softdep_deps); + dep_current[type]--; free(item, DtoM(type)); } @@ -643,6 +859,8 @@ workitem_alloc(item, type, mp) item->wk_mp = mp; item->wk_state = 0; ACQUIRE_LOCK(&lk); + dep_current[type]++; + dep_total[type]++; VFSTOUFS(mp)->softdep_deps++; VFSTOUFS(mp)->softdep_accdeps++; FREE_LOCK(&lk); @@ -696,6 +914,9 @@ SYSCTL_INT(_debug, OID_AUTO, dir_entry, CTLFLAG_RW SYSCTL_DECL(_vfs_ffs); +LIST_HEAD(bmsafemap_hashhead, bmsafemap) *bmsafemap_hashtbl; +static u_long bmsafemap_hash; /* size of hash table - 1 */ + static int compute_summary_at_mount = 0; /* Whether to recompute the summary at mount time */ SYSCTL_INT(_vfs_ffs, OID_AUTO, compute_summary_at_mount, CTLFLAG_RW, &compute_summary_at_mount, 0, "Recompute summary at mount"); @@ -779,7 +1000,7 @@ softdep_speedup(void) req_pending = 1; wakeup(&req_pending); } - + /* XXX Don't we really want to speedup the buf daemon? */ return speedup_syncer(); } @@ -799,7 +1020,8 @@ add_to_worklist(wk) mtx_assert(&lk, MA_OWNED); ump = VFSTOUFS(wk->wk_mp); if (wk->wk_state & ONWORKLIST) - panic("add_to_worklist: already on list"); + panic("add_to_worklist: %s(0x%X) already on list", + TYPENAME(wk->wk_type), wk->wk_state); wk->wk_state |= ONWORKLIST; if (LIST_EMPTY(&ump->softdep_workitem_pending)) LIST_INSERT_HEAD(&ump->softdep_workitem_pending, wk, wk_list); @@ -838,6 +1060,7 @@ softdep_process_worklist(mp, full) ACQUIRE_LOCK(&lk); loopcount = 1; starttime = time_second; + softdep_process_journal(mp, 0); while (ump->softdep_on_worklist > 0) { if ((cnt = process_worklist_item(mp, 0)) == -1) break; @@ -969,6 +1192,11 @@ process_worklist_item(mp, flags) handle_workitem_freefile(WK_FREEFILE(wk)); break; + case D_FREEWORK: + /* Final block in an indirect was freed. */ + handle_workitem_indirblk(WK_FREEWORK(wk)); + break; + default: panic("%s_process_worklist: Unknown type %s", "softdep", TYPENAME(wk->wk_type)); @@ -982,19 +1210,22 @@ process_worklist_item(mp, flags) /* * Move dependencies from one buffer to another. */ -void +int softdep_move_dependencies(oldbp, newbp) struct buf *oldbp; struct buf *newbp; { struct worklist *wk, *wktail; + int dirty; - if (!LIST_EMPTY(&newbp->b_dep)) - panic("softdep_move_dependencies: need merge code"); - wktail = 0; + dirty = 0; + wktail = NULL; ACQUIRE_LOCK(&lk); while ((wk = LIST_FIRST(&oldbp->b_dep)) != NULL) { LIST_REMOVE(wk, wk_list); + if (wk->wk_type == D_BMSAFEMAP && + bmsafemap_rollbacks(WK_BMSAFEMAP(wk))) + dirty = 1; if (wktail == 0) LIST_INSERT_HEAD(&newbp->b_dep, wk, wk_list); else @@ -1002,6 +1233,8 @@ softdep_move_dependencies(oldbp, newbp) wktail = wk; } FREE_LOCK(&lk); + + return (dirty); } /* @@ -1198,23 +1431,22 @@ pagedep_find(pagedephd, ino, lbn, mp, flags, paged * This routine must be called with splbio interrupts blocked. */ static int -pagedep_lookup(ip, lbn, flags, pagedeppp) - struct inode *ip; +pagedep_lookup(mp, ino, lbn, flags, pagedeppp) + struct mount *mp; + ino_t ino; ufs_lbn_t lbn; int flags; struct pagedep **pagedeppp; { struct pagedep *pagedep; struct pagedep_hashhead *pagedephd; - struct mount *mp; int ret; int i; mtx_assert(&lk, MA_OWNED); - mp = ITOV(ip)->v_mount; - pagedephd = PAGEDEP_HASH(mp, ip->i_number, lbn); + pagedephd = PAGEDEP_HASH(mp, ino, lbn); - ret = pagedep_find(pagedephd, ip->i_number, lbn, mp, flags, pagedeppp); + ret = pagedep_find(pagedephd, ino, lbn, mp, flags, pagedeppp); if (*pagedeppp || (flags & DEPALLOC) == 0) return (ret); FREE_LOCK(&lk); @@ -1222,12 +1454,12 @@ static int M_PAGEDEP, M_SOFTDEP_FLAGS|M_ZERO); workitem_alloc(&pagedep->pd_list, D_PAGEDEP, mp); ACQUIRE_LOCK(&lk); - ret = pagedep_find(pagedephd, ip->i_number, lbn, mp, flags, pagedeppp); + ret = pagedep_find(pagedephd, ino, lbn, mp, flags, pagedeppp); if (*pagedeppp) { WORKITEM_FREE(pagedep, D_PAGEDEP); return (ret); } - pagedep->pd_ino = ip->i_number; + pagedep->pd_ino = ino; pagedep->pd_lbn = lbn; LIST_INIT(&pagedep->pd_dirremhd); LIST_INIT(&pagedep->pd_pendinghd); @@ -1314,10 +1546,13 @@ inodedep_lookup(mp, inum, flags, inodedeppp) inodedep->id_savedino1 = NULL; inodedep->id_savedsize = -1; inodedep->id_savedextsize = -1; - inodedep->id_buf = NULL; + inodedep->id_bmsafemap = NULL; + inodedep->id_mkdiradd = NULL; LIST_INIT(&inodedep->id_pendinghd); LIST_INIT(&inodedep->id_inowait); LIST_INIT(&inodedep->id_bufwait); + LIST_INIT(&inodedep->id_jaddrefhd); + LIST_INIT(&inodedep->id_indirdephd); TAILQ_INIT(&inodedep->id_inoupdt); TAILQ_INIT(&inodedep->id_newinoupdt); TAILQ_INIT(&inodedep->id_extupdt); @@ -1405,6 +1640,7 @@ softdep_initialize() &pagedep_hash); inodedep_hashtbl = hashinit(desiredvnodes, M_INODEDEP, &inodedep_hash); newblk_hashtbl = hashinit(64, M_NEWBLK, &newblk_hash); + bmsafemap_hashtbl = hashinit(1024, M_BMSAFEMAP, &bmsafemap_hash); /* initialise bioops hack */ bioops.io_start = softdep_disk_io_initiation; @@ -1428,6 +1664,7 @@ softdep_uninitialize() hashdestroy(pagedep_hashtbl, M_PAGEDEP, pagedep_hash); hashdestroy(inodedep_hashtbl, M_INODEDEP, inodedep_hash); hashdestroy(newblk_hashtbl, M_NEWBLK, newblk_hash); + hashdestroy(bmsafemap_hashtbl, M_BMSAFEMAP, bmsafemap_hash); } /* @@ -1457,9 +1694,14 @@ softdep_mount(devvp, mp, fs, cred) MNT_IUNLOCK(mp); ump = VFSTOUFS(mp); LIST_INIT(&ump->softdep_workitem_pending); + LIST_INIT(&ump->softdep_journal_pending); ump->softdep_worklist_tail = NULL; ump->softdep_on_worklist = 0; ump->softdep_deps = 0; + if ((error = journal_mount(mp, fs, cred)) != 0) { + printf("Failed to start journal: %d\n", error); + return (error); + } /* * When doing soft updates, the counters in the * superblock may have gotten out of sync. Recomputation @@ -1493,7 +1735,1456 @@ softdep_mount(devvp, mp, fs, cred) return (0); } +struct jblocks { + struct jseglst jb_segs; /* TAILQ of current segments. */ + struct jextent *jb_extent; /* Extent array. */ + uint64_t jb_nextseq; /* Next sequence number. */ + uint64_t jb_oldestseq; /* Oldest active sequence number. */ + int jb_avail; /* Available extents. */ + int jb_used; /* Last used extent. */ + int jb_head; /* Allocator head. */ + int jb_off; /* Allocator extent offset. */ + int jb_blocks; /* Total disk blocks covered. */ + int jb_free; /* Total disk blocks free. */ +}; +struct jextent { + ufs2_daddr_t je_daddr; /* Disk block address. */ + int je_blocks; /* Disk block count. */ +}; + +static struct jblocks * +jblocks_create(void) +{ + struct jblocks *jblocks; + + jblocks = malloc(sizeof(*jblocks), M_JBLOCKS, M_WAITOK | M_ZERO); + TAILQ_INIT(&jblocks->jb_segs); + jblocks->jb_avail = 10; + jblocks->jb_extent = malloc(sizeof(struct jextent) * jblocks->jb_avail, + M_JBLOCKS, M_WAITOK | M_ZERO); + + return (jblocks); +} + +static ufs2_daddr_t +jblocks_alloc(struct jblocks *jblocks, int bytes, int *actual) +{ + ufs2_daddr_t daddr; + struct jextent *jext; + int freecnt; + int blocks; + + blocks = bytes / DEV_BSIZE; + jext = &jblocks->jb_extent[jblocks->jb_head]; + freecnt = jext->je_blocks - jblocks->jb_off; + if (freecnt == 0) { + jblocks->jb_off = 0; + if (++jblocks->jb_head > jblocks->jb_used) + jblocks->jb_head = 0; + jext = &jblocks->jb_extent[jblocks->jb_head]; + freecnt = jext->je_blocks; + } + if (freecnt > blocks) + freecnt = blocks; + *actual = freecnt * DEV_BSIZE; + daddr = jext->je_daddr + jblocks->jb_off; + jblocks->jb_off += freecnt; + jblocks->jb_free -= freecnt; + + return (daddr); +} + +static void +jblocks_free(struct jblocks *jblocks, int bytes) +{ + + if (jblocks->jb_free == 0) + wakeup(jblocks); + jblocks->jb_free += bytes / DEV_BSIZE; +} + +static void +jblocks_destroy(struct jblocks *jblocks) +{ + + if (jblocks->jb_extent) + free(jblocks->jb_extent, M_JBLOCKS); + free(jblocks, M_JBLOCKS); +} + +static void +jblocks_add(struct jblocks *jblocks, ufs2_daddr_t daddr, int blocks) +{ + struct jextent *jext; + + jblocks->jb_blocks += blocks; + jblocks->jb_free += blocks; + jext = &jblocks->jb_extent[jblocks->jb_used]; + /* Adding the first block. */ + if (jext->je_daddr == 0) { + jext->je_daddr = daddr; + jext->je_blocks = blocks; + return; + } + /* Extending the last extent. */ + if (jext->je_daddr + jext->je_blocks == daddr) { + jext->je_blocks += blocks; + return; + } + /* Adding a new extent. */ + if (++jblocks->jb_used == jblocks->jb_avail) { + jblocks->jb_avail *= 2; + jext = malloc(sizeof(struct jextent) * jblocks->jb_avail, + M_JBLOCKS, M_WAITOK | M_ZERO); + memcpy(jext, jblocks->jb_extent, + sizeof(struct jextent) * jblocks->jb_used); + free(jblocks->jb_extent, M_JBLOCKS); + jblocks->jb_extent = jext; + } + jext = &jblocks->jb_extent[jblocks->jb_used]; + jext->je_daddr = daddr; + jext->je_blocks = blocks; + return; +} + +static int +journal_mount(mp, fs, cred) + struct mount *mp; + struct fs *fs; + struct ucred *cred; +{ + struct jblocks *jblocks; + struct vnode *vp; + struct inode *ip; + ufs2_daddr_t blkno; + int bcount; + int error; + int i; + + error = VFS_VGET(mp, fs->fs_sujournal, LK_EXCLUSIVE, &vp); + if (error) + return (error); + ip = VTOI(vp); + if (ip->i_size < 1 * 1024 * 1024) { + error = ENOSPC; + goto out; + } + bcount = lblkno(fs, ip->i_size); /* Only use whole blocks. */ + jblocks = jblocks_create(); + for (i = 0; i < bcount; i++) { + error = ufs_bmaparray(vp, i, &blkno, NULL, NULL, NULL); + if (error) + break; + jblocks_add(jblocks, blkno, fsbtodb(fs, fs->fs_frag)); + } + if (error) + jblocks_destroy(jblocks); + else + VFSTOUFS(mp)->softdep_jblocks = jblocks; +out: + vput(vp); + return (error); +} + /* + * Called when a journal record is ready to be written. Space is allocated + * and the journal entry is created when the journal is flushed to stable + * store. + */ +static void +add_to_journal(wk) + struct worklist *wk; +{ + struct ufsmount *ump; + + mtx_assert(&lk, MA_OWNED); + if ((wk->wk_state & DEPCOMPLETE) == 0) + panic("add_to_journal: Invalid wk state 0x%X", wk->wk_state); + ump = VFSTOUFS(wk->wk_mp); + if (wk->wk_state & ONWORKLIST) + panic("add_to_journal: %s(0x%X) already on list", + TYPENAME(wk->wk_type), wk->wk_state); + wk->wk_state |= ONWORKLIST; + if (LIST_EMPTY(&ump->softdep_journal_pending)) + LIST_INSERT_HEAD(&ump->softdep_journal_pending, wk, wk_list); + else + LIST_INSERT_AFTER(ump->softdep_journal_tail, wk, wk_list); + ump->softdep_journal_tail = wk; + ump->softdep_on_journal += 1; +} + +/* + * Remove an arbitrary item for the journal worklist maintain the tail + * pointer. This happens when a new operation obviates the need to + * journal an old operation. + */ +static void +remove_from_journal(wk) + struct worklist *wk; +{ + struct ufsmount *ump; + + mtx_assert(&lk, MA_OWNED); + ump = VFSTOUFS(wk->wk_mp); +#ifdef DEBUG /* XXX Expensive, temporary. */ + { + struct worklist *wkn; + + LIST_FOREACH(wkn, &ump->softdep_journal_pending, wk_list) + if (wkn == wk) + break; + if (wkn == NULL) + panic("remove_from_journal: %p is not in journal", wk); + } +#endif + /* + * We emulate a TAILQ to save space in most structures which do not + * require TAILQ semantics. Here we must update the tail position + * when removing the tail which is not the final entry. + */ + if (ump->softdep_journal_tail == wk) + ump->softdep_journal_tail = + (struct worklist *)wk->wk_list.le_prev; + + WORKLIST_REMOVE(wk); + ump->softdep_on_journal -= 1; +} + +#if 0 +#ifdef DDB +DB_SHOW_COMMAND(softdepsegs, db_show_softdepsegs) +{ + struct jsegdep *jsegdep; + struct jseg *jseg; + int i; + + TAILQ_FOREACH(jseg, &allsegs, js_next) { + db_printf("%p (%ld): %d refs\n", + jseg, jseg->js_seq, jseg->js_refs); + if (jseg->js_refs == 0) + continue; + for (i = 0; i < jseg->js_cnt; i++) { + jsegdep = &jseg->js_deps[i]; + if ((jsegdep->jd_state & ATTACHED) == 0) + continue; + db_printf("\tseg %p allocated to %s @ %d\n", + jsegdep, TYPENAME(jsegdep->jd_type), + jsegdep->jd_line); + } + } +} + +#endif +#endif + +static void +jseg_write(jblocks, jseg, data) + struct jblocks *jblocks; + struct jseg *jseg; + uint8_t *data; +{ + struct jsegrec *rec; + + rec = (struct jsegrec *)data; + rec->jsr_seq = jseg->js_seq; + rec->jsr_oldest = jblocks->jb_oldestseq; + rec->jsr_cnt = jseg->js_cnt; + rec->jsr_crc = 0; +} + +static void +jaddref_write(jaddref, data) + struct jaddref *jaddref; + uint8_t *data; +{ + struct jrefrec *rec; + + rec = (struct jrefrec *)data; + rec->jr_op = JOP_ADDREF; + rec->jr_ino = jaddref->ja_ino; + rec->jr_parent = jaddref->ja_parent; + rec->jr_nlink = jaddref->ja_nlink; + rec->jr_mode = jaddref->ja_mode; + rec->jr_diroff = jaddref->ja_diroff; +} + +static void +jremref_write(jremref, data) + struct jremref *jremref; + uint8_t *data; +{ + struct jrefrec *rec; + + rec = (struct jrefrec *)data; + rec->jr_op = JOP_REMREF; + rec->jr_ino = jremref->jr_ino; + rec->jr_parent = jremref->jr_parent; + rec->jr_nlink = jremref->jr_nlink; + rec->jr_mode = jremref->jr_mode; + rec->jr_diroff = jremref->jr_diroff; +} + +static void +jnewblk_write(jnewblk, data) + struct jnewblk *jnewblk; + uint8_t *data; +{ + struct jblkrec *rec; + + rec = (struct jblkrec *)data; + rec->jb_op = JOP_NEWBLK; + rec->jb_ino = jnewblk->jn_ino; + rec->jb_blkno = jnewblk->jn_blkno; + rec->jb_lbn = jnewblk->jn_lbn; + rec->jb_frags = jnewblk->jn_frags; + rec->jb_oldfrags = jnewblk->jn_oldfrags; +} + +static void +jfreeblk_write(jfreeblk, data) + struct jfreeblk *jfreeblk; + uint8_t *data; +{ + struct jblkrec *rec; + + rec = (struct jblkrec *)data; + rec->jb_op = JOP_FREEBLK; + rec->jb_ino = jfreeblk->jf_ino; + rec->jb_blkno = jfreeblk->jf_blkno; + rec->jb_lbn = jfreeblk->jf_lbn; + rec->jb_frags = jfreeblk->jf_frags; + rec->jb_oldfrags = 0; +} + +static void +jfreefrag_write(jfreefrag, data) + struct jfreefrag *jfreefrag; + uint8_t *data; +{ + struct jblkrec *rec; + + rec = (struct jblkrec *)data; + rec->jb_op = JOP_FREEBLK; + rec->jb_ino = jfreefrag->fr_ino; + rec->jb_blkno = jfreefrag->fr_blkno; + rec->jb_lbn = jfreefrag->fr_lbn; + rec->jb_frags = jfreefrag->fr_frags; + rec->jb_oldfrags = 0; +} + +/* + * Flush some journal records to disk. + */ +static void +softdep_process_journal(mp, flags) + struct mount *mp; + int flags; +{ + struct jblocks *jblocks; + struct ufsmount *ump; + struct worklist *wk; + struct jseg *jseg; + struct buf *bp; + uint8_t *data; + struct fs *fs; + int segwritten; + int jrecpb; /* records per fs block. */ + int jrecpf; /* records per fs frag. */ + int size; + int cnt; + int i; + + ump = VFSTOUFS(mp); + fs = ump->um_fs; + jblocks = ump->softdep_jblocks; + jrecpb = fs->fs_bsize / JREC_SIZE; + jrecpf = fs->fs_fsize / JREC_SIZE; + segwritten = 0; + while ((cnt = ump->softdep_on_journal) != 0) { + /* + * Create a new segment to hold as many as 'cnt' journal + * entries and add them to the segment. Notice cnt is + * off by one to account for the space required by the + * jsegrec. If we don't have a full block to log skip it + * unless flags == MNT_WAIT and we haven't written anything. + */ + cnt++; + if (cnt < jrecpb && (flags != MNT_WAIT || segwritten != 0)) + return; + if (cnt < jrecpb) + cnt = roundup2(cnt, jrecpf); + else + cnt = jrecpb; + /* + * If there is no space try to clean up some entries. + */ + while (jblocks->jb_free == 0) { + if (flags != MNT_WAIT) + return; + /* + * Items in the worklist should release journal + * space when they free storage. Process them + * until we have enough space to proceed. If + * we can't process an item we need to flush more + * bufs and wait. + */ +#if 0 /* + * XXX Currently this deadlocks because bufs are + * held locked while waiting on journal writes in + * truncate and softdep_update_inodeblock(). + */ + printf("softdep: Out of journal space!\n"); + if (process_worklist_item(mp, LK_NOWAIT) != -1) + continue; +#endif + printf("softdep: Out of journal space, no progress."); + softdep_speedup(); + msleep(jblocks, &lk, PRIBIO, "jblocks", 0); + } + FREE_LOCK(&lk); + cnt--; /* Temporarily forget the segment record. */ + size = sizeof(*jseg) + (sizeof(struct jsegdep) * cnt); + jseg = malloc(size, M_JSEG, M_SOFTDEP_FLAGS); + workitem_alloc(&jseg->js_list, D_JSEG, mp); + LIST_INIT(&jseg->js_entries); + jseg->js_refs = 1; /* Self reference. */ + jseg->js_jblocks = jblocks; + for (i = 0; i < cnt; i++) { + jseg->js_deps[i].jd_list.wk_mp = mp; + jseg->js_deps[i].jd_list.wk_type = D_JSEGDEP; + jseg->js_deps[i].jd_list.wk_state = 0; + jseg->js_deps[i].jd_seg = jseg; + } + size = fragroundup(fs, (cnt+1) * JREC_SIZE); + bp = geteblk(size, 0); + ACQUIRE_LOCK(&lk); + /* + * If there was a race while we were allocating the block + * and jseg the entry we care about was likely written. + * We bail out in both the WAIT and NOWAIT case and assume + * the caller will loop if the entry it cares about is + * not written. + */ + if (ump->softdep_on_journal == 0 || jblocks->jb_free == 0) { + bp->b_flags |= B_INVAL | B_NOCACHE; + brelse(bp); + WORKITEM_FREE(jseg, D_JSEG); + return; + } + /* + * XXX If we didn't preallocate jsegdeps we could go up to + * the size available in the block. + */ + cnt = MIN(ump->softdep_on_journal, cnt); + size = fragroundup(fs, (cnt + 1) * JREC_SIZE); + /* + * Allocate a disk block for this journal data and account + * for truncation of the requested size if enough contiguous + * space was not available. + */ + bp->b_blkno = bp->b_lblkno = jblocks_alloc(jblocks, size, + &size); + bp->b_offset = bp->b_blkno * DEV_BSIZE; + bp->b_bcount = size; + bp->b_bufobj = &ump->um_devvp->v_bufobj; + bp->b_flags &= ~B_INVAL; + /* + * Initialize our jseg with as many as cnt - 1 records. + * Assign the next sequence number to it and link it + * in-order. + */ + jseg->js_buf = bp; + jseg->js_cnt = cnt = (size / JREC_SIZE) - 1; + jseg->js_size = size; + jseg->js_seq = jblocks->jb_nextseq++; + if (TAILQ_EMPTY(&jblocks->jb_segs)) + jblocks->jb_oldestseq = jseg->js_seq; + TAILQ_INSERT_TAIL(&jblocks->jb_segs, jseg, js_next); + /* + * Start filling in records from the pending list. + */ + data = bp->b_data; + jseg_write(jblocks, jseg, data); + data += JREC_SIZE; + while ((wk = LIST_FIRST(&ump->softdep_journal_pending)) + != NULL) { + remove_from_journal(wk); + wk->wk_state |= IOSTARTED; + WORKLIST_INSERT(&jseg->js_entries, wk); + switch (wk->wk_type) { + case D_JADDREF: + jaddref_write(WK_JADDREF(wk), data); + break; + case D_JREMREF: + jremref_write(WK_JREMREF(wk), data); + break; + case D_JNEWBLK: + jnewblk_write(WK_JNEWBLK(wk), data); + break; + case D_JFREEBLK: + jfreeblk_write(WK_JFREEBLK(wk), data); + break; + case D_JFREEFRAG: + jfreefrag_write(WK_JFREEFRAG(wk), data); + break; + default: + panic("process_journal: Unknown type %s", + TYPENAME(wk->wk_type)); + /* NOTREACHED */ + } + data += JREC_SIZE; + if (--cnt == 0) + break; + } + /* + * Write this one buffer and continue. + */ +#if 1 + WORKLIST_INSERT(&bp->b_dep, &jseg->js_list); + FREE_LOCK(&lk); + BO_LOCK(bp->b_bufobj); + bgetvp(ump->um_devvp, bp); + BO_UNLOCK(bp->b_bufobj); + /* + * XXX bawrite? Completion ordering? We may permit writing + * the journal out of order but then we must complete + * those segments in order by delaying handle_written_jseg + * until all predecessors have completed. + */ + bwrite(bp); + ACQUIRE_LOCK(&lk); +#else + handle_written_jseg(jseg, bp); + FREE_LOCK(&lk); + brelse(bp); + ACQUIRE_LOCK(&lk); +#endif + segwritten++; + } +} + +/* + * Complete a jseg write, allowing all dependencies awaiting journal writes + * to proceed. Each journal dependency also attaches a jsegdep to dependent + * structures so that the journal segment can be freed to reclaim space. + */ +static void +handle_written_jseg(jseg, bp) + struct jseg *jseg; + struct buf *bp; +{ + struct worklist *wk; + struct jsegdep *jsegdep; + int waiting; + int i; + + if (jseg->js_refs == 0) + panic("handle_written_jseg: No self-reference on %p", jseg); + /* + * We'll never need this buffer again, set flags so it will be + * discarded. + */ + bp->b_flags |= B_INVAL | B_NOCACHE; + i = 0; + while ((wk = LIST_FIRST(&jseg->js_entries)) != NULL) { + WORKLIST_REMOVE(wk); + waiting = wk->wk_state & IOWAITING; + wk->wk_state &= ~(IOSTARTED | IOWAITING); + wk->wk_state |= COMPLETE; + KASSERT(i < jseg->js_cnt, + ("handle_written_jseg: overflow %d >= %d", + i, jseg->js_cnt)); + jsegdep = &jseg->js_deps[i++]; +#ifdef DEBUG + if (jsegdep->jd_state != 0) + panic("Invalid jsegdep: %p jseg %p", jsegdep, jseg); + jsegdep->jd_state = ATTACHED; + jsegdep->jd_type = wk->wk_type; + jsegdep->jd_line = __LINE__; +#endif + jseg->js_refs++; + switch (wk->wk_type) { + case D_JADDREF: + handle_written_jaddref(WK_JADDREF(wk), jsegdep); + break; + case D_JREMREF: + handle_written_jremref(WK_JREMREF(wk), jsegdep); + break; + case D_JNEWBLK: + handle_written_jnewblk(WK_JNEWBLK(wk), jsegdep); + break; + case D_JFREEBLK: + handle_written_jfreeblk(WK_JFREEBLK(wk), jsegdep); + break; + case D_JFREEFRAG: + handle_written_jfreefrag(WK_JFREEFRAG(wk), jsegdep); + break; + default: + panic("handle_written_jseg: Unknown type %s", + TYPENAME(wk->wk_type)); + /* NOTREACHED */ + } + if (waiting) + wakeup(wk); + } + /* Reset the cnt for the real number of jsegdeps handed out. */ + jseg->js_cnt = i; + /* Release the self reference so the structure may be freed. */ + free_jseg(jseg); +} + +/* + * Called once a jremref has made it to stable store. The jremref is marked + * complete and we attempt to free it. Any pagedeps writes sleeping waiting + * for the jremref to complete will be awoken by free_jremref. + */ +static void +handle_written_jremref(jremref, jsegdep) + struct jremref *jremref; + struct jsegdep *jsegdep; +{ + struct dirrem *dirrem; + + dirrem = jremref->jr_dirrem; + jremref->jr_dirrem = NULL; + LIST_REMOVE(jremref, jr_deps); + jsegdep->jd_state |= jremref->jr_state & MKDIR_PARENT; + WORKLIST_INSERT(&dirrem->dm_jwork, &jsegdep->jd_list); + if (LIST_EMPTY(&dirrem->dm_jremrefhd) && + (dirrem->dm_state & COMPLETE) != 0) + add_to_worklist(&dirrem->dm_list); + free_jremref(jremref); +} + +/* + * Called once a jaddref has made it to stable store. The dependency is + * marked complete and any dependent structures are added to the inode + * bufwait list to be completed as soon as it is written. If a bitmap + * write depends on this entry we move the inode into the inodedephd + * of the bmsafemap dependency and attempt to remove the jaddref from + * the bmsafemap. + */ +static void +handle_written_jaddref(jaddref, jsegdep) + struct jaddref *jaddref; + struct jsegdep *jsegdep; +{ + struct inodedep *inodedep; + struct diradd *diradd; + struct mkdir *mkdir; + + mkdir = NULL; + diradd = NULL; + if (inodedep_lookup(jaddref->ja_list.wk_mp, jaddref->ja_ino, + 0, &inodedep) == 0) + panic("handle_written_jaddref: Lost inodedep."); + if (jaddref->ja_diradd == NULL) + panic("handle_written_jaddref: No dependency"); + if (jaddref->ja_diradd->da_list.wk_type == D_DIRADD) { + diradd = jaddref->ja_diradd; + WORKLIST_INSERT(&inodedep->id_bufwait, &diradd->da_list); + } else if (jaddref->ja_state & MKDIR_PARENT) { + mkdir = jaddref->ja_mkdir; + WORKLIST_INSERT(&inodedep->id_bufwait, &mkdir->md_list); + } else if (jaddref->ja_state & MKDIR_BODY) + mkdir = jaddref->ja_mkdir; + else + panic("handle_written_jaddref: Unknown dependency %p", + jaddref->ja_diradd); + jaddref->ja_diradd = NULL; /* also clears ja_mkdir */ + /* + * The mkdir may be waiting on the jaddref to clear before freeing. + */ + if (mkdir) { + KASSERT(mkdir->md_list.wk_type == D_MKDIR, + ("handle_written_jaddref: Incorrect type for mkdir %s", + TYPENAME(mkdir->md_list.wk_type))); + mkdir->md_jaddref = NULL; + diradd = mkdir->md_diradd; + mkdir->md_state |= DEPCOMPLETE; + complete_mkdir(mkdir); + } + WORKLIST_INSERT(&diradd->da_jwork, &jsegdep->jd_list); + if (jaddref->ja_state & NEWBLOCK) { + inodedep->id_state |= ONDEPLIST; + LIST_INSERT_HEAD(&inodedep->id_bmsafemap->sm_inodedephd, + inodedep, id_deps); + } + free_jaddref(jaddref); +} + +/* + * Called once a jnewblk journal is written. The allocdirect or allocindir + * is placed in the bmsafemap to await notification of a written bitmap. + */ +static void +handle_written_jnewblk(jnewblk, jsegdep) + struct jnewblk *jnewblk; + struct jsegdep *jsegdep; +{ + struct bmsafemap *bmsafemap; + struct allocdirect *adp; + struct allocindir *aip; + + if (jnewblk->jn_dep == NULL) + panic("handle_written_jnewblk: No dependency for the segdep."); + jsegdep->jd_type = jnewblk->jn_dep->wk_type; + if (jnewblk->jn_dep->wk_type == D_ALLOCDIRECT) { + adp = WK_ALLOCDIRECT(jnewblk->jn_dep); + adp->ad_jnewblk = NULL; + WORKLIST_INSERT(&adp->ad_jwork, &jsegdep->jd_list); + bmsafemap = adp->ad_bmsafemap; + LIST_INSERT_HEAD(&bmsafemap->sm_allocdirecthd, adp, ad_deps); + } else if (jnewblk->jn_dep->wk_type == D_ALLOCINDIR) { + aip = WK_ALLOCINDIR(jnewblk->jn_dep); + aip->ai_jnewblk = NULL; + WORKLIST_INSERT(&aip->ai_jwork, &jsegdep->jd_list); + bmsafemap = aip->ai_bmsafemap; + LIST_INSERT_HEAD(&bmsafemap->sm_allocindirhd, aip, ai_deps); + } else + panic("handle_written_jnewblk: Unexpected type %s", + TYPENAME(jnewblk->jn_dep->wk_type)); + jnewblk->jn_dep = NULL; + free_jnewblk(jnewblk); +} + +/* + * Free a jfreefrag when the parent freefrag is rendered obsolete. + */ +static void +free_jfreefrag(jfreefrag) + struct jfreefrag *jfreefrag; +{ + + if (jfreefrag->fr_state & IOSTARTED) + WORKLIST_REMOVE(&jfreefrag->fr_list); + else if (jfreefrag->fr_state & ONWORKLIST) + remove_from_journal(&jfreefrag->fr_list); + if (jfreefrag->fr_freefrag != NULL) + panic("free_jfreefrag: Still attached to a freefrag."); + WORKITEM_FREE(jfreefrag, D_JFREEFRAG); +} + +/* + * Called when the journal write for a jfreefrag completes. The parent + * freefrag is added to the worklist if this completes its dependencies. + */ +static void +handle_written_jfreefrag(jfreefrag, jsegdep) + struct jfreefrag *jfreefrag; + struct jsegdep *jsegdep; +{ + struct freefrag *freefrag; + + freefrag = jfreefrag->fr_freefrag; + if (freefrag == NULL) + panic("handle_written_jfreefrag: No freefrag."); + freefrag->ff_state |= DEPCOMPLETE; + freefrag->ff_jfreefrag = NULL; + WORKLIST_INSERT(&freefrag->ff_jwork, &jsegdep->jd_list); + if ((freefrag->ff_state & ALLCOMPLETE) == ALLCOMPLETE) + add_to_worklist(&freefrag->ff_list); + jfreefrag->fr_freefrag = NULL; + free_jfreefrag(jfreefrag); +} + +/* + * Called when the journal write for a jfreeblk completes. The jfreeblk + * is removed from the freeblks list of pending journal writes and the + * jsegdep is moved to the freeblks jwork to be completed when all blocks + * have been reclaimed. + */ +static void +handle_written_jfreeblk(jfreeblk, jsegdep) + struct jfreeblk *jfreeblk; + struct jsegdep *jsegdep; +{ + + LIST_REMOVE(jfreeblk, jf_deps); + WORKLIST_INSERT(&jfreeblk->jf_freeblks->fb_jwork, &jsegdep->jd_list); + free_jfreeblk(jfreeblk); +} + +/* + * Allocate a new jremref that tracks the removal of ip from dp with the + * directory entry offset of diroff. Mark the entry as ATTACHED and + * DEPCOMPLETE as we have all the information required for the journal write + * and the directory has already been removed from the buffer. The caller + * is responsible for linking the jremref into the pagedep and adding it + * to the journal to write. The MKDIR_PARENT flag is set if we're doing + * a DOTDOT addition so handle_workitem_remove() can properly assign + * the jsegdep when we're done. + */ +static struct jremref * +newjremref(dirrem, dp, ip, diroff) + struct dirrem *dirrem; + struct inode *dp; + struct inode *ip; + off_t diroff; +{ + struct jremref *jremref; + + jremref = malloc(sizeof(*jremref), M_JREMREF, M_SOFTDEP_FLAGS); + workitem_alloc(&jremref->jr_list, D_JREMREF, UFSTOVFS(dp->i_ump)); + jremref->jr_state = ATTACHED | DEPCOMPLETE; + jremref->jr_dirrem = dirrem; + jremref->jr_diroff = diroff; + jremref->jr_ino = ip->i_number; + jremref->jr_parent = dp->i_number; + jremref->jr_mode = ip->i_mode; + jremref->jr_nlink = ip->i_nlink; + + return (jremref); +} + +/* + * Allocate a new jaddref to track the addition of ino to dp at diroff. The + * directory offset may not be known until later. The caller is responsible + * adding the entry to the journal when this information is available. nlink + * should be the link count prior to the addition and mode is only required + * to have the correct FMT. + */ +static struct jaddref * +newjaddref(dp, ino, diroff, nlink, mode) + struct inode *dp; + ino_t ino; + off_t diroff; + int16_t nlink; + uint16_t mode; +{ + struct jaddref *jaddref; + + jaddref = malloc(sizeof(*jaddref), M_JADDREF, M_SOFTDEP_FLAGS); + workitem_alloc(&jaddref->ja_list, D_JADDREF, UFSTOVFS(dp->i_ump)); + jaddref->ja_mkdir = NULL; + jaddref->ja_state = ATTACHED | DEPCOMPLETE | ONDEPLIST; + jaddref->ja_diroff = diroff; + jaddref->ja_ino = ino; + jaddref->ja_parent = dp->i_number; + jaddref->ja_mode = mode; + jaddref->ja_nlink = nlink; + + return (jaddref); +} + +/* + * Create a new free dependency for a freework. The caller is responsible + * for adjusting the reference count when it has the lock held. The freedep + * will track an outstanding bitmap write that will ultimately clear the + * freework to continue. + */ +static struct freedep * +newfreedep(struct freework *freework) +{ + struct freedep *freedep; + + freedep = malloc(sizeof(*freedep), M_FREEDEP, M_SOFTDEP_FLAGS); + workitem_alloc(&freedep->fd_list, D_FREEDEP, freework->fw_list.wk_mp); + freedep->fd_freework = freework; + + return (freedep); +} + +/* + * Free a freedep structure once the buffer it is linked to is written. If + * this is the last reference to the freework schedule it for completion. + */ +static void +free_freedep(freedep) + struct freedep *freedep; +{ + + if (--freedep->fd_freework->fw_ref == 0) + add_to_worklist(&freedep->fd_freework->fw_list); + WORKITEM_FREE(freedep, D_FREEDEP); +} + +/* + * Allocate a new freework structure that may be a level in an indirect + * when parent is not NULL or a top level block when it is. The top level + * freework structures are allocated without lk held and before the freeblks + * is visible outside of softdep_setup_freeblocks(). + */ +static struct freework * +newfreework(struct freeblks *freeblks, struct freework *parent, ufs2_daddr_t nb, + ufs_lbn_t lbn, int frags) +{ + struct freework *freework; + + freework = malloc(sizeof(*freework), M_FREEWORK, M_SOFTDEP_FLAGS); + workitem_alloc(&freework->fw_list, D_FREEWORK, freeblks->fb_list.wk_mp); + freework->fw_freeblks = freeblks; + freework->fw_parent = parent; + freework->fw_lbn = lbn; + freework->fw_blkno = nb; + freework->fw_frags = frags; + freework->fw_ref = 0; + LIST_INIT(&freework->fw_jwork); + + if (parent == NULL) { + WORKLIST_INSERT_UNLOCKED(&freeblks->fb_freeworkhd, + &freework->fw_list); + freeblks->fb_ref++; + } + + return (freework); +} + +/* + * Allocate a new jfreeblk and freework to journal top level block pointer + * when truncating a file. The caller must add this to the worklist when + * lk is held. + */ +static struct jfreeblk * +newjfreeblk(freeblks, ip, lbn, blkno, frags) + struct freeblks *freeblks; + struct inode *ip; + ufs_lbn_t lbn; + ufs2_daddr_t blkno; + int frags; +{ + struct jfreeblk *jfreeblk; + + jfreeblk = malloc(sizeof(*jfreeblk), M_JFREEBLK, M_SOFTDEP_FLAGS); + workitem_alloc(&jfreeblk->jf_list, D_JFREEBLK, UFSTOVFS(ip->i_ump)); + jfreeblk->jf_state = ATTACHED | DEPCOMPLETE; + jfreeblk->jf_ino = ip->i_number; + jfreeblk->jf_lbn = lbn; + jfreeblk->jf_blkno = blkno; + jfreeblk->jf_frags = frags; + jfreeblk->jf_freeblks = freeblks; + LIST_INSERT_HEAD(&freeblks->fb_jfreeblkhd, jfreeblk, jf_deps); + + newfreework(freeblks, NULL, blkno, lbn, frags); + + return (jfreeblk); +} + +/* + * Cancel a jaddref either before it has been written or while it is being + * written. This happens when a link is removed before the add reaches + * the disk. The jaddref dependency is kept linked into the bmsafemap + * and inode to prevent the link count or bitmap from reaching the disk + * until handle_workitem_remove() re-adjusts the counts and bitmaps as + * required. + */ +static void +cancel_jaddref(jaddref, inodedep, wkhd) + struct jaddref *jaddref; + struct inodedep *inodedep; + struct workhead *wkhd; +{ + struct jaddref *jaddrefn; + + /* + * If we're canceling a new bitmap we have to search for another ref + * to move into the bmsafemap dep. This might be better expressed + * with another structure. + */ + if (jaddref->ja_state & NEWBLOCK && inodedep != NULL) { + LIST_FOREACH(jaddrefn, &inodedep->id_jaddrefhd, ja_inodeps) { + if (jaddrefn == jaddref) + continue; + if ((jaddrefn->ja_state & + (GOINGAWAY | MKDIR_PARENT | MKDIR_BODY)) != 0) + continue; + jaddrefn->ja_state &= ~(ATTACHED | UNDONE); + jaddrefn->ja_state |= + jaddref->ja_state & (ATTACHED | UNDONE | NEWBLOCK); + jaddref->ja_state &= ~(ATTACHED | UNDONE | NEWBLOCK); + jaddref->ja_state |= ATTACHED; + LIST_REMOVE(jaddref, ja_bmdeps); + LIST_INSERT_HEAD(&inodedep->id_bmsafemap->sm_jaddrefhd, + jaddrefn, ja_bmdeps); + } + } + if (jaddref->ja_state & IOWAITING) { + jaddref->ja_state &= ~IOWAITING; + wakeup(&jaddref->ja_list); + } + jaddref->ja_state |= GOINGAWAY; + jaddref->ja_mkdir = NULL; + if (jaddref->ja_state & IOSTARTED) { + jaddref->ja_state &= ~IOSTARTED; + WORKLIST_REMOVE(&jaddref->ja_list); + } else + remove_from_journal(&jaddref->ja_list); + if (wkhd == NULL) + return; + /* + * Leave the head of the list for jsegdeps for fast merging. + */ + if (LIST_FIRST(wkhd) != NULL) { + jaddref->ja_state |= ONWORKLIST; + LIST_INSERT_AFTER(LIST_FIRST(wkhd), &jaddref->ja_list, wk_list); + } else + WORKLIST_INSERT(wkhd, &jaddref->ja_list); +} + +/* + * Attempt to free a jaddref structure when some work completes. This + * should only succeed once the entry is written and all dependencies have + * been notified. + */ +static void +free_jaddref(jaddref) + struct jaddref *jaddref; +{ + + if ((jaddref->ja_state & ALLCOMPLETE) != ALLCOMPLETE) + return; + if (jaddref->ja_state & NEWBLOCK) + LIST_REMOVE(jaddref, ja_bmdeps); + if (jaddref->ja_state & ONDEPLIST) + LIST_REMOVE(jaddref, ja_inodeps); + if (jaddref->ja_state & (IOSTARTED | ONWORKLIST)) + panic("free_jaddref: Bad state %p(0x%X)", + jaddref, jaddref->ja_state); + if (jaddref->ja_mkdir != NULL) + panic("free_jaddref: Work pending, 0x%X\n", jaddref->ja_state); + WORKITEM_FREE(jaddref, D_JADDREF); +} + +/* + * Free a jremref structure once all dependencies are complete. + */ +static void +free_jremref(jremref) + struct jremref *jremref; +{ + + if ((jremref->jr_state & ALLCOMPLETE) != ALLCOMPLETE) + return; + /* If we were never written remove ourselves from the worklist. */ + if (jremref->jr_state & IOSTARTED) + panic("free_jremref: IO still pending"); + WORKITEM_FREE(jremref, D_JREMREF); +} + +/* + * Free a jnewblk structure. + */ +static void +free_jnewblk(jnewblk) + struct jnewblk *jnewblk; +{ + + if ((jnewblk->jn_state & ALLCOMPLETE) != ALLCOMPLETE) + return; + LIST_REMOVE(jnewblk, jn_deps); + if (jnewblk->jn_dep != NULL) + panic("free_jnewblk: Dependency still attached."); + WORKITEM_FREE(jnewblk, D_JNEWBLK); +} + +/* + * Cancel a jnewblk which has been superseded by a freeblk. The jnewblk + * is kept linked into the bmsafemap until the free completes, thus + * preventing the modified state from ever reaching disk. The free + * routine must pass this structure via ffs_blkfree() to + * softdep_setup_freeblks() so there is no race in releasing the space. + */ +static void +cancel_jnewblk(jnewblk, wkhd) + struct jnewblk *jnewblk; + struct workhead *wkhd; +{ + + if (jnewblk->jn_state & IOWAITING) { + jnewblk->jn_state &= ~IOWAITING; + wakeup(&jnewblk->jn_list); + } + jnewblk->jn_dep = NULL; + jnewblk->jn_state |= GOINGAWAY; + if (jnewblk->jn_state & IOSTARTED) { + jnewblk->jn_state &= ~IOSTARTED; + WORKLIST_REMOVE(&jnewblk->jn_list); + } else + remove_from_journal(&jnewblk->jn_list); + /* + * Leave the head of the list for jsegdeps for fast merging. + */ + if (LIST_FIRST(wkhd) != NULL) { + jnewblk->jn_state |= ONWORKLIST; + LIST_INSERT_AFTER(LIST_FIRST(wkhd), &jnewblk->jn_list, wk_list); + } else + WORKLIST_INSERT(wkhd, &jnewblk->jn_list); +} + +static void +free_jfreeblk(jfreeblk) + struct jfreeblk *jfreeblk; +{ + + WORKITEM_FREE(jfreeblk, D_JFREEBLK); +} + +/* + * Release one reference to a jseg and free it if the count reaches 0. This + * should eventually reclaim journal space as well. + */ +static void +free_jseg(jseg) + struct jseg *jseg; +{ + struct jblocks *jblocks; + struct jsegdep *jsegdep; + + + KASSERT(jseg->js_refs > 0, + ("free_jseg: Invalid refcnt %d", jseg->js_refs)); + if (--jseg->js_refs != 0) + return; +#ifdef DEBUG + { + int errors; + int i; + errors = 0; + for (i = 0; i < jseg->js_cnt; i++) { + jsegdep = &jseg->js_deps[i]; + if (jsegdep->jd_state != 0) { + printf("free_jseg: %p(0x%X) allocated " + "to %s:%d\n", jsegdep, jsegdep->jd_state, + TYPENAME(jsegdep->jd_type), + jsegdep->jd_line); + errors = 1; + } + } + if (errors) + panic("errors"); + } +#endif + jblocks = jseg->js_jblocks; + /* + * Free only those jsegs which have none allocated before them to + * preserve the journal space ordering. + */ + while ((jseg = TAILQ_FIRST(&jblocks->jb_segs)) != NULL) { + jblocks->jb_oldestseq = jseg->js_seq; + if (jseg->js_refs != 0) + break; + TAILQ_REMOVE(&jblocks->jb_segs, jseg, js_next); + jblocks_free(jblocks, jseg->js_size); + KASSERT(LIST_EMPTY(&jseg->js_entries), + ("free_jseg: Freed jseg has valid entries.")); + WORKITEM_FREE(jseg, D_JSEG); + } +} + +/* + * Release a jsegdep and decrement the jseg count. + */ +static void +free_jsegdep(jsegdep) + struct jsegdep *jsegdep; +{ + +#ifdef DEBUG + if (jsegdep->jd_state != ATTACHED) + panic("free_jsegdep: Illegal state 0x%X.", jsegdep->jd_state); + jsegdep->jd_state &= ~ATTACHED; +#endif + free_jseg(jsegdep->jd_seg); +} + +/* + * Wait for a journal item to make it to disk. Initiate journal processing + * if required. + */ +static void +jwait(wk) + struct worklist *wk; +{ + + /* + * If IO has not started we process the journal. We can't mark the + * worklist item as IOWAITING because we drop the lock while + * processing the journal and the worklist entry may be freed after + * this point. The caller may call back in and re-issue the request. + */ + if ((wk->wk_state & IOSTARTED) == 0) { + softdep_process_journal(wk->wk_mp, MNT_WAIT); + return; + } + wk->wk_state |= IOWAITING; + msleep(wk, &lk, PRIBIO, "jwait", 0); +} + +/* + * Lookup an inodedep based on an inode pointer and set the nlinkdelta as + * appropriate. This is a convenience function to reduce duplicate code + * for the setup and revert functions below. + */ +static struct inodedep * +inodedep_lookup_ip(ip) + struct inode *ip; +{ + struct inodedep *inodedep; + + KASSERT(ip->i_nlink >= ip->i_effnlink, + ("inodedep_lookup_ip: bad delta")); + (void) inodedep_lookup(UFSTOVFS(ip->i_ump), ip->i_number, + DEPALLOC, &inodedep); + inodedep->id_nlinkdelta = ip->i_nlink - ip->i_effnlink; + + return (inodedep); +} + +/* + * Called prior to creating a new inode and linking it to a directory. The + * jaddref structure must already be allocated by softdep_setup_inomapdep + * and it is discovered here so we can initialize the mode and update + * nlinkdelta. + */ +void +softdep_setup_create(dp, ip) + struct inode *dp; + struct inode *ip; +{ + struct inodedep *inodedep; + struct jaddref *jaddref; + + KASSERT(ip->i_nlink == 1, + ("softdep_setup_create: Invalid link count.")); + + ACQUIRE_LOCK(&lk); + inodedep = inodedep_lookup_ip(ip); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + KASSERT(jaddref != NULL && + jaddref->ja_parent == dp->i_number && jaddref->ja_nlink == 0, + ("softdep_setup_create: No addref structure present.")); + jaddref->ja_mode = ip->i_mode; + FREE_LOCK(&lk); +} + +/* + * Create a jaddref structure to track the addition of a DOTDOT link when + * we are reparenting an inode as part of a rename. This jaddref will be + * found by softdep_setup_directory_change. + */ +void +softdep_setup_dotdot_link(dp, ip) + struct inode *dp; + struct inode *ip; +{ + struct inodedep *inodedep; + struct jaddref *jaddref; + + /* + * We don't set MKDIR_PARENT as this is not tied to a mkdir and + * is used as a normal link would be. + */ + jaddref = newjaddref(ip, dp->i_number, DOTDOT_OFFSET, dp->i_nlink - 1, + dp->i_mode); + ACQUIRE_LOCK(&lk); + inodedep = inodedep_lookup_ip(dp); + LIST_INSERT_HEAD(&inodedep->id_jaddrefhd, jaddref, ja_inodeps); + FREE_LOCK(&lk); +} + +/* + * Create a jaddref structure to track a new link to an inode. The directory + * offset is not known until softdep_setup_directory_add or + * softdep_setup_directory_change. + */ +void +softdep_setup_link(dp, ip) + struct inode *dp; + struct inode *ip; +{ + struct inodedep *inodedep; + struct jaddref *jaddref; + + jaddref = newjaddref(dp, ip->i_number, 0, ip->i_nlink - 1, ip->i_mode); + ACQUIRE_LOCK(&lk); + inodedep = inodedep_lookup_ip(ip); + LIST_INSERT_HEAD(&inodedep->id_jaddrefhd, jaddref, ja_inodeps); + FREE_LOCK(&lk); +} + +/* + * Called to create the jaddref structures to track . and .. references as + * well as lookup and further initialize the incomplete jaddref created + * by softdep_setup_inomapdep when the inode was allocated.A + */ +void +softdep_setup_mkdir(dp, ip) + struct inode *dp; + struct inode *ip; +{ + struct inodedep *inodedep; + struct jaddref *dotdotaddref; + struct jaddref *dotaddref; + struct jaddref *jaddref; + + dotaddref = newjaddref(ip, ip->i_number, DOT_OFFSET, 1, ip->i_mode); + dotaddref->ja_state |= MKDIR_BODY; + dotdotaddref = newjaddref(ip, dp->i_number, DOTDOT_OFFSET, + dp->i_nlink - 1, dp->i_mode); + dotdotaddref->ja_state |= MKDIR_PARENT; + + ACQUIRE_LOCK(&lk); + inodedep = inodedep_lookup_ip(ip); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + KASSERT(jaddref != NULL, + ("softdep_setup_mkdir: No addref structure present.")); + KASSERT(jaddref->ja_parent == dp->i_number && jaddref->ja_nlink == 0, + ("softdep_setup_mkdir: bad parent/link %d/%d", + jaddref->ja_parent, jaddref->ja_nlink)); + jaddref->ja_mode = ip->i_mode; + LIST_INSERT_AFTER(jaddref, dotaddref, ja_inodeps); + inodedep = inodedep_lookup_ip(dp); + LIST_INSERT_HEAD(&inodedep->id_jaddrefhd, dotdotaddref, ja_inodeps); + FREE_LOCK(&lk); +} + +/* + * Called to track nlinkdelta of the inode and parent directories prior to + * unlinking a directory. + */ +void +softdep_setup_rmdir(dp, ip) + struct inode *dp; + struct inode *ip; +{ + + ACQUIRE_LOCK(&lk); + (void) inodedep_lookup_ip(ip); + (void) inodedep_lookup_ip(dp); + FREE_LOCK(&lk); +} + +/* + * Called to track nlinkdelta of the inode and parent directories prior to + * unlink. + */ +void +softdep_setup_unlink(dp, ip) + struct inode *dp; + struct inode *ip; +{ + + ACQUIRE_LOCK(&lk); + (void) inodedep_lookup_ip(ip); + (void) inodedep_lookup_ip(dp); + FREE_LOCK(&lk); +} + +/* + * Called to release the journal structures created by a failed non-directory + * creation. + */ +void +softdep_revert_create(dp, ip) + struct inode *dp; + struct inode *ip; +{ + struct inodedep *inodedep; + struct jaddref *jaddref; + + ACQUIRE_LOCK(&lk); + inodedep = inodedep_lookup_ip(ip); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + jaddref->ja_state |= COMPLETE | DEPCOMPLETE; + KASSERT(jaddref->ja_parent == dp->i_number, + ("softdep_revert_create: addref parent mismatch")); + free_jaddref(jaddref); + FREE_LOCK(&lk); +} + +/* + * Called to release the journal structures created by a failed dotdot link + * creation. + */ +void +softdep_revert_dotdot_link(dp, ip) + struct inode *dp; + struct inode *ip; +{ + struct inodedep *inodedep; + struct jaddref *jaddref; + + ACQUIRE_LOCK(&lk); + inodedep = inodedep_lookup_ip(dp); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + jaddref->ja_state |= COMPLETE | DEPCOMPLETE; + KASSERT(jaddref->ja_parent == ip->i_number, + ("softdep_revert_dotdot_link: addref parent mismatch")); + free_jaddref(jaddref); + FREE_LOCK(&lk); +} + +/* + * Called to release the journal structures created by a failed link + * addition. + */ +void +softdep_revert_link(dp, ip) + struct inode *dp; + struct inode *ip; +{ + struct inodedep *inodedep; + struct jaddref *jaddref; + + ACQUIRE_LOCK(&lk); + inodedep = inodedep_lookup_ip(ip); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + jaddref->ja_state |= COMPLETE | DEPCOMPLETE; + KASSERT(jaddref->ja_parent == dp->i_number, + ("softdep_revert_link: addref parent mismatch")); + free_jaddref(jaddref); + FREE_LOCK(&lk); +} + +/* + * Called to release the journal structures created by a failed mkdir + * attempt. + */ +void +softdep_revert_mkdir(dp, ip) + struct inode *dp; + struct inode *ip; +{ + struct inodedep *inodedep; + struct jaddref *jaddref; + + ACQUIRE_LOCK(&lk); + inodedep = inodedep_lookup_ip(dp); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + jaddref->ja_state |= COMPLETE | DEPCOMPLETE; + KASSERT(jaddref->ja_parent == ip->i_number, + ("softdep_revert_mkdir: dotdot addref parent mismatch")); + free_jaddref(jaddref); + inodedep = inodedep_lookup_ip(ip); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + jaddref->ja_state |= COMPLETE | DEPCOMPLETE; + KASSERT(jaddref->ja_parent == dp->i_number, + ("softdep_revert_mkdir: addref parent mismatch")); + free_jaddref(jaddref); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + jaddref->ja_state |= COMPLETE | DEPCOMPLETE; + KASSERT(jaddref->ja_parent == ip->i_number, + ("softdep_revert_mkdir: dot addref parent mismatch")); + free_jaddref(jaddref); + FREE_LOCK(&lk); +} + +/* + * Called to correct nlinkdelta after a failed rmdir. + */ +void +softdep_revert_rmdir(dp, ip) + struct inode *dp; + struct inode *ip; +{ + + ACQUIRE_LOCK(&lk); + (void) inodedep_lookup_ip(ip); + (void) inodedep_lookup_ip(dp); + FREE_LOCK(&lk); +} + +/* * Protecting the freemaps (or bitmaps). * * To eliminate the need to execute fsck before mounting a filesystem @@ -1536,8 +3227,16 @@ softdep_setup_inomapdep(bp, ip, newinum) { struct inodedep *inodedep; struct bmsafemap *bmsafemap; + struct jaddref *jaddref; /* + * Allocate the journal reference add structure so that the bitmap + * can be dependent on it. + */ + jaddref = newjaddref(ip, newinum, 0, 0, 0); + jaddref->ja_state |= NEWBLOCK; + + /* * Create a dependency for the newly allocated inode. * Panic if it already exists as something is seriously wrong. * Otherwise add it to the dependency list for the buffer holding @@ -1546,12 +3245,14 @@ softdep_setup_inomapdep(bp, ip, newinum) ACQUIRE_LOCK(&lk); if ((inodedep_lookup(UFSTOVFS(ip->i_ump), newinum, DEPALLOC|NODELAY, &inodedep))) - panic("softdep_setup_inomapdep: dependency for new inode " - "already exists"); - inodedep->id_buf = bp; + panic("softdep_setup_inomapdep: dependency %p for new" + "inode already exists", inodedep); + bmsafemap = bmsafemap_lookup(UFSTOVFS(ip->i_ump), bp, + ino_to_cg(ip->i_ump->um_fs, newinum)); + LIST_INSERT_HEAD(&bmsafemap->sm_jaddrefhd, jaddref, ja_bmdeps); + inodedep->id_bmsafemap = bmsafemap; inodedep->id_state &= ~DEPCOMPLETE; - bmsafemap = bmsafemap_lookup(inodedep->id_list.wk_mp, bp); - LIST_INSERT_HEAD(&bmsafemap->sm_inodedephd, inodedep, id_deps); + LIST_INSERT_HEAD(&inodedep->id_jaddrefhd, jaddref, ja_inodeps); FREE_LOCK(&lk); } @@ -1560,13 +3261,16 @@ softdep_setup_inomapdep(bp, ip, newinum) * allocate block or fragment. */ void -softdep_setup_blkmapdep(bp, mp, newblkno) +softdep_setup_blkmapdep(bp, mp, newblkno, frags, oldfrags) struct buf *bp; /* buffer for cylgroup block with block map */ struct mount *mp; /* filesystem doing allocation */ ufs2_daddr_t newblkno; /* number of newly allocated block */ + int frags; /* Number of fragments. */ + int oldfrags; /* Previous number of fragments for extend. */ { struct newblk *newblk; struct bmsafemap *bmsafemap; + struct jnewblk *jnewblk; struct fs *fs; fs = VFSTOUFS(mp)->um_fs; @@ -1575,14 +3279,70 @@ void * Add it to the dependency list for the buffer holding * the cylinder group map from which it was allocated. */ + jnewblk = malloc(sizeof(*jnewblk), M_JNEWBLK, M_SOFTDEP_FLAGS); + workitem_alloc(&jnewblk->jn_list, D_JNEWBLK, mp); + jnewblk->jn_state = ATTACHED; + jnewblk->jn_dep = NULL; + jnewblk->jn_blkno = newblkno; + jnewblk->jn_frags = frags; + jnewblk->jn_oldfrags = oldfrags; +#ifdef DEBUG + { + struct cg *cgp; + uint8_t *blksfree; + long bno; + int i; + + cgp = (struct cg *)bp->b_data; + blksfree = cg_blksfree(cgp); + bno = dtogd(fs, jnewblk->jn_blkno); + for (i = jnewblk->jn_oldfrags; i < jnewblk->jn_frags; i++) { + if (isset(blksfree, bno + i)) + panic("softdep_setup_blkmapdep: " + "free fragment %d from %d-%d " + "state 0x%X dep %p", i, + jnewblk->jn_oldfrags, + jnewblk->jn_frags, + jnewblk->jn_state, + jnewblk->jn_dep); + } + } +#endif ACQUIRE_LOCK(&lk); if (newblk_lookup(fs, newblkno, DEPALLOC, &newblk) != 0) panic("softdep_setup_blkmapdep: found block"); - newblk->nb_bmsafemap = bmsafemap = bmsafemap_lookup(mp, bp); - LIST_INSERT_HEAD(&bmsafemap->sm_newblkhd, newblk, nb_deps); + newblk->nb_bmsafemap = bmsafemap = bmsafemap_lookup(mp, bp, + dtog(fs, newblkno)); + jnewblk->jn_newblk = newblk; + newblk->nb_jnewblk = jnewblk; + LIST_INSERT_HEAD(&bmsafemap->sm_jnewblkhd, jnewblk, jn_deps); FREE_LOCK(&lk); } +#define BMSAFEMAP_HASH(fs, cg) \ + (&bmsafemap_hashtbl[((((register_t)(fs)) >> 13) + (cg)) & bmsafemap_hash]) + +static int +bmsafemap_find(bmsafemaphd, mp, cg, bmsafemapp) + struct bmsafemap_hashhead *bmsafemaphd; + struct mount *mp; + int cg; + struct bmsafemap **bmsafemapp; +{ + struct bmsafemap *bmsafemap; + + LIST_FOREACH(bmsafemap, bmsafemaphd, sm_hash) + if (bmsafemap->sm_list.wk_mp == mp && bmsafemap->sm_cg == cg) + break; + if (bmsafemap) { + *bmsafemapp = bmsafemap; + return (1); + } + *bmsafemapp = NULL; + + return (0); +} + /* * Find the bmsafemap associated with a cylinder group buffer. * If none exists, create one. The buffer must be locked when @@ -1590,27 +3350,47 @@ void * splbio interrupts blocked. */ static struct bmsafemap * -bmsafemap_lookup(mp, bp) +bmsafemap_lookup(mp, bp, cg) struct mount *mp; struct buf *bp; + int cg; { - struct bmsafemap *bmsafemap; + struct bmsafemap_hashhead *bmsafemaphd; + struct bmsafemap *bmsafemap, *collision; struct worklist *wk; + struct fs *fs; mtx_assert(&lk, MA_OWNED); - LIST_FOREACH(wk, &bp->b_dep, wk_list) - if (wk->wk_type == D_BMSAFEMAP) - return (WK_BMSAFEMAP(wk)); + if (bp) + LIST_FOREACH(wk, &bp->b_dep, wk_list) + if (wk->wk_type == D_BMSAFEMAP) + return (WK_BMSAFEMAP(wk)); + fs = VFSTOUFS(mp)->um_fs; + bmsafemaphd = BMSAFEMAP_HASH(fs, cg); + if (bmsafemap_find(bmsafemaphd, mp, cg, &bmsafemap) == 1) + return (bmsafemap); FREE_LOCK(&lk); bmsafemap = malloc(sizeof(struct bmsafemap), M_BMSAFEMAP, M_SOFTDEP_FLAGS); workitem_alloc(&bmsafemap->sm_list, D_BMSAFEMAP, mp); bmsafemap->sm_buf = bp; LIST_INIT(&bmsafemap->sm_allocdirecthd); + LIST_INIT(&bmsafemap->sm_allocdirectwr); LIST_INIT(&bmsafemap->sm_allocindirhd); + LIST_INIT(&bmsafemap->sm_allocindirwr); LIST_INIT(&bmsafemap->sm_inodedephd); + LIST_INIT(&bmsafemap->sm_inodedepwr); LIST_INIT(&bmsafemap->sm_newblkhd); + LIST_INIT(&bmsafemap->sm_newblkwr); + LIST_INIT(&bmsafemap->sm_jaddrefhd); + LIST_INIT(&bmsafemap->sm_jnewblkhd); ACQUIRE_LOCK(&lk); + if (bmsafemap_find(bmsafemaphd, mp, cg, &collision) == 1) { + WORKITEM_FREE(bmsafemap, D_BMSAFEMAP); + return (collision); + } + bmsafemap->sm_cg = cg; + LIST_INSERT_HEAD(bmsafemaphd, bmsafemap, sm_hash); WORKLIST_INSERT(&bp->b_dep, &bmsafemap->sm_list); return (bmsafemap); } @@ -1645,8 +3425,10 @@ static struct bmsafemap * * unreferenced fragments. */ void -softdep_setup_allocdirect(ip, lbn, newblkno, oldblkno, newsize, oldsize, bp) +softdep_setup_allocdirect(ip, off, lbn, newblkno, oldblkno, newsize, oldsize, + bp) struct inode *ip; /* inode to which block is being added */ + int off; /* Offset from start of di_db. */ ufs_lbn_t lbn; /* block pointer within inode */ ufs2_daddr_t newblkno; /* disk block number being added */ ufs2_daddr_t oldblkno; /* previous block number, 0 unless frag */ @@ -1659,6 +3441,7 @@ void struct bmsafemap *bmsafemap; struct inodedep *inodedep; struct pagedep *pagedep; + struct jnewblk *jnewblk; struct newblk *newblk; struct mount *mp; @@ -1666,20 +3449,22 @@ void adp = malloc(sizeof(struct allocdirect), M_ALLOCDIRECT, M_SOFTDEP_FLAGS|M_ZERO); workitem_alloc(&adp->ad_list, D_ALLOCDIRECT, mp); - adp->ad_lbn = lbn; + adp->ad_offset = off; adp->ad_newblkno = newblkno; adp->ad_oldblkno = oldblkno; adp->ad_newsize = newsize; adp->ad_oldsize = oldsize; adp->ad_state = ATTACHED; LIST_INIT(&adp->ad_newdirblk); + LIST_INIT(&adp->ad_jwork); + adp->ad_jnewblk = NULL; if (newblkno == oldblkno) adp->ad_freefrag = NULL; else - adp->ad_freefrag = newfreefrag(ip, oldblkno, oldsize); + adp->ad_freefrag = newfreefrag(ip, oldblkno, oldsize, lbn); ACQUIRE_LOCK(&lk); - if (lbn >= NDADDR) { + if (off >= NDADDR) { /* allocating an indirect block */ if (oldblkno != 0) panic("softdep_setup_allocdirect: non-zero indir"); @@ -1692,20 +3477,32 @@ void * deletions. */ if ((ip->i_mode & IFMT) == IFDIR && - pagedep_lookup(ip, lbn, DEPALLOC, &pagedep) == 0) + pagedep_lookup(mp, ip->i_number, off, DEPALLOC, + &pagedep) == 0) WORKLIST_INSERT(&bp->b_dep, &pagedep->pd_list); } if (newblk_lookup(ip->i_fs, newblkno, 0, &newblk) == 0) panic("softdep_setup_allocdirect: lost block"); - if (newblk->nb_state == DEPCOMPLETE) { + if ((jnewblk = newblk->nb_jnewblk) != NULL) { + jnewblk->jn_dep = &adp->ad_list; + jnewblk->jn_ino = ip->i_number; + jnewblk->jn_lbn = lbn; + jnewblk->jn_state |= DEPCOMPLETE; + add_to_journal(&jnewblk->jn_list); + bmsafemap = newblk->nb_bmsafemap; + adp->ad_bmsafemap = bmsafemap; + adp->ad_jnewblk = jnewblk; + } else if (newblk->nb_state == DEPCOMPLETE) { adp->ad_state |= DEPCOMPLETE; - adp->ad_buf = NULL; + adp->ad_bmsafemap = NULL; } else { bmsafemap = newblk->nb_bmsafemap; - adp->ad_buf = bmsafemap->sm_buf; + adp->ad_bmsafemap = bmsafemap; LIST_REMOVE(newblk, nb_deps); LIST_INSERT_HEAD(&bmsafemap->sm_allocdirecthd, adp, ad_deps); } + if (adp->ad_freefrag) + add_to_journal(&adp->ad_freefrag->ff_jfreefrag->fr_list); LIST_REMOVE(newblk, nb_hash); free(newblk, M_NEWBLK); @@ -1726,23 +3523,23 @@ void */ adphead = &inodedep->id_newinoupdt; oldadp = TAILQ_LAST(adphead, allocdirectlst); - if (oldadp == NULL || oldadp->ad_lbn <= lbn) { + if (oldadp == NULL || oldadp->ad_offset <= off) { /* insert at end of list */ TAILQ_INSERT_TAIL(adphead, adp, ad_next); - if (oldadp != NULL && oldadp->ad_lbn == lbn) + if (oldadp != NULL && oldadp->ad_offset == off) allocdirect_merge(adphead, adp, oldadp); FREE_LOCK(&lk); return; } TAILQ_FOREACH(oldadp, adphead, ad_next) { - if (oldadp->ad_lbn >= lbn) + if (oldadp->ad_offset >= off) break; } if (oldadp == NULL) panic("softdep_setup_allocdirect: lost entry"); /* insert in middle of list */ TAILQ_INSERT_BEFORE(oldadp, adp, ad_next); - if (oldadp->ad_lbn == lbn) + if (oldadp->ad_offset == off) allocdirect_merge(adphead, adp, oldadp); FREE_LOCK(&lk); } @@ -1761,10 +3558,11 @@ allocdirect_merge(adphead, newadp, oldadp) struct freefrag *freefrag; struct newdirblk *newdirblk; + freefrag = NULL; mtx_assert(&lk, MA_OWNED); if (newadp->ad_oldblkno != oldadp->ad_newblkno || newadp->ad_oldsize != oldadp->ad_newsize || - newadp->ad_lbn >= NDADDR) + newadp->ad_offset >= NDADDR) panic("%s %jd != new %jd || old size %ld != new %ld", "allocdirect_merge: old blkno", (intmax_t)newadp->ad_oldblkno, @@ -1788,8 +3586,8 @@ allocdirect_merge(adphead, newadp, oldadp) * the old dependency, so cannot legitimately be freed until the * conditions for the new dependency are fulfilled. */ + freefrag = newadp->ad_freefrag; if (oldadp->ad_freefrag != NULL || oldadp->ad_oldblkno == 0) { - freefrag = newadp->ad_freefrag; newadp->ad_freefrag = oldadp->ad_freefrag; oldadp->ad_freefrag = freefrag; } @@ -1804,18 +3602,69 @@ allocdirect_merge(adphead, newadp, oldadp) panic("allocdirect_merge: extra newdirblk"); WORKLIST_INSERT(&newadp->ad_newdirblk, &newdirblk->db_list); } - free_allocdirect(adphead, oldadp, 0); + /* + * We need to move any journal dependencies over to the freefrag + * that releases this block if it exists. Otherwise we are + * extending an existing block and we'll wait until that is + * complete to release the journal space and extend the + * new journal to cover this old space as well. + */ + if (freefrag == NULL) { + struct jnewblk *jnewblk; + struct jnewblk *njnewblk; + + if (oldadp->ad_newblkno != newadp->ad_newblkno) + panic("allocdirect_merge: %jd != %jd", + oldadp->ad_newblkno, newadp->ad_newblkno); + jnewblk = oldadp->ad_jnewblk; + free_allocdirect(adphead, oldadp, &newadp->ad_jwork, + D_ALLOCDIRECT, 0); + /* + * We have an unwritten jnewblk, we need to merge the + * frag bits with our own. The newer adp's journal can not + * be written prior to the old one so no need to check for + * it here. + */ + if (jnewblk) { + njnewblk = newadp->ad_jnewblk; + if (jnewblk->jn_state & UNDONE) { + njnewblk->jn_state |= UNDONE | NEWBLOCK; + njnewblk->jn_state &= ~ATTACHED; + jnewblk->jn_state &= ~UNDONE; + } + njnewblk->jn_oldfrags = jnewblk->jn_oldfrags; + WORKLIST_REMOVE(&jnewblk->jn_list); + jnewblk->jn_state |= ATTACHED | COMPLETE; + free_jnewblk(jnewblk); + } + } else { + /* + * We can skip journaling for this freefrag and just complete + * any pending journal work for the allocdirect that is being + * removed after the freefrag completes. + */ + if (freefrag->ff_jfreefrag) { + freefrag->ff_jfreefrag->fr_freefrag = NULL; + free_jfreefrag(freefrag->ff_jfreefrag); + freefrag->ff_jfreefrag = NULL; + freefrag->ff_state |= DEPCOMPLETE; + } + free_allocdirect(adphead, oldadp, &freefrag->ff_jwork, + D_FREEFRAG, 0); + } } /* * Allocate a new freefrag structure if needed. */ static struct freefrag * -newfreefrag(ip, blkno, size) +newfreefrag(ip, blkno, size, lbn) struct inode *ip; ufs2_daddr_t blkno; long size; + ufs_lbn_t lbn; { + struct jfreefrag *jfreefrag; struct freefrag *freefrag; struct fs *fs; @@ -1825,11 +3674,26 @@ static struct freefrag * if (fragnum(fs, blkno) + numfrags(fs, size) > fs->fs_frag) panic("newfreefrag: frag size"); freefrag = malloc(sizeof(struct freefrag), - M_FREEFRAG, M_SOFTDEP_FLAGS); + M_FREEFRAG, M_SOFTDEP_FLAGS); workitem_alloc(&freefrag->ff_list, D_FREEFRAG, UFSTOVFS(ip->i_ump)); + freefrag->ff_state = ATTACHED; + LIST_INIT(&freefrag->ff_jwork); freefrag->ff_inum = ip->i_number; freefrag->ff_blkno = blkno; freefrag->ff_fragsize = size; + + jfreefrag = malloc(sizeof(struct jfreefrag), M_JFREEFRAG, + M_SOFTDEP_FLAGS); + workitem_alloc(&jfreefrag->fr_list, D_JFREEFRAG, UFSTOVFS(ip->i_ump)); + jfreefrag->fr_state = ATTACHED | DEPCOMPLETE; + jfreefrag->fr_ino = ip->i_number; + jfreefrag->fr_lbn = lbn; + jfreefrag->fr_blkno = blkno; + jfreefrag->fr_frags = numfrags(fs, size); + + freefrag->ff_jfreefrag = jfreefrag; + jfreefrag->fr_freefrag = freefrag; + return (freefrag); } @@ -1842,9 +3706,17 @@ handle_workitem_freefrag(freefrag) struct freefrag *freefrag; { struct ufsmount *ump = VFSTOUFS(freefrag->ff_list.wk_mp); + struct workhead wkhd; + /* + * It would be illegal to add new completion items to the + * freefrag after it was schedule to be done so it must be + * safe to modify the list head here. + */ + LIST_INIT(&wkhd); + LIST_SWAP(&freefrag->ff_jwork, &wkhd, worklist, wk_list); ffs_blkfree(ump, ump->um_fs, ump->um_devvp, freefrag->ff_blkno, - freefrag->ff_fragsize, freefrag->ff_inum); + freefrag->ff_fragsize, freefrag->ff_inum, &wkhd); ACQUIRE_LOCK(&lk); WORKITEM_FREE(freefrag, D_FREEFRAG); FREE_LOCK(&lk); @@ -1869,6 +3741,7 @@ softdep_setup_allocext(ip, lbn, newblkno, oldblkno struct allocdirectlst *adphead; struct bmsafemap *bmsafemap; struct inodedep *inodedep; + struct jnewblk *jnewblk; struct newblk *newblk; struct mount *mp; @@ -1876,17 +3749,19 @@ softdep_setup_allocext(ip, lbn, newblkno, oldblkno adp = malloc(sizeof(struct allocdirect), M_ALLOCDIRECT, M_SOFTDEP_FLAGS|M_ZERO); workitem_alloc(&adp->ad_list, D_ALLOCDIRECT, mp); - adp->ad_lbn = lbn; + adp->ad_offset = lbn; adp->ad_newblkno = newblkno; adp->ad_oldblkno = oldblkno; adp->ad_newsize = newsize; adp->ad_oldsize = oldsize; adp->ad_state = ATTACHED | EXTDATA; LIST_INIT(&adp->ad_newdirblk); + LIST_INIT(&adp->ad_jwork); + adp->ad_jnewblk = NULL; if (newblkno == oldblkno) adp->ad_freefrag = NULL; else - adp->ad_freefrag = newfreefrag(ip, oldblkno, oldsize); + adp->ad_freefrag = newfreefrag(ip, oldblkno, oldsize, -lbn); ACQUIRE_LOCK(&lk); if (newblk_lookup(ip->i_fs, newblkno, 0, &newblk) == 0) @@ -1895,15 +3770,27 @@ softdep_setup_allocext(ip, lbn, newblkno, oldblkno inodedep_lookup(mp, ip->i_number, DEPALLOC | NODELAY, &inodedep); adp->ad_inodedep = inodedep; - if (newblk->nb_state == DEPCOMPLETE) { + if ((jnewblk = newblk->nb_jnewblk) != NULL) { + jnewblk->jn_dep = &adp->ad_list; + jnewblk->jn_ino = ip->i_number; + jnewblk->jn_lbn = -1 - lbn; /* Negative lbns for ext. */ + jnewblk->jn_state |= DEPCOMPLETE; + add_to_journal(&jnewblk->jn_list); + bmsafemap = newblk->nb_bmsafemap; + adp->ad_bmsafemap = bmsafemap; + adp->ad_jnewblk = jnewblk; + /* XXX Only for the !journaling case. */ + } else if (newblk->nb_state == DEPCOMPLETE) { adp->ad_state |= DEPCOMPLETE; - adp->ad_buf = NULL; + adp->ad_bmsafemap = NULL; } else { bmsafemap = newblk->nb_bmsafemap; - adp->ad_buf = bmsafemap->sm_buf; + adp->ad_bmsafemap = bmsafemap; LIST_REMOVE(newblk, nb_deps); LIST_INSERT_HEAD(&bmsafemap->sm_allocdirecthd, adp, ad_deps); } + if (adp->ad_freefrag) + add_to_journal(&adp->ad_freefrag->ff_jfreefrag->fr_list); LIST_REMOVE(newblk, nb_hash); free(newblk, M_NEWBLK); @@ -1925,23 +3812,23 @@ softdep_setup_allocext(ip, lbn, newblkno, oldblkno */ adphead = &inodedep->id_newextupdt; oldadp = TAILQ_LAST(adphead, allocdirectlst); - if (oldadp == NULL || oldadp->ad_lbn <= lbn) { + if (oldadp == NULL || oldadp->ad_offset <= lbn) { /* insert at end of list */ TAILQ_INSERT_TAIL(adphead, adp, ad_next); - if (oldadp != NULL && oldadp->ad_lbn == lbn) + if (oldadp != NULL && oldadp->ad_offset == lbn) allocdirect_merge(adphead, adp, oldadp); FREE_LOCK(&lk); return; } TAILQ_FOREACH(oldadp, adphead, ad_next) { - if (oldadp->ad_lbn >= lbn) + if (oldadp->ad_offset >= lbn) break; } if (oldadp == NULL) panic("softdep_setup_allocext: lost entry"); /* insert in middle of list */ TAILQ_INSERT_BEFORE(oldadp, adp, ad_next); - if (oldadp->ad_lbn == lbn) + if (oldadp->ad_offset == lbn) allocdirect_merge(adphead, adp, oldadp); FREE_LOCK(&lk); } @@ -1975,11 +3862,12 @@ softdep_setup_allocext(ip, lbn, newblkno, oldblkno * Allocate a new allocindir structure. */ static struct allocindir * -newallocindir(ip, ptrno, newblkno, oldblkno) +newallocindir(ip, ptrno, newblkno, oldblkno, lbn) struct inode *ip; /* inode for file being extended */ int ptrno; /* offset of pointer in indirect block */ ufs2_daddr_t newblkno; /* disk block number being added */ ufs2_daddr_t oldblkno; /* previous block number, 0 if none */ + ufs_lbn_t lbn; { struct allocindir *aip; @@ -1990,7 +3878,9 @@ static struct allocindir * aip->ai_offset = ptrno; aip->ai_newblkno = newblkno; aip->ai_oldblkno = oldblkno; - aip->ai_freefrag = newfreefrag(ip, oldblkno, ip->i_fs->fs_bsize); + LIST_INIT(&aip->ai_jwork); + aip->ai_jnewblk = NULL; + aip->ai_freefrag = newfreefrag(ip, oldblkno, ip->i_fs->fs_bsize, lbn); return (aip); } @@ -1999,31 +3889,36 @@ static struct allocindir * * to a newly allocated file page. */ void -softdep_setup_allocindir_page(ip, lbn, bp, ptrno, newblkno, oldblkno, nbp) +softdep_setup_allocindir_page(ip, bp, indir, lvl, lbn, newblkno, oldblkno, nbp) struct inode *ip; /* inode for file being extended */ - ufs_lbn_t lbn; /* allocated block number within file */ struct buf *bp; /* buffer with indirect blk referencing page */ - int ptrno; /* offset of pointer in indirect block */ + struct indir *indir; /* Indirect block path. */ + int lvl; /* Indirect block level for parent. */ + ufs_lbn_t lbn; /* Logical block number of this block. */ ufs2_daddr_t newblkno; /* disk block number being added */ ufs2_daddr_t oldblkno; /* previous block number, 0 if none */ struct buf *nbp; /* buffer holding allocated page */ { + struct inodedep *inodedep; struct allocindir *aip; struct pagedep *pagedep; + struct mount *mp; ASSERT_VOP_LOCKED(ITOV(ip), "softdep_setup_allocindir_page"); - aip = newallocindir(ip, ptrno, newblkno, oldblkno); + aip = newallocindir(ip, indir[lvl].in_off, newblkno, oldblkno, lbn); + mp = UFSTOVFS(ip->i_ump); ACQUIRE_LOCK(&lk); + (void) inodedep_lookup(mp, ip->i_number, DEPALLOC, &inodedep); /* * If we are allocating a directory page, then we must * allocate an associated pagedep to track additions and * deletions. */ if ((ip->i_mode & IFMT) == IFDIR && - pagedep_lookup(ip, lbn, DEPALLOC, &pagedep) == 0) + pagedep_lookup(mp, ip->i_number, lbn, DEPALLOC, &pagedep) == 0) WORKLIST_INSERT(&nbp->b_dep, &pagedep->pd_list); WORKLIST_INSERT(&nbp->b_dep, &aip->ai_list); - setup_allocindir_phase2(bp, ip, aip); + setup_allocindir_phase2(bp, ip, inodedep, aip, indir, lvl, lbn); FREE_LOCK(&lk); } @@ -2032,20 +3927,27 @@ void * newly allocated indirect block. */ void -softdep_setup_allocindir_meta(nbp, ip, bp, ptrno, newblkno) +softdep_setup_allocindir_meta(nbp, ip, bp, indir, lvl, newblkno) struct buf *nbp; /* newly allocated indirect block */ struct inode *ip; /* inode for file being extended */ struct buf *bp; /* indirect block referencing allocated block */ - int ptrno; /* offset of pointer in indirect block */ + struct indir *indir; /* Indirect block path. */ + int lvl; /* Indirect block level this block. */ ufs2_daddr_t newblkno; /* disk block number being added */ { + struct inodedep *inodedep; struct allocindir *aip; + ufs_lbn_t lbn; + lbn = indir[lvl].in_lbn; + lvl--; /* Point at parent. */ ASSERT_VOP_LOCKED(ITOV(ip), "softdep_setup_allocindir_meta"); - aip = newallocindir(ip, ptrno, newblkno, 0); + aip = newallocindir(ip, indir[lvl].in_off, newblkno, 0, lbn); ACQUIRE_LOCK(&lk); + (void) inodedep_lookup(UFSTOVFS(ip->i_ump), ip->i_number, DEPALLOC, + &inodedep); WORKLIST_INSERT(&nbp->b_dep, &aip->ai_list); - setup_allocindir_phase2(bp, ip, aip); + setup_allocindir_phase2(bp, ip, inodedep, aip, indir, lvl, lbn); FREE_LOCK(&lk); } @@ -2054,23 +3956,29 @@ void * by one of the two routines above. */ static void -setup_allocindir_phase2(bp, ip, aip) +setup_allocindir_phase2(bp, ip, inodedep, aip, indir, lvl, lbn) struct buf *bp; /* in-memory copy of the indirect block */ struct inode *ip; /* inode for file being extended */ + struct inodedep *inodedep; /* Inodedep for ip */ struct allocindir *aip; /* allocindir allocated by the above routines */ + struct indir *indir; /* Indirect block path. */ + int lvl; /* Indirect block level for parent. */ + ufs_lbn_t lbn; /* Logical block number for this block. */ { struct worklist *wk; struct indirdep *indirdep, *newindirdep; struct bmsafemap *bmsafemap; struct allocindir *oldaip; struct freefrag *freefrag; + struct jnewblk *jnewblk; struct newblk *newblk; ufs2_daddr_t blkno; + KASSERT(lvl >= 1, ("softdep_allocindir_phase2: Invalid level %d", lvl)); mtx_assert(&lk, MA_OWNED); if (bp->b_lblkno >= 0) panic("setup_allocindir_phase2: not indir blk"); - for (indirdep = NULL, newindirdep = NULL; ; ) { + for (freefrag = NULL, indirdep = NULL, newindirdep = NULL; ; ) { LIST_FOREACH(wk, &bp->b_dep, wk_list) { if (wk->wk_type != D_INDIRDEP) continue; @@ -2079,19 +3987,61 @@ static void } if (indirdep == NULL && newindirdep) { indirdep = newindirdep; + newindirdep = NULL; + indirdep->ir_lbn = indir[lvl].in_lbn; WORKLIST_INSERT(&bp->b_dep, &indirdep->ir_list); - newindirdep = NULL; + LIST_INSERT_HEAD(&inodedep->id_indirdephd, indirdep, + ir_next); + /* + * If we've not reached the root of the indirect + * tree link into our parent if it is present. We + * do not need to discover pre-existing children + * as the pointer leading to them must already + * have been stable if they were dirtied. This + * reduces our search path. + */ + if (lvl > 1) { + ufs_lbn_t parentlbn; + + parentlbn = indir[lvl - 1].in_lbn; + KASSERT(parentlbn != indirdep->ir_lbn, + ("parentlbn %jd, lbn %jd", + parentlbn, indirdep->ir_lbn)); + LIST_FOREACH(newindirdep, + &inodedep->id_indirdephd, ir_next) + if (newindirdep->ir_lbn == parentlbn) + break; + KASSERT(newindirdep != indirdep, + ("parent %p lbn %jd == %p lbn %jd", + newindirdep, parentlbn, indirdep, indirdep->ir_lbn)); + } + indirdep->ir_inodedep = inodedep; + indirdep->ir_parent = newindirdep; + if (newindirdep != NULL) { + LIST_INSERT_HEAD(&newindirdep->ir_children, + indirdep, ir_sibling); + newindirdep = NULL; + } } if (indirdep) { if (newblk_lookup(ip->i_fs, aip->ai_newblkno, 0, &newblk) == 0) panic("setup_allocindir: lost block"); - if (newblk->nb_state == DEPCOMPLETE) { + if ((jnewblk = newblk->nb_jnewblk) != NULL) { + jnewblk->jn_dep = &aip->ai_list; + jnewblk->jn_ino = ip->i_number; + jnewblk->jn_lbn = lbn; + jnewblk->jn_state |= DEPCOMPLETE; + add_to_journal(&jnewblk->jn_list); + bmsafemap = newblk->nb_bmsafemap; + aip->ai_bmsafemap = bmsafemap; + aip->ai_jnewblk = jnewblk; + } else if (newblk->nb_state == DEPCOMPLETE) { aip->ai_state |= DEPCOMPLETE; - aip->ai_buf = NULL; + aip->ai_bmsafemap = NULL; } else { bmsafemap = newblk->nb_bmsafemap; - aip->ai_buf = bmsafemap->sm_buf; + aip->ai_bmsafemap = bmsafemap; LIST_REMOVE(newblk, nb_deps); LIST_INSERT_HEAD(&bmsafemap->sm_allocindirhd, aip, ai_deps); @@ -2102,7 +4052,8 @@ static void /* * Check to see if there is an existing dependency * for this block. If there is, merge the old - * dependency into the new one. + * dependency into the new one. This happens + * as a result of reallocblk only. */ if (aip->ai_oldblkno == 0) oldaip = NULL; @@ -2111,17 +4062,18 @@ static void LIST_FOREACH(oldaip, &indirdep->ir_deplisthd, ai_next) if (oldaip->ai_offset == aip->ai_offset) break; - freefrag = NULL; - if (oldaip != NULL) { - if (oldaip->ai_newblkno != aip->ai_oldblkno) - panic("setup_allocindir_phase2: blkno"); - aip->ai_oldblkno = oldaip->ai_oldblkno; - freefrag = aip->ai_freefrag; - aip->ai_freefrag = oldaip->ai_freefrag; - oldaip->ai_freefrag = NULL; - free_allocindir(oldaip, NULL); - } + if (oldaip != NULL) + freefrag = allocindir_merge(aip, oldaip); + else if (aip->ai_freefrag) + add_to_journal( + &aip->ai_freefrag->ff_jfreefrag->fr_list); LIST_INSERT_HEAD(&indirdep->ir_deplisthd, aip, ai_next); + KASSERT(aip->ai_offset >= 0 && + aip->ai_offset < NINDIR(ip->i_ump->um_fs), + ("setup_allocindir_phase2: Bad offset %d", + aip->ai_offset)); + KASSERT(indirdep->ir_savebp != NULL, + ("setup_allocindir_phase2 NULL ir_savebp")); if (ip->i_ump->um_fstype == UFS1) ((ufs1_daddr_t *)indirdep->ir_savebp->b_data) [aip->ai_offset] = aip->ai_oldblkno; @@ -2153,8 +4105,10 @@ static void newindirdep->ir_state = ATTACHED; if (ip->i_ump->um_fstype == UFS1) newindirdep->ir_state |= UFS1FMT; + LIST_INIT(&newindirdep->ir_children); LIST_INIT(&newindirdep->ir_deplisthd); LIST_INIT(&newindirdep->ir_donehd); + LIST_INIT(&newindirdep->ir_jwork); if (bp->b_blkno == bp->b_lblkno) { ufs_bmaparray(bp->b_vp, bp->b_lblkno, &blkno, bp, NULL, NULL); @@ -2168,6 +4122,34 @@ static void } } +static struct freefrag * +allocindir_merge(aip, oldaip) + struct allocindir *aip; + struct allocindir *oldaip; +{ + struct freefrag *freefrag; + + if (oldaip->ai_newblkno != aip->ai_oldblkno) + panic("allocindir_merge: blkno"); + aip->ai_oldblkno = oldaip->ai_oldblkno; + freefrag = aip->ai_freefrag; + aip->ai_freefrag = oldaip->ai_freefrag; + oldaip->ai_freefrag = NULL; + KASSERT(freefrag != NULL, ("setup_allocindir_phase2: No freefrag")); + /* + * We can skip journaling for this freefrag and just complete + * any pending journal work for the allocindir that is being + * removed after the freefrag completes. + */ + freefrag->ff_jfreefrag->fr_freefrag = NULL; + free_jfreefrag(freefrag->ff_jfreefrag); + freefrag->ff_jfreefrag = NULL; + freefrag->ff_state |= DEPCOMPLETE; + free_allocindir(oldaip, NULL, &freefrag->ff_jwork, D_FREEFRAG); + + return (freefrag); +} + /* * Block de-allocation dependencies. * @@ -2206,6 +4188,7 @@ softdep_setup_freeblocks(ip, length, flags) struct freeblks *freeblks; struct inodedep *inodedep; struct allocdirect *adp; + struct jfreeblk *jfreeblk; struct bufobj *bo; struct vnode *vp; struct buf *bp; @@ -2213,6 +4196,12 @@ softdep_setup_freeblocks(ip, length, flags) ufs2_daddr_t extblocks, datablocks; struct mount *mp; int i, delay, error; + ufs2_daddr_t blkno; + ufs_lbn_t tmpval; + ufs_lbn_t lbn; + long oldextsize; + long oldsize; + int frags; fs = ip->i_fs; mp = UFSTOVFS(ip->i_ump); @@ -2221,10 +4210,13 @@ softdep_setup_freeblocks(ip, length, flags) freeblks = malloc(sizeof(struct freeblks), M_FREEBLKS, M_SOFTDEP_FLAGS|M_ZERO); workitem_alloc(&freeblks->fb_list, D_FREEBLKS, mp); + LIST_INIT(&freeblks->fb_jfreeblkhd); + LIST_INIT(&freeblks->fb_jwork); freeblks->fb_state = ATTACHED; freeblks->fb_uid = ip->i_uid; freeblks->fb_previousinum = ip->i_number; freeblks->fb_devvp = ip->i_devvp; + freeblks->fb_chkcnt = 0; ACQUIRE_LOCK(&lk); num_freeblkdep++; FREE_LOCK(&lk); @@ -2232,21 +4224,28 @@ softdep_setup_freeblocks(ip, length, flags) if (fs->fs_magic == FS_UFS2_MAGIC) extblocks = btodb(fragroundup(fs, ip->i_din2->di_extsize)); datablocks = DIP(ip, i_blocks) - extblocks; - if ((flags & IO_NORMAL) == 0) { - freeblks->fb_oldsize = 0; - freeblks->fb_chkcnt = 0; - } else { - freeblks->fb_oldsize = ip->i_size; + if ((flags & IO_NORMAL) != 0) { + oldsize = ip->i_size; ip->i_size = 0; DIP_SET(ip, i_size, 0); freeblks->fb_chkcnt = datablocks; for (i = 0; i < NDADDR; i++) { - freeblks->fb_dblks[i] = DIP(ip, i_db[i]); + blkno = DIP(ip, i_db[i]); DIP_SET(ip, i_db[i], 0); + if (blkno == 0) + continue; + frags = sblksize(fs, oldsize, i); + frags = numfrags(fs, frags); + newjfreeblk(freeblks, ip, i, blkno, frags); } - for (i = 0; i < NIADDR; i++) { - freeblks->fb_iblks[i] = DIP(ip, i_ib[i]); + for (i = 0, tmpval = NINDIR(fs), lbn = NDADDR; i < NIADDR; + i++, tmpval *= NINDIR(fs)) { + blkno = DIP(ip, i_ib[i]); DIP_SET(ip, i_ib[i], 0); + if (blkno) + newjfreeblk(freeblks, ip, -lbn - i, blkno, + fs->fs_frag); + lbn += tmpval; } /* * If the file was removed, then the space being freed was @@ -2259,15 +4258,18 @@ softdep_setup_freeblocks(ip, length, flags) UFS_UNLOCK(ip->i_ump); } } - if ((flags & IO_EXT) == 0) { - freeblks->fb_oldextsize = 0; - } else { - freeblks->fb_oldextsize = ip->i_din2->di_extsize; + if ((flags & IO_EXT) != 0) { + oldextsize = ip->i_din2->di_extsize; ip->i_din2->di_extsize = 0; freeblks->fb_chkcnt += extblocks; for (i = 0; i < NXADDR; i++) { - freeblks->fb_eblks[i] = ip->i_din2->di_extb[i]; + blkno = ip->i_din2->di_extb[i]; ip->i_din2->di_extb[i] = 0; + if (blkno == 0) + continue; + frags = sblksize(fs, oldextsize, i); + frags = numfrags(fs, frags); + newjfreeblk(freeblks, ip, -1 - i, blkno, frags); } } DIP_SET(ip, i_blocks, DIP(ip, i_blocks) - freeblks->fb_chkcnt); @@ -2318,14 +4320,26 @@ softdep_setup_freeblocks(ip, length, flags) merge_inode_lists(&inodedep->id_newinoupdt, &inodedep->id_inoupdt); while ((adp = TAILQ_FIRST(&inodedep->id_inoupdt)) != 0) - free_allocdirect(&inodedep->id_inoupdt, adp, delay); + cancel_allocdirect(&inodedep->id_inoupdt, adp, + freeblks, delay); } if (flags & IO_EXT) { merge_inode_lists(&inodedep->id_newextupdt, &inodedep->id_extupdt); while ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != 0) - free_allocdirect(&inodedep->id_extupdt, adp, delay); + cancel_allocdirect(&inodedep->id_extupdt, adp, + freeblks, delay); } + LIST_FOREACH(jfreeblk, &freeblks->fb_jfreeblkhd, jf_deps) + add_to_journal(&jfreeblk->jf_list); + + /* + * XXX This is so that fb_jfreeblkhd is cleared. The inode should + * actually have a list of pending truncations which prevents + * writing. + */ + while ((jfreeblk = LIST_FIRST(&freeblks->fb_jfreeblkhd)) != NULL) + jwait(&jfreeblk->jf_list); FREE_LOCK(&lk); bdwrite(bp); /* @@ -2349,9 +4363,9 @@ restart: BO_UNLOCK(bo); ACQUIRE_LOCK(&lk); (void) inodedep_lookup(mp, ip->i_number, 0, &inodedep); - deallocate_dependencies(bp, inodedep); + if (deallocate_dependencies(bp, inodedep, freeblks)) + bp->b_flags |= B_INVAL | B_NOCACHE; FREE_LOCK(&lk); - bp->b_flags |= B_INVAL | B_NOCACHE; brelse(bp); BO_LOCK(bo); goto restart; @@ -2389,19 +4403,21 @@ restart: * be reallocated to a new vnode. The buffer must be locked, thus, * no I/O completion operations can occur while we are manipulating * its associated dependencies. The mutex is held so that other I/O's - * associated with related dependencies do not occur. + * associated with related dependencies do not occur. Returns 1 if + * all dependencies were cleared, 0 otherwise. */ -static void -deallocate_dependencies(bp, inodedep) +static int +deallocate_dependencies(bp, inodedep, freeblks) struct buf *bp; struct inodedep *inodedep; + struct freeblks *freeblks; { struct worklist *wk; struct indirdep *indirdep; struct allocindir *aip; struct pagedep *pagedep; + struct jremref *jremref; struct dirrem *dirrem; - struct diradd *dap; int i; mtx_assert(&lk, MA_OWNED); @@ -2424,17 +4440,19 @@ restart: * copy, allowing the safe copy to be freed and holding * on to the real copy for later use in indir_trunc. */ + if (bp->b_lblkno >= 0 || + bp->b_blkno != indirdep->ir_savebp->b_lblkno) + panic("deallocate_dependencies: not indir"); if (indirdep->ir_state & GOINGAWAY) panic("deallocate_dependencies: already gone"); indirdep->ir_state |= GOINGAWAY; VFSTOUFS(bp->b_vp->v_mount)->um_numindirdeps += 1; while ((aip = LIST_FIRST(&indirdep->ir_deplisthd)) != 0) - free_allocindir(aip, inodedep); - if (bp->b_lblkno >= 0 || - bp->b_blkno != indirdep->ir_savebp->b_lblkno) - panic("deallocate_dependencies: not indir"); + cancel_allocindir(aip, inodedep, freeblks); bcopy(bp->b_data, indirdep->ir_savebp->b_data, bp->b_bcount); + indirdep->ir_inodedep = NULL; + LIST_REMOVE(indirdep, ir_next); WORKLIST_REMOVE(wk); WORKLIST_INSERT(&indirdep->ir_savebp->b_dep, wk); continue; @@ -2442,15 +4460,15 @@ restart: case D_PAGEDEP: pagedep = WK_PAGEDEP(wk); /* - * None of the directory additions will ever be - * visible, so they can simply be tossed. + * There should be no directory add dependencies present + * as the directory could not be truncated until all + * children were removed. */ + KASSERT(LIST_FIRST(&pagedep->pd_pendinghd) == NULL, + ("deallocate_dependencies: pendinghd != NULL")); for (i = 0; i < DAHASHSZ; i++) - while ((dap = - LIST_FIRST(&pagedep->pd_diraddhd[i]))) - free_diradd(dap); - while ((dap = LIST_FIRST(&pagedep->pd_pendinghd)) != 0) - free_diradd(dap); + KASSERT(LIST_FIRST(&pagedep->pd_diraddhd[i]) == NULL, + ("deallocate_dependencies: diraddhd != NULL")); /* * Copy any directory remove dependencies to the list * to be processed after the zero'ed inode is written. @@ -2458,13 +4476,26 @@ restart: * can be dumped directly onto the work list. */ LIST_FOREACH(dirrem, &pagedep->pd_dirremhd, dm_next) { + /* + * If there are any dirrems we wait for + * the journal write to complete and + * then restart the buf scan as the lock + * has been dropped. + */ + while ((jremref = + LIST_FIRST(&dirrem->dm_jremrefhd)) + != NULL) { + jwait(&jremref->jr_list); + return (0); + } LIST_REMOVE(dirrem, dm_next); dirrem->dm_dirinum = pagedep->pd_ino; if (inodedep == NULL || (inodedep->id_state & ALLCOMPLETE) == - ALLCOMPLETE) + ALLCOMPLETE) { + dirrem->dm_state |= COMPLETE; add_to_worklist(&dirrem->dm_list); - else + } else WORKLIST_INSERT(&inodedep->id_bufwait, &dirrem->dm_list); } @@ -2487,7 +4518,8 @@ restart: continue; case D_ALLOCINDIR: - free_allocindir(WK_ALLOCINDIR(wk), inodedep); + aip = WK_ALLOCINDIR(wk); + cancel_allocindir(aip, inodedep, freeblks); continue; case D_ALLOCDIRECT: @@ -2502,33 +4534,95 @@ restart: /* NOTREACHED */ } } + + return (1); } /* + * An allocdirect is being canceled due to a truncate. We must make sure + * the journal entry is released in concert with the blkfree that releases + * the storage. Completed journal entries must not be released until the + * space is no longer pointed to by the inode or in the bitmap. + */ +static void +cancel_allocdirect(adphead, adp, freeblks, delay) + struct allocdirectlst *adphead; + struct allocdirect *adp; + struct freeblks *freeblks; + int delay; +{ + struct freework *freework; + struct worklist *wk; + ufs_lbn_t lbn; + + /* + * If the journal hasn't been written the jnewblk must be passed + * to the call to ffs_freeblk that reclaims the space. We accomplish + * this by linking the journal dependency into the freework to be + * freed when freework_freeblock() is called. If the journal has + * been written we can simply reclaim the journal space when the + * freeblks work is complete. + */ + if (adp->ad_jnewblk == NULL) { + free_allocdirect(adphead, adp, &freeblks->fb_jwork, + D_FREEBLKS, delay); + return; + } + lbn = adp->ad_jnewblk->jn_lbn; + /* + * Find the correct freework structure so it releases the canceled + * journal when the bitmap is cleared. This preserves rollback + * until the allocation is reverted. + */ + LIST_FOREACH(wk, &freeblks->fb_freeworkhd, wk_list) { + freework = WK_FREEWORK(wk); + if (freework->fw_lbn != lbn) + continue; + free_allocdirect(adphead, adp, &freework->fw_jwork, + D_FREEWORK, delay); + return; + } + panic("cancel_allocdirect: Freework not found for lbn %jd\n", lbn); +} + +/* * Free an allocdirect. Generate a new freefrag work request if appropriate. * This routine must be called with splbio interrupts blocked. */ static void -free_allocdirect(adphead, adp, delay) +free_allocdirect(adphead, adp, wkhd, type, delay) struct allocdirectlst *adphead; struct allocdirect *adp; + struct workhead *wkhd; + short type; int delay; { struct newdirblk *newdirblk; + struct freefrag *freefrag; struct worklist *wk; mtx_assert(&lk, MA_OWNED); - if ((adp->ad_state & DEPCOMPLETE) == 0) + TAILQ_REMOVE(adphead, adp, ad_next); + /* + * If the journal entry hasn't been written we hold onto the dep + * until it is safe to free along with the other journal work. + */ + if (adp->ad_jnewblk != NULL) + cancel_jnewblk(adp->ad_jnewblk, wkhd); + else if ((adp->ad_state & DEPCOMPLETE) == 0) LIST_REMOVE(adp, ad_deps); - TAILQ_REMOVE(adphead, adp, ad_next); if ((adp->ad_state & COMPLETE) == 0) WORKLIST_REMOVE(&adp->ad_list); - if (adp->ad_freefrag != NULL) { - if (delay) + if (!LIST_EMPTY(&adp->ad_jwork)) + jwork_move(type, __LINE__, wkhd, &adp->ad_jwork); + if ((freefrag = adp->ad_freefrag) != NULL) { + if (delay == 0) { + freefrag->ff_state |= COMPLETE; + if ((freefrag->ff_state & ALLCOMPLETE) == ALLCOMPLETE) + add_to_worklist(&freefrag->ff_list); + } else WORKLIST_INSERT(&adp->ad_inodedep->id_bufwait, - &adp->ad_freefrag->ff_list); - else - add_to_worklist(&adp->ad_freefrag->ff_list); + &freefrag->ff_list); } if ((wk = LIST_FIRST(&adp->ad_newdirblk)) != NULL) { newdirblk = WK_NEWDIRBLK(wk); @@ -2554,6 +4648,7 @@ free_newdirblk(newdirblk) { struct pagedep *pagedep; struct diradd *dap; + struct worklist *wk; int i; mtx_assert(&lk, MA_OWNED); @@ -2571,7 +4666,7 @@ free_newdirblk(newdirblk) pagedep->pd_state &= ~NEWBLOCK; if ((pagedep->pd_state & ONWORKLIST) == 0) while ((dap = LIST_FIRST(&pagedep->pd_pendinghd)) != NULL) - free_diradd(dap); + free_diradd(dap, NULL); /* * If no dependencies remain, the pagedep will be freed. */ @@ -2582,6 +4677,11 @@ free_newdirblk(newdirblk) LIST_REMOVE(pagedep, pd_hash); WORKITEM_FREE(pagedep, D_PAGEDEP); } + /* Should only ever be one item in the list. */ + while ((wk = LIST_FIRST(&newdirblk->db_mkdir)) != NULL) { + WORKLIST_REMOVE(wk); + handle_written_mkdir(WK_MKDIR(wk), MKDIR_BODY); + } WORKITEM_FREE(newdirblk, D_NEWDIRBLK); } @@ -2608,6 +4708,7 @@ softdep_freefile(pvp, ino, mode) freefile->fx_mode = mode; freefile->fx_oldinum = ino; freefile->fx_devvp = ip->i_devvp; + LIST_INIT(&freefile->fx_jwork); if ((ip->i_flag & IN_SPACECOUNTED) == 0) { UFS_LOCK(ip->i_ump); ip->i_fs->fs_pendinginodes += 1; @@ -2618,11 +4719,18 @@ softdep_freefile(pvp, ino, mode) * If the inodedep does not exist, then the zero'ed inode has * been written to disk. If the allocated inode has never been * written to disk, then the on-disk inode is zero'ed. In either - * case we can free the file immediately. + * case we can free the file immediately. If the journal was + * canceled before being written the inode will never make it to + * disk and we must send the canceled journal entrys to + * ffs_freefile() to be cleared in conjunction with the bitmap. */ ACQUIRE_LOCK(&lk); - if (inodedep_lookup(pvp->v_mount, ino, 0, &inodedep) == 0 || - check_inode_unwritten(inodedep)) { + inodedep_lookup(pvp->v_mount, ino, 0, &inodedep); + if (inodedep && (inodedep->id_state & DEPCOMPLETE) == 0 && + !LIST_EMPTY(&inodedep->id_jaddrefhd)) + handle_bufwait(inodedep, &inodedep->id_bufwait, + &freefile->fx_jwork, 1); + if (inodedep == NULL || check_inode_unwritten(inodedep)) { FREE_LOCK(&lk); handle_workitem_freefile(freefile); return; @@ -2654,17 +4762,28 @@ check_inode_unwritten(inodedep) { mtx_assert(&lk, MA_OWNED); + /* + * The inode is unwritten but we have some canceled jaddrefs still, + * the inode will never be written but it is not yet safe to be + * freed either. Return 1 so callers don't place items on the + * bufwait/inowait lists that will never be written. + */ + if ((inodedep->id_state & DEPCOMPLETE) == 0 && + !LIST_EMPTY(&inodedep->id_jaddrefhd)) + return (1); + if ((inodedep->id_state & DEPCOMPLETE) != 0 || !LIST_EMPTY(&inodedep->id_pendinghd) || !LIST_EMPTY(&inodedep->id_bufwait) || !LIST_EMPTY(&inodedep->id_inowait) || + !LIST_EMPTY(&inodedep->id_indirdephd) || !TAILQ_EMPTY(&inodedep->id_inoupdt) || !TAILQ_EMPTY(&inodedep->id_newinoupdt) || !TAILQ_EMPTY(&inodedep->id_extupdt) || !TAILQ_EMPTY(&inodedep->id_newextupdt) || + inodedep->id_mkdiradd != NULL || inodedep->id_nlinkdelta != 0) return (0); - /* * Another process might be in initiate_write_inodeblock_ufs[12] * trying to allocate memory without holding "Softdep Lock". @@ -2674,8 +4793,9 @@ check_inode_unwritten(inodedep) return (0); inodedep->id_state |= ALLCOMPLETE; - LIST_REMOVE(inodedep, id_deps); - inodedep->id_buf = NULL; + if (inodedep->id_state & ONDEPLIST) + LIST_REMOVE(inodedep, id_deps); + inodedep->id_bmsafemap = NULL; if (inodedep->id_state & ONWORKLIST) WORKLIST_REMOVE(&inodedep->id_list); if (inodedep->id_savedino1 != NULL) { @@ -2701,11 +4821,14 @@ free_inodedep(inodedep) !LIST_EMPTY(&inodedep->id_pendinghd) || !LIST_EMPTY(&inodedep->id_bufwait) || !LIST_EMPTY(&inodedep->id_inowait) || + !LIST_EMPTY(&inodedep->id_jaddrefhd) || + !LIST_EMPTY(&inodedep->id_indirdephd) || !TAILQ_EMPTY(&inodedep->id_inoupdt) || !TAILQ_EMPTY(&inodedep->id_newinoupdt) || !TAILQ_EMPTY(&inodedep->id_extupdt) || !TAILQ_EMPTY(&inodedep->id_newextupdt) || - inodedep->id_nlinkdelta != 0 || inodedep->id_savedino1 != NULL) + inodedep->id_nlinkdelta != 0 || inodedep->id_savedino1 != NULL || + inodedep->id_mkdiradd != NULL) return (0); LIST_REMOVE(inodedep, id_hash); WORKITEM_FREE(inodedep, D_INODEDEP); @@ -2714,6 +4837,124 @@ free_inodedep(inodedep) } /* + * Free the block referenced by a freework structure. The parent freeblks + * structure is released and completed when the final cg bitmap reaches + * the disk. This routine may be freeing a jnewblk which never made it to + * disk in which case we do not have to wait as the operation is undone + * in memory immediately. + */ +static void +freework_freeblock(freework) + struct freework *freework; +{ + struct freeblks *freeblks; + struct ufsmount *ump; + struct workhead wkhd; + struct fs *fs; + int complete; + int pending; + int bsize; + + freeblks = freework->fw_freeblks; + ump = VFSTOUFS(freeblks->fb_list.wk_mp); + fs = ump->um_fs; + complete = 0; + LIST_INIT(&wkhd); + /* + * If we are canceling an existing jnewblk pass it to the free + * routine, otherwise pass the freeblk which will ultimately + * release the freeblks + */ + if (!LIST_EMPTY(&freework->fw_jwork)) { + LIST_SWAP(&wkhd, &freework->fw_jwork, worklist, wk_list); + complete = 1; + } else + WORKLIST_INSERT_UNLOCKED(&wkhd, &freework->fw_list); + bsize = lfragtosize(fs, freework->fw_frags); + pending = btodb(bsize); + ACQUIRE_LOCK(&lk); + freeblks->fb_chkcnt -= pending; + FREE_LOCK(&lk); + /* + * extattr blocks don't show up in pending blocks. XXX why? + */ + if (freework->fw_lbn >= 0 || freework->fw_lbn <= -NDADDR) { + UFS_LOCK(ump); + fs->fs_pendingblocks -= pending; + UFS_UNLOCK(ump); + } + ffs_blkfree(ump, fs, freeblks->fb_devvp, freework->fw_blkno, + bsize, freeblks->fb_previousinum, &wkhd); + if (complete == 0) + return; + /* + * The jnewblk will be discarded and the bits in the map never + * made it to disk. We can immediately free the freeblk. + */ + ACQUIRE_LOCK(&lk); + handle_written_freework(freework); + FREE_LOCK(&lk); +} + +/* + * Start the process of freeing an indirect block tree. + */ +static void +freework_freeindir(freework) + struct freework *freework; +{ + struct freeblks *freeblks; + struct ufsmount *ump; + struct fs *fs; + + + freeblks = freework->fw_freeblks; + ump = VFSTOUFS(freeblks->fb_list.wk_mp); + fs = ump->um_fs; + indir_trunc(freework, fsbtodb(fs, freework->fw_blkno), + freework->fw_lbn); +} + +/* + * Called when the last oustanding block owned by an indirect is freed. + * It is now safe to free the indirect block itself. + */ +static void +handle_workitem_indirblk(freework) + struct freework *freework; +{ + + freework_freeblock(freework); +} + +/* + * Called when a freework structure attached to a cg buf is written. The + * ref on either the parent or the freeblks structure is released and + * either may be added to the worklist if it is the final ref. + */ +static void +handle_written_freework(freework) + struct freework *freework; +{ + struct freeblks *freeblks; + struct freework *parent; + + freeblks = freework->fw_freeblks; + parent = freework->fw_parent; + if (parent) { + if (--parent->fw_ref != 0) + parent = NULL; + freeblks = NULL; + } else if (--freeblks->fb_ref != 0) + freeblks = NULL; + WORKITEM_FREE(freework, D_FREEWORK); + if (freeblks) + add_to_worklist(&freeblks->fb_list); + if (parent) + add_to_worklist(&parent->fw_list); +} + +/* * This workitem routine performs the block de-allocation. * The workitem is added to the pending list after the updated * inode block has been written to disk. As mentioned above, @@ -2726,99 +4967,90 @@ handle_workitem_freeblocks(freeblks, flags) struct freeblks *freeblks; int flags; { + struct freework *freework; + struct worklist *wk; + + KASSERT(LIST_EMPTY(&freeblks->fb_jfreeblkhd), + ("handle_workitem_freeblocks: Journal entries not written.")); + if (LIST_EMPTY(&freeblks->fb_freeworkhd)) { + handle_complete_freeblocks(freeblks); + return; + } + freeblks->fb_ref++; + while ((wk = LIST_FIRST(&freeblks->fb_freeworkhd)) != NULL) { + KASSERT(wk->wk_type == D_FREEWORK, + ("handle_workitem_freeblocks: Unknown type %s", + TYPENAME(wk->wk_type))); + WORKLIST_REMOVE_UNLOCKED(wk); + freework = WK_FREEWORK(wk); + if (freework->fw_lbn <= -NDADDR) + freework_freeindir(freework); + else + freework_freeblock(freework); + } + ACQUIRE_LOCK(&lk); + if (--freeblks->fb_ref != 0) + freeblks = NULL; + FREE_LOCK(&lk); + if (freeblks) + handle_complete_freeblocks(freeblks); +} + +/* + * Once all of the freework workitems are complete we can retire the + * freeblocks dependency and any journal work awaiting completion. This + * can not be called until all other dependencies are stable on disk. + */ +static void +handle_complete_freeblocks(freeblks) + struct freeblks *freeblks; +{ struct inode *ip; struct vnode *vp; struct fs *fs; struct ufsmount *ump; - int i, nblocks, level, bsize; - ufs2_daddr_t bn, blocksreleased = 0; - int error, allerror = 0; - ufs_lbn_t baselbns[NIADDR], tmpval; - int fs_pendingblocks; + struct worklist *wk; + int flags; ump = VFSTOUFS(freeblks->fb_list.wk_mp); fs = ump->um_fs; - fs_pendingblocks = 0; - tmpval = 1; - baselbns[0] = NDADDR; - for (i = 1; i < NIADDR; i++) { - tmpval *= NINDIR(fs); - baselbns[i] = baselbns[i - 1] + tmpval; - } - nblocks = btodb(fs->fs_bsize); - blocksreleased = 0; + flags = LK_NOWAIT; + /* - * Release all extended attribute blocks or frags. - */ - if (freeblks->fb_oldextsize > 0) { - for (i = (NXADDR - 1); i >= 0; i--) { - if ((bn = freeblks->fb_eblks[i]) == 0) - continue; - bsize = sblksize(fs, freeblks->fb_oldextsize, i); - ffs_blkfree(ump, fs, freeblks->fb_devvp, bn, bsize, - freeblks->fb_previousinum); - blocksreleased += btodb(bsize); - } - } - /* - * Release all data blocks or frags. - */ - if (freeblks->fb_oldsize > 0) { - /* - * Indirect blocks first. - */ - for (level = (NIADDR - 1); level >= 0; level--) { - if ((bn = freeblks->fb_iblks[level]) == 0) - continue; - if ((error = indir_trunc(freeblks, fsbtodb(fs, bn), - level, baselbns[level], &blocksreleased)) != 0) - allerror = error; - ffs_blkfree(ump, fs, freeblks->fb_devvp, bn, - fs->fs_bsize, freeblks->fb_previousinum); - fs_pendingblocks += nblocks; - blocksreleased += nblocks; - } - /* - * All direct blocks or frags. - */ - for (i = (NDADDR - 1); i >= 0; i--) { - if ((bn = freeblks->fb_dblks[i]) == 0) - continue; - bsize = sblksize(fs, freeblks->fb_oldsize, i); - ffs_blkfree(ump, fs, freeblks->fb_devvp, bn, bsize, - freeblks->fb_previousinum); - fs_pendingblocks += btodb(bsize); - blocksreleased += btodb(bsize); - } - } - UFS_LOCK(ump); - fs->fs_pendingblocks -= fs_pendingblocks; - UFS_UNLOCK(ump); - /* * If we still have not finished background cleanup, then check * to see if the block count needs to be adjusted. */ - if (freeblks->fb_chkcnt != blocksreleased && - (fs->fs_flags & FS_UNCLEAN) != 0 && + if (freeblks->fb_chkcnt != 0 && (fs->fs_flags & FS_UNCLEAN) != 0 && ffs_vgetf(freeblks->fb_list.wk_mp, freeblks->fb_previousinum, - (flags & LK_NOWAIT) | LK_EXCLUSIVE, &vp, FFSV_FORCEINSMQ) - == 0) { + (flags & LK_NOWAIT) | LK_EXCLUSIVE, &vp, FFSV_FORCEINSMQ) == 0) { ip = VTOI(vp); - DIP_SET(ip, i_blocks, DIP(ip, i_blocks) + \ - freeblks->fb_chkcnt - blocksreleased); + DIP_SET(ip, i_blocks, DIP(ip, i_blocks) + freeblks->fb_chkcnt); ip->i_flag |= IN_CHANGE; vput(vp); } #ifdef INVARIANTS - if (freeblks->fb_chkcnt != blocksreleased && + if (freeblks->fb_chkcnt != 0 && ((fs->fs_flags & FS_UNCLEAN) == 0 || (flags & LK_NOWAIT) != 0)) printf("handle_workitem_freeblocks: block count\n"); - if (allerror) - softdep_error("handle_workitem_freeblks", allerror); #endif /* INVARIANTS */ ACQUIRE_LOCK(&lk); + /* + * All of the freeblock deps must be complete prior to this call + * so it's now safe to complete earlier outstanding journal entries. + */ + while ((wk = LIST_FIRST(&freeblks->fb_jwork)) != NULL) { + WORKLIST_REMOVE(wk); + if (wk->wk_type == D_JSEGDEP) + free_jsegdep(WK_JSEGDEP(wk)); + else if (wk->wk_type == D_JNEWBLK) { + wk->wk_state |= COMPLETE; + free_jnewblk(WK_JNEWBLK(wk)); + } else + panic("handle_complete_freeblocks: wrong type %s", + TYPENAME(wk->wk_type)); + } WORKITEM_FREE(freeblks, D_FREEBLKS); num_freeblkdep--; FREE_LOCK(&lk); @@ -2831,28 +5063,39 @@ handle_workitem_freeblocks(freeblks, flags) * blocks. */ static int -indir_trunc(freeblks, dbn, level, lbn, countp) - struct freeblks *freeblks; +indir_trunc(freework, dbn, lbn) + struct freework *freework; ufs2_daddr_t dbn; - int level; ufs_lbn_t lbn; - ufs2_daddr_t *countp; { + struct workhead wkhd; + struct jnewblk *jnewblk; + struct freeblks *freeblks; struct buf *bp; struct fs *fs; + struct worklist *wkn; struct worklist *wk; struct indirdep *indirdep; struct ufsmount *ump; ufs1_daddr_t *bap1 = 0; - ufs2_daddr_t nb, *bap2 = 0; + ufs2_daddr_t nb, nnb, *bap2 = 0; ufs_lbn_t lbnadd; int i, nblocks, ufs1fmt; int error, allerror = 0; int fs_pendingblocks; + int freedeps; + int level; + int cnt; + LIST_INIT(&wkhd); + level = lbn_level(lbn); + if (level == -1) + panic("indir_trunc: Invalid lbn %jd\n", lbn); + freeblks = freework->fw_freeblks; ump = VFSTOUFS(freeblks->fb_list.wk_mp); fs = ump->um_fs; fs_pendingblocks = 0; + freedeps = 0; lbnadd = 1; for (i = level; i > 0; i--) lbnadd *= NINDIR(fs); @@ -2881,7 +5124,8 @@ static int (indirdep->ir_state & GOINGAWAY) == 0) panic("indir_trunc: lost indirdep"); WORKLIST_REMOVE(wk); - WORKITEM_FREE(indirdep, D_INDIRDEP); + LIST_SWAP(&wkhd, &indirdep->ir_jwork, worklist, wk_list); + free_indirdep(indirdep); if (!LIST_EMPTY(&bp->b_dep)) panic("indir_trunc: dangling dep"); ump->um_numindirdeps -= 1; @@ -2909,56 +5153,175 @@ static int ufs1fmt = 0; bap2 = (ufs2_daddr_t *)bp->b_data; } - nblocks = btodb(fs->fs_bsize); - for (i = NINDIR(fs) - 1; i >= 0; i--) { - if (ufs1fmt) + /* + * Reclaim indirect blocks which never made it to disk. + */ + cnt = 0; + LIST_FOREACH_SAFE(wk, &wkhd, wk_list, wkn) { + struct workhead freewk; + if (wk->wk_type != D_JNEWBLK) + continue; + WORKLIST_REMOVE(wk); + LIST_INIT(&freewk); + WORKLIST_INSERT_UNLOCKED(&freewk, wk); + jnewblk = WK_JNEWBLK(wk); + if (jnewblk->jn_lbn > 0) + i = (jnewblk->jn_lbn - -lbn) / lbnadd; + else + i = (jnewblk->jn_lbn - lbn) / lbnadd; + KASSERT(i >= 0 && i < NINDIR(fs), + ("indir_trunc: Index out of range %d parent %jd lbn %jd", + i, lbn, jnewblk->jn_lbn)); + /* Clear the pointer so it isn't found below. */ + if (ufs1fmt) { nb = bap1[i]; - else + bap1[i] = 0; + } else { nb = bap2[i]; + bap2[i] = 0; + } + KASSERT(nb == jnewblk->jn_blkno, + ("indir_trunc: Block mismatch %jd != %jd", + nb, jnewblk->jn_blkno)); + ffs_blkfree(ump, fs, freeblks->fb_devvp, jnewblk->jn_blkno, + fs->fs_bsize, freeblks->fb_previousinum, &freewk); + cnt++; + } + ACQUIRE_LOCK(&lk); + freework->fw_ref += NINDIR(fs) + 1; + /* Any remaining journal work can be completed with freeblks. */ + jwork_move(D_FREEBLKS, __LINE__, &freeblks->fb_jwork, &wkhd); + FREE_LOCK(&lk); + nblocks = btodb(fs->fs_bsize); + if (ufs1fmt) + nb = bap1[NINDIR(fs) - 1]; + else + nb = bap2[NINDIR(fs) - 1]; + /* + * Reclaim on disk blocks. + */ + for (i = NINDIR(fs) - 1; i >= 0; i--, nb = nnb) { + if (i != 0) { + if (ufs1fmt) + nnb = bap1[i-1]; + else + nnb = bap2[i-1]; + } else + nnb = 0; if (nb == 0) continue; + cnt++; if (level != 0) { - if ((error = indir_trunc(freeblks, fsbtodb(fs, nb), - level - 1, lbn + (i * lbnadd), countp)) != 0) + struct freework *nfreework; + ufs_lbn_t nlbn; + + nlbn = (lbn + 1) - (i * lbnadd); + nfreework = newfreework(freeblks, freework, nb, nlbn, + fs->fs_frag); + freedeps++; + if ((error = indir_trunc(nfreework, fsbtodb(fs, nb), + nlbn)) != 0) allerror = error; + } else { + struct freedep *freedep; + + /* + * Attempt to aggregate freedep dependencies for + * all blocks being released to the same CG. + */ + LIST_INIT(&wkhd); + if (nnb == 0 || (dtog(fs, nb) != dtog(fs, nnb))) { + freedep = newfreedep(freework); + WORKLIST_INSERT_UNLOCKED(&wkhd, + &freedep->fd_list); + freedeps++; + } + ffs_blkfree(ump, fs, freeblks->fb_devvp, nb, + fs->fs_bsize, freeblks->fb_previousinum, &wkhd); + fs_pendingblocks += nblocks; } - ffs_blkfree(ump, fs, freeblks->fb_devvp, nb, fs->fs_bsize, - freeblks->fb_previousinum); - fs_pendingblocks += nblocks; - *countp += nblocks; } - UFS_LOCK(ump); - fs->fs_pendingblocks -= fs_pendingblocks; - UFS_UNLOCK(ump); + ACQUIRE_LOCK(&lk); + if (level == 0) + fs_pendingblocks = (nblocks * cnt); + freework->fw_ref += freedeps; + freework->fw_ref -= NINDIR(fs) + 1; + if (freework->fw_ref != 0) + freework = NULL; + FREE_LOCK(&lk); + if (fs_pendingblocks) { + ACQUIRE_LOCK(&lk); + freeblks->fb_chkcnt -= fs_pendingblocks; + FREE_LOCK(&lk); + UFS_LOCK(ump); + fs->fs_pendingblocks -= fs_pendingblocks; + UFS_UNLOCK(ump); + } bp->b_flags |= B_INVAL | B_NOCACHE; brelse(bp); + if (freework) + handle_workitem_indirblk(freework); return (allerror); } /* + * Cancel an allocindir when it is removed via truncation. + */ +static void +cancel_allocindir(aip, inodedep, freeblks) + struct allocindir *aip; + struct inodedep *inodedep; + struct freeblks *freeblks; +{ + + /* + * If the journal hasn't been written the jnewblk must be passed + * to the call to ffs_freeblk that reclaims the space. We accomplish + * this by linking the journal dependency into the indirdep to be + * freed when indir_trunc() is called. If the journal has already + * been written we can simply reclaim the journal space when the + * freeblks work is complete. + */ + if (aip->ai_jnewblk == NULL) + free_allocindir(aip, inodedep, &freeblks->fb_jwork, + D_FREEBLKS); + else + free_allocindir(aip, inodedep, &aip->ai_indirdep->ir_jwork, + D_ALLOCINDIR); +} + +/* * Free an allocindir. * This routine must be called with splbio interrupts blocked. */ static void -free_allocindir(aip, inodedep) +free_allocindir(aip, inodedep, wkhd, type) struct allocindir *aip; struct inodedep *inodedep; + struct workhead *wkhd; + short type; { struct freefrag *freefrag; mtx_assert(&lk, MA_OWNED); - if ((aip->ai_state & DEPCOMPLETE) == 0) + if (aip->ai_jnewblk != NULL) + cancel_jnewblk(aip->ai_jnewblk, wkhd); + else if ((aip->ai_state & DEPCOMPLETE) == 0) LIST_REMOVE(aip, ai_deps); if (aip->ai_state & ONWORKLIST) WORKLIST_REMOVE(&aip->ai_list); LIST_REMOVE(aip, ai_next); if ((freefrag = aip->ai_freefrag) != NULL) { - if (inodedep == NULL) - add_to_worklist(&freefrag->ff_list); - else + if (inodedep == NULL) { + freefrag->ff_state |= COMPLETE; + if ((freefrag->ff_state & ALLCOMPLETE) == ALLCOMPLETE) + add_to_worklist(&freefrag->ff_list); + } else WORKLIST_INSERT(&inodedep->id_bufwait, &freefrag->ff_list); } + if (!LIST_EMPTY(&aip->ai_jwork)) + jwork_move(type, __LINE__, wkhd, &aip->ai_jwork); WORKITEM_FREE(aip, D_ALLOCINDIR); } @@ -3002,7 +5365,10 @@ softdep_setup_directory_add(bp, dp, diroffset, new struct pagedep *pagedep; struct inodedep *inodedep; struct newdirblk *newdirblk = 0; + struct newdirblk *mknewdirblk = 0; struct mkdir *mkdir1, *mkdir2; + struct worklist *wk; + struct jaddref *jaddref; struct mount *mp; /* @@ -3013,6 +5379,7 @@ softdep_setup_directory_add(bp, dp, diroffset, new bdwrite(newdirbp); return (0); } + mkdir1 = NULL; mp = UFSTOVFS(dp->i_ump); fs = dp->i_fs; lbn = lblkno(fs, diroffset); @@ -3023,25 +5390,31 @@ softdep_setup_directory_add(bp, dp, diroffset, new dap->da_offset = offset; dap->da_newinum = newinum; dap->da_state = ATTACHED; + LIST_INIT(&dap->da_jwork); if (isnewblk && lbn < NDADDR && fragoff(fs, diroffset) == 0) { newdirblk = malloc(sizeof(struct newdirblk), M_NEWDIRBLK, M_SOFTDEP_FLAGS); workitem_alloc(&newdirblk->db_list, D_NEWDIRBLK, mp); + LIST_INIT(&newdirblk->db_mkdir); } if (newdirbp == NULL) { dap->da_state |= DEPCOMPLETE; ACQUIRE_LOCK(&lk); } else { + mknewdirblk = malloc(sizeof(struct newdirblk), + M_NEWDIRBLK, M_SOFTDEP_FLAGS); + workitem_alloc(&mknewdirblk->db_list, D_NEWDIRBLK, mp); + LIST_INIT(&mknewdirblk->db_mkdir); dap->da_state |= MKDIR_BODY | MKDIR_PARENT; mkdir1 = malloc(sizeof(struct mkdir), M_MKDIR, M_SOFTDEP_FLAGS); workitem_alloc(&mkdir1->md_list, D_MKDIR, mp); - mkdir1->md_state = MKDIR_BODY; + mkdir1->md_state = ATTACHED | MKDIR_BODY; mkdir1->md_diradd = dap; mkdir2 = malloc(sizeof(struct mkdir), M_MKDIR, M_SOFTDEP_FLAGS); workitem_alloc(&mkdir2->md_list, D_MKDIR, mp); - mkdir2->md_state = MKDIR_PARENT; + mkdir2->md_state = ATTACHED | MKDIR_PARENT; mkdir2->md_diradd = dap; /* * Dependency on "." and ".." being written to disk. @@ -3049,40 +5422,97 @@ softdep_setup_directory_add(bp, dp, diroffset, new mkdir1->md_buf = newdirbp; ACQUIRE_LOCK(&lk); LIST_INSERT_HEAD(&mkdirlisthd, mkdir1, md_mkdirs); - WORKLIST_INSERT(&newdirbp->b_dep, &mkdir1->md_list); - FREE_LOCK(&lk); - bdwrite(newdirbp); /* - * Dependency on link count increase for parent directory + * We must link the pagedep, allocdirect, and newdirblk for + * the initial file page so the pointer to the new directory + * is not written until the directory contents are live and + * any subsequent additions are not marked live until the + * block is reachable via the inode. */ - ACQUIRE_LOCK(&lk); - if (inodedep_lookup(mp, dp->i_number, 0, &inodedep) == 0 - || (inodedep->id_state & ALLCOMPLETE) == ALLCOMPLETE) { - dap->da_state &= ~MKDIR_PARENT; - WORKITEM_FREE(mkdir2, D_MKDIR); - } else { - LIST_INSERT_HEAD(&mkdirlisthd, mkdir2, md_mkdirs); - WORKLIST_INSERT(&inodedep->id_bufwait,&mkdir2->md_list); - } + if (pagedep_lookup(mp, newinum, 0, 0, &pagedep) == 0) + panic("softdep_setup_directory_add: " + "lost mkdir pagedep"); + LIST_FOREACH(wk, &newdirbp->b_dep, wk_list) + if (wk->wk_type == D_ALLOCDIRECT) + break; + if (wk == NULL) + panic("softdep_setup_directory_add: lost mkdir adp"); + adp = WK_ALLOCDIRECT(wk); + pagedep->pd_state |= NEWBLOCK; + mknewdirblk->db_pagedep = pagedep; + WORKLIST_INSERT(&adp->ad_newdirblk, &mknewdirblk->db_list); + WORKLIST_INSERT(&mknewdirblk->db_mkdir, &mkdir1->md_list); + /* + * Look up the inodedep for the parent directory so that we + * can link mkdir2 into the pending dotdot jaddref or + * the inode write if there is none. If the inode is + * ALLCOMPLETE and no jaddref is present all dependencies have + * been satisfied and mkdir2 can be freed. + */ + if (inodedep_lookup(mp, dp->i_number, 0, &inodedep) == 0) + panic("softdep_setup_directory_add: lost parent"); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + KASSERT(jaddref != NULL && jaddref->ja_parent == newinum && + (jaddref->ja_state & MKDIR_PARENT), + ("softdep_setup_directory_add: bad dotdot jaddref %p", + jaddref)); + LIST_INSERT_HEAD(&mkdirlisthd, mkdir2, md_mkdirs); + mkdir2->md_jaddref = jaddref; + jaddref->ja_mkdir = mkdir2; + /* + * It is important that this journal entry is added prior + * to the dot entry since it writes both the dot and dotdot + * links. This entry must be visible to the recovery + * operation for it to correctly adjust the parent's link. + */ + add_to_journal(&jaddref->ja_list); } /* * Link into parent directory pagedep to await its being written. */ - if (pagedep_lookup(dp, lbn, DEPALLOC, &pagedep) == 0) + if (pagedep_lookup(mp, dp->i_number, lbn, DEPALLOC, &pagedep) == 0) WORKLIST_INSERT(&bp->b_dep, &pagedep->pd_list); + dap->da_pagedep = pagedep; LIST_INSERT_HEAD(&pagedep->pd_diraddhd[DIRADDHASH(offset)], dap, da_pdlist); /* - * Link into its inodedep. Put it on the id_bufwait list if the inode - * is not yet written. If it is written, do the post-inode write - * processing to put it on the id_pendinghd list. + * Link the diradd into the jaddref so it may be completed after + * the journal entry is written. The directory offset was not + * known until now so it must still exist as the first element + * of the jaddrefhd queue. */ - (void) inodedep_lookup(mp, newinum, DEPALLOC, &inodedep); - if ((inodedep->id_state & ALLCOMPLETE) == ALLCOMPLETE) - diradd_inode_written(dap, inodedep); - else - WORKLIST_INSERT(&inodedep->id_bufwait, &dap->da_list); + if (inodedep_lookup(mp, newinum, 0, &inodedep) == 0) + panic("softdep_setup_directory_add: Lost inodedep"); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + KASSERT(jaddref != NULL && jaddref->ja_parent == dp->i_number, + ("softdep_setup_directory_add: bad jaddref %p", jaddref)); + jaddref->ja_diroff = diroffset; + jaddref->ja_diradd = dap; + add_to_journal(&jaddref->ja_list); + /* + * If we are adding a new directory remember this diradd so that if + * we rename it we can keep the dot and dotdot dependencies. If + * we are adding a new name for an inode that has a mkdiradd we + * must be in rename and we have to move the dot and dotdot + * dependencies to this new name. The old name is being orphaned + * soon. + */ + if (mkdir1 != NULL) { + if (inodedep->id_mkdiradd != NULL) + panic("softdep_setup_directory_add: Existing mkdir"); + inodedep->id_mkdiradd = dap; + jaddref = LIST_NEXT(jaddref, ja_inodeps); + KASSERT(jaddref != NULL && + jaddref->ja_ino == jaddref->ja_parent && + (jaddref->ja_state & MKDIR_BODY), + ("softdep_setup_directory_add: bad dot jaddref %p", + jaddref)); + mkdir1->md_jaddref = jaddref; + jaddref->ja_mkdir = mkdir1; + add_to_journal(&jaddref->ja_list); + } else if (inodedep->id_mkdiradd) + merge_diradd(inodedep, dap); if (isnewblk) { /* * Directories growing into indirect blocks are rare @@ -3123,7 +5553,7 @@ softdep_setup_directory_add(bp, dp, diroffset, new if (inodedep_lookup(mp, dp->i_number, 0, &inodedep) == 0) panic("softdep_setup_directory_add: lost inodedep"); adp = TAILQ_LAST(&inodedep->id_newinoupdt, allocdirectlst); - if (adp == NULL || adp->ad_lbn != lbn) + if (adp == NULL || adp->ad_offset != lbn) panic("softdep_setup_directory_add: lost entry"); pagedep->pd_state |= NEWBLOCK; newdirblk->db_pagedep = pagedep; @@ -3156,12 +5586,14 @@ softdep_change_directoryentry_offset(dp, base, old ACQUIRE_LOCK(&lk); lbn = lblkno(dp->i_fs, dp->i_offset); offset = blkoff(dp->i_fs, dp->i_offset); - if (pagedep_lookup(dp, lbn, 0, &pagedep) == 0) + if (pagedep_lookup(UFSTOVFS(dp->i_ump), + dp->i_number, lbn, 0, &pagedep) == 0) goto done; oldoffset = offset + (oldloc - base); newoffset = offset + (newloc - base); - LIST_FOREACH(dap, &pagedep->pd_diraddhd[DIRADDHASH(oldoffset)], da_pdlist) { + LIST_FOREACH(dap, &pagedep->pd_diraddhd[DIRADDHASH(oldoffset)], + da_pdlist) { if (dap->da_offset != oldoffset) continue; dap->da_offset = newoffset; @@ -3184,48 +5616,146 @@ softdep_change_directoryentry_offset(dp, base, old done: bcopy(oldloc, newloc, entrysize); FREE_LOCK(&lk); + /* XXX Make a remove and add record, add to the pagedep. */ } /* + * Move the mkdir dependencies and journal work from one diradd to another + * when renaming a directory. The new name must depend on the mkdir deps + * completing as the old name did. Directories can only have one valid link + * at a time so one must be canonical. + */ +static void +merge_diradd(inodedep, newdap) + struct inodedep *inodedep; + struct diradd *newdap; +{ + struct diradd *olddap; + struct mkdir *mkdir, *nextmd; + short state; + + olddap = inodedep->id_mkdiradd; + inodedep->id_mkdiradd = newdap; + if ((olddap->da_state & (MKDIR_PARENT | MKDIR_BODY)) != 0) { + newdap->da_state &= ~DEPCOMPLETE; + for (mkdir = LIST_FIRST(&mkdirlisthd); mkdir; mkdir = nextmd) { + nextmd = LIST_NEXT(mkdir, md_mkdirs); + if (mkdir->md_diradd != olddap) + continue; + mkdir->md_diradd = newdap; + state = mkdir->md_state & (MKDIR_PARENT | MKDIR_BODY); + newdap->da_state |= state; + olddap->da_state &= ~state; + if ((olddap->da_state & + (MKDIR_PARENT | MKDIR_BODY)) == 0) + break; + } + if ((olddap->da_state & (MKDIR_PARENT | MKDIR_BODY)) != 0) + panic("merge_diradd: unfound ref"); + } + /* + * Any mkdir related journal items are not safe to be freed until + * the new name is stable. + */ + jwork_move(D_DIRADD, __LINE__, &newdap->da_jwork, &olddap->da_jwork); + olddap->da_state |= DEPCOMPLETE; + complete_diradd(olddap); +} + +/* + * Move the diradd to the pending list when all diradd dependencies are + * complete. + */ +static void +complete_diradd(dap) + struct diradd *dap; +{ + struct pagedep *pagedep; + + if ((dap->da_state & ALLCOMPLETE) == ALLCOMPLETE) { + if (dap->da_state & DIRCHG) + pagedep = dap->da_previous->dm_pagedep; + else + pagedep = dap->da_pagedep; + LIST_REMOVE(dap, da_pdlist); + LIST_INSERT_HEAD(&pagedep->pd_pendinghd, dap, da_pdlist); + } +} + +/* * Free a diradd dependency structure. This routine must be called - * with splbio interrupts blocked. + * with splbio interrupts blocked. If wkhd is NULL we should not find + * any pending jaddrefs and only jsegdeps to be retired. */ static void -free_diradd(dap) +free_diradd(dap, wkhd) struct diradd *dap; + struct workhead *wkhd; { + struct worklist *wk; struct dirrem *dirrem; struct pagedep *pagedep; struct inodedep *inodedep; struct mkdir *mkdir, *nextmd; + struct jaddref *jaddref; mtx_assert(&lk, MA_OWNED); - WORKLIST_REMOVE(&dap->da_list); LIST_REMOVE(dap, da_pdlist); + if (dap->da_state & ONWORKLIST) + WORKLIST_REMOVE(&dap->da_list); if ((dap->da_state & DIRCHG) == 0) { pagedep = dap->da_pagedep; } else { dirrem = dap->da_previous; pagedep = dirrem->dm_pagedep; dirrem->dm_dirinum = pagedep->pd_ino; - add_to_worklist(&dirrem->dm_list); + dirrem->dm_state |= COMPLETE; + if (LIST_EMPTY(&dirrem->dm_jremrefhd)) + add_to_worklist(&dirrem->dm_list); } if (inodedep_lookup(pagedep->pd_list.wk_mp, dap->da_newinum, - 0, &inodedep) != 0) + 0, &inodedep) != 0) { + /* Abort the addref that reference this diradd. */ + LIST_FOREACH(jaddref, &inodedep->id_jaddrefhd, ja_inodeps) + if (jaddref->ja_diradd == dap) { + cancel_jaddref(jaddref, inodedep, wkhd); + break; + } + if (inodedep->id_mkdiradd == dap) + inodedep->id_mkdiradd = NULL; (void) free_inodedep(inodedep); + } if ((dap->da_state & (MKDIR_PARENT | MKDIR_BODY)) != 0) { for (mkdir = LIST_FIRST(&mkdirlisthd); mkdir; mkdir = nextmd) { nextmd = LIST_NEXT(mkdir, md_mkdirs); if (mkdir->md_diradd != dap) continue; - dap->da_state &= ~mkdir->md_state; - WORKLIST_REMOVE(&mkdir->md_list); + dap->da_state &= + ~(mkdir->md_state & (MKDIR_PARENT | MKDIR_BODY)); LIST_REMOVE(mkdir, md_mkdirs); + if (mkdir->md_state & ONWORKLIST) + WORKLIST_REMOVE(&mkdir->md_list); + if ((jaddref = mkdir->md_jaddref) != NULL) + cancel_jaddref(jaddref, NULL, wkhd); WORKITEM_FREE(mkdir, D_MKDIR); + if ((dap->da_state & (MKDIR_PARENT | MKDIR_BODY)) == 0) + break; } if ((dap->da_state & (MKDIR_PARENT | MKDIR_BODY)) != 0) panic("free_diradd: unfound ref"); } + if (wkhd) + jwork_move(D_DIRREM, __LINE__, wkhd, &dap->da_jwork); + /* + * Free any journal segments waiting for the directory write. + */ + while ((wk = LIST_FIRST(&dap->da_jwork)) != NULL) { + KASSERT(wk->wk_type == D_JSEGDEP, + ("free_diradd: Invalid type %s on da_jwork", + TYPENAME(wk->wk_type))); + WORKLIST_REMOVE(wk); + free_jsegdep(WK_JSEGDEP(wk)); + } WORKITEM_FREE(dap, D_DIRADD); } @@ -3254,11 +5784,14 @@ softdep_setup_remove(bp, dp, ip, isrmdir) int isrmdir; /* indicates if doing RMDIR */ { struct dirrem *dirrem, *prevdirrem; + int direct; /* - * Allocate a new dirrem if appropriate and ACQUIRE_LOCK. + * Allocate a new dirrem if appropriate and ACQUIRE_LOCK. We want + * newdirrem() to setup the full directory remove which requires + * isrmdir > 1. */ - dirrem = newdirrem(bp, dp, ip, isrmdir, &prevdirrem); + dirrem = newdirrem(bp, dp, ip, isrmdir?2:0, &prevdirrem); /* * If the COMPLETE flag is clear, then there were no active @@ -3280,12 +5813,64 @@ softdep_setup_remove(bp, dp, ip, isrmdir) LIST_INSERT_HEAD(&dirrem->dm_pagedep->pd_dirremhd, prevdirrem, dm_next); dirrem->dm_dirinum = dirrem->dm_pagedep->pd_ino; + direct = LIST_EMPTY(&dirrem->dm_jremrefhd); FREE_LOCK(&lk); - handle_workitem_remove(dirrem, NULL); + if (direct) + handle_workitem_remove(dirrem, NULL); } } /* + * Check for an entry matching 'offset' on both the pd_dirraddhd list and the + * pd_pendinghd list of a pagedep. + */ +static struct diradd * +diradd_lookup(pagedep, offset) + struct pagedep *pagedep; + int offset; +{ + struct diradd *dap; + + LIST_FOREACH(dap, &pagedep->pd_diraddhd[DIRADDHASH(offset)], da_pdlist) + if (dap->da_offset == offset) + return (dap); + LIST_FOREACH(dap, &pagedep->pd_pendinghd, da_pdlist) + if (dap->da_offset == offset) + return (dap); + return (NULL); +} + +/* + * Search for a .. diradd dependency in a directory that is being removed. + * If the directory was renamed to a new parent we have a diradd rather + * than a mkdir for the .. entry. We need to cancel it now before + * it is found in truncate(). + */ +static void +cancel_diradd_dotdot(ip, dirrem) + struct inode *ip; + struct dirrem *dirrem; +{ + struct pagedep *pagedep; + struct diradd *dap; + struct worklist *wk; + + if (pagedep_lookup(UFSTOVFS(ip->i_ump), ip->i_number, 0, 0, + &pagedep) == 0) + return; + dap = diradd_lookup(pagedep, DOTDOT_OFFSET); + if (dap == NULL) + return; + free_diradd(dap, &dirrem->dm_jwork); + /* + * Mark any journal work as belonging to the parent so it is freed + * with the .. reference. + */ + LIST_FOREACH(wk, &dirrem->dm_jwork, wk_list) + wk->wk_state |= MKDIR_PARENT; +} + +/* * Allocate a new dirrem if appropriate and return it along with * its associated pagedep. Called without a lock, returns with lock. */ @@ -3303,6 +5888,9 @@ newdirrem(bp, dp, ip, isrmdir, prevdirremp) struct diradd *dap; struct dirrem *dirrem; struct pagedep *pagedep; + struct jremref *jremref; + struct jremref *dotremref; + struct jremref *dotdotremref; /* * Whiteouts have no deletion dependencies. @@ -3322,33 +5910,67 @@ newdirrem(bp, dp, ip, isrmdir, prevdirremp) dirrem = malloc(sizeof(struct dirrem), M_DIRREM, M_SOFTDEP_FLAGS|M_ZERO); workitem_alloc(&dirrem->dm_list, D_DIRREM, ITOV(dp)->v_mount); + LIST_INIT(&dirrem->dm_jremrefhd); + LIST_INIT(&dirrem->dm_jwork); dirrem->dm_state = isrmdir ? RMDIR : 0; dirrem->dm_oldinum = ip->i_number; *prevdirremp = NULL; - + /* + * Allocate remove reference structures to track journal write + * dependencies. We will always have one for the link and + * when doing directories we will always have one more for dot. + * When renaming a directory we skip the dotdot link change so + * this is not needed. + */ + dotremref = dotdotremref = NULL; + jremref = newjremref(dirrem, dp, ip, dp->i_offset); + if (isrmdir) + dotremref = newjremref(dirrem, ip, ip, DOT_OFFSET); + if (isrmdir > 1) { + dotdotremref = newjremref(dirrem, ip, dp, DOTDOT_OFFSET); + dotdotremref->jr_state |= MKDIR_PARENT; + } ACQUIRE_LOCK(&lk); lbn = lblkno(dp->i_fs, dp->i_offset); offset = blkoff(dp->i_fs, dp->i_offset); - if (pagedep_lookup(dp, lbn, DEPALLOC, &pagedep) == 0) + if (pagedep_lookup(UFSTOVFS(dp->i_ump), dp->i_number, lbn, DEPALLOC, + &pagedep) == 0) WORKLIST_INSERT(&bp->b_dep, &pagedep->pd_list); dirrem->dm_pagedep = pagedep; /* + * If we're removing a .. link search for the dependency now and + * cancel it. Any pending journal work will be added to the dirrem + * to be completed when the workitem remove completes. + */ + if (isrmdir > 1) + cancel_diradd_dotdot(ip, dirrem); + /* * Check for a diradd dependency for the same directory entry. * If present, then both dependencies become obsolete and can - * be de-allocated. Check for an entry on both the pd_dirraddhd - * list and the pd_pendinghd list. + * be de-allocated. */ - - LIST_FOREACH(dap, &pagedep->pd_diraddhd[DIRADDHASH(offset)], da_pdlist) - if (dap->da_offset == offset) - break; + dap = diradd_lookup(pagedep, offset); if (dap == NULL) { - - LIST_FOREACH(dap, &pagedep->pd_pendinghd, da_pdlist) - if (dap->da_offset == offset) - break; - if (dap == NULL) - return (dirrem); + /* + * Link the jremref structures into the dirrem so they are + * written prior to the pagedep. + */ + if (jremref) { + LIST_INSERT_HEAD(&dirrem->dm_jremrefhd, jremref, + jr_deps); + add_to_journal(&jremref->jr_list); + if (dotremref) { + LIST_INSERT_HEAD(&dirrem->dm_jremrefhd, + dotremref, jr_deps); + add_to_journal(&dotremref->jr_list); + } + if (dotdotremref) { + LIST_INSERT_HEAD(&dirrem->dm_jremrefhd, + dotdotremref, jr_deps); + add_to_journal(&dotdotremref->jr_list); + } + } + return (dirrem); } /* * Must be ATTACHED at this point. @@ -3359,6 +5981,20 @@ newdirrem(bp, dp, ip, isrmdir, prevdirremp) panic("newdirrem: inum %d should be %d", ip->i_number, dap->da_newinum); /* + * If we've found a diradd in memory it still has valid journal + * entries to complete. Rather than writing new journal entries + * we complete the segdeps only after the removal is complete. The + * recovery operation will simply find an incomplete add. If the + * addref journal is not written the jaddrefs will stay linked into + * the inodedep and bmsafemap preventing the writes of the new + * data until they are ultimately freed. + */ + WORKITEM_FREE(jremref, D_JREMREF); + if (dotremref) + WORKITEM_FREE(dotremref, D_JREMREF); + if (dotdotremref) + WORKITEM_FREE(dotdotremref, D_JREMREF); + /* * If we are deleting a changed name that never made it to disk, * then return the dirrem describing the previous inode (which * represents the inode currently referenced from this entry on disk). @@ -3373,7 +6009,18 @@ newdirrem(bp, dp, ip, isrmdir, prevdirremp) * Mark it COMPLETE so we can delete its inode immediately. */ dirrem->dm_state |= COMPLETE; - free_diradd(dap); + free_diradd(dap, &dirrem->dm_jwork); +#ifdef DEBUG + /* XXX Temporary. */ + if (isrmdir == 0) { + struct worklist *wk; + + LIST_FOREACH(wk, &dirrem->dm_jwork, wk_list) + if (wk->wk_state & (MKDIR_BODY | MKDIR_PARENT)) + panic("bad wk %p (0x%X)\n", wk, wk->wk_state); + } +#endif + return (dirrem); } @@ -3407,6 +6054,7 @@ softdep_setup_directory_change(bp, dp, ip, newinum struct dirrem *dirrem, *prevdirrem; struct pagedep *pagedep; struct inodedep *inodedep; + struct jaddref *jaddref; struct mount *mp; offset = blkoff(dp->i_fs, dp->i_offset); @@ -3422,6 +6070,7 @@ softdep_setup_directory_change(bp, dp, ip, newinum dap->da_state = DIRCHG | ATTACHED | DEPCOMPLETE; dap->da_offset = offset; dap->da_newinum = newinum; + LIST_INIT(&dap->da_jwork); } /* @@ -3454,7 +6103,8 @@ softdep_setup_directory_change(bp, dp, ip, newinum dm_next); } else { dirrem->dm_dirinum = pagedep->pd_ino; - add_to_worklist(&dirrem->dm_list); + if (LIST_EMPTY(&dirrem->dm_jremrefhd)) + add_to_worklist(&dirrem->dm_list); } FREE_LOCK(&lk); return; @@ -3483,23 +6133,30 @@ softdep_setup_directory_change(bp, dp, ip, newinum dap->da_pagedep = pagedep; } dirrem->dm_dirinum = pagedep->pd_ino; - add_to_worklist(&dirrem->dm_list); + if (LIST_EMPTY(&dirrem->dm_jremrefhd)) + add_to_worklist(&dirrem->dm_list); } /* - * Link into its inodedep. Put it on the id_bufwait list if the inode - * is not yet written. If it is written, do the post-inode write - * processing to put it on the id_pendinghd list. + * Lookup the jaddref for this journal entry. We must finish + * initializing it and make the diradd write dependent on it. */ - if (inodedep_lookup(mp, newinum, DEPALLOC, &inodedep) == 0 || - (inodedep->id_state & ALLCOMPLETE) == ALLCOMPLETE) { - dap->da_state |= COMPLETE; - LIST_INSERT_HEAD(&pagedep->pd_pendinghd, dap, da_pdlist); - WORKLIST_INSERT(&inodedep->id_pendinghd, &dap->da_list); - } else { - LIST_INSERT_HEAD(&pagedep->pd_diraddhd[DIRADDHASH(offset)], - dap, da_pdlist); - WORKLIST_INSERT(&inodedep->id_bufwait, &dap->da_list); - } + if (inodedep_lookup(mp, newinum, 0, &inodedep) == 0) + panic("softdep_setup_directory_change: Lost inodedep."); + jaddref = LIST_FIRST(&inodedep->id_jaddrefhd); + KASSERT(jaddref != NULL && jaddref->ja_parent == dp->i_number, + ("softdep_setup_directory_change: bad jaddref %p", jaddref)); + jaddref->ja_diroff = dp->i_offset; + jaddref->ja_diradd = dap; + LIST_INSERT_HEAD(&pagedep->pd_diraddhd[DIRADDHASH(offset)], dap, + da_pdlist); + add_to_journal(&jaddref->ja_list); + /* + * If we're making a new name for a directory that has not been + * committed when need to move the dot and dotdot references to + * this new name. + */ + if (inodedep->id_mkdiradd) + merge_diradd(inodedep, dap); FREE_LOCK(&lk); } @@ -3584,6 +6241,8 @@ handle_workitem_remove(dirrem, xp) { struct thread *td = curthread; struct inodedep *inodedep; + struct workhead dotdotwk; + struct worklist *wk; struct vnode *vp; struct inode *ip; ino_t oldinum; @@ -3600,7 +6259,30 @@ handle_workitem_remove(dirrem, xp) if ((inodedep_lookup(dirrem->dm_list.wk_mp, dirrem->dm_oldinum, 0, &inodedep)) == 0) panic("handle_workitem_remove: lost inodedep"); + KASSERT(LIST_EMPTY(&dirrem->dm_jremrefhd), + ("handle_workitem_remove: Journal entries not written.")); /* + * Move all dependencies waiting on the remove to complete + * from the dirrem to the inode inowait list to be completed + * after the inode has been updated and written to disk. Any + * marked MKDIR_PARENT are saved to be completed when the .. ref + * is removed. + * + * XXX If we're going to clear a bitmap some of these dependencies + * have to wait for the cg to be written. + */ + LIST_INIT(&dotdotwk); + while ((wk = LIST_FIRST(&dirrem->dm_jwork)) != NULL) { + WORKLIST_REMOVE(wk); + if (wk->wk_state & MKDIR_PARENT) { + wk->wk_state &= ~MKDIR_PARENT; + WORKLIST_INSERT(&dotdotwk, wk); + continue; + } + WORKLIST_INSERT(&inodedep->id_inowait, wk); + } + LIST_SWAP(&dirrem->dm_jwork, &dotdotwk, worklist, wk_list); + /* * Normal file deletion. */ if ((dirrem->dm_state & RMDIR) == 0) { @@ -3611,6 +6293,9 @@ handle_workitem_remove(dirrem, xp) panic("handle_workitem_remove: bad file delta"); inodedep->id_nlinkdelta = ip->i_nlink - ip->i_effnlink; num_dirrem -= 1; + KASSERT(LIST_EMPTY(&dirrem->dm_jwork), + ("handle_workitem_remove: worklist not empty. %s", + TYPENAME(LIST_FIRST(&dirrem->dm_jwork)->wk_type))); WORKITEM_FREE(dirrem, D_DIRREM); FREE_LOCK(&lk); vput(vp); @@ -3639,6 +6324,8 @@ handle_workitem_remove(dirrem, xp) * directory should not change. Thus we skip the followup dirrem. */ if (dirrem->dm_state & DIRCHG) { + KASSERT(LIST_EMPTY(&dirrem->dm_jwork), + ("handle_workitem_remove: DIRCHG and worklist not empty.")); num_dirrem -= 1; WORKITEM_FREE(dirrem, D_DIRREM); FREE_LOCK(&lk); @@ -3689,6 +6376,7 @@ static void handle_workitem_freefile(freefile) struct freefile *freefile; { + struct workhead wkhd; struct fs *fs; struct inodedep *idp; struct ufsmount *ump; @@ -3701,13 +6389,15 @@ handle_workitem_freefile(freefile) error = inodedep_lookup(UFSTOVFS(ump), freefile->fx_oldinum, 0, &idp); FREE_LOCK(&lk); if (error) - panic("handle_workitem_freefile: inodedep survived"); + panic("handle_workitem_freefile: inodedep %p survived", idp); #endif UFS_LOCK(ump); fs->fs_pendinginodes -= 1; UFS_UNLOCK(ump); + LIST_INIT(&wkhd); + LIST_SWAP(&freefile->fx_jwork, &wkhd, worklist, wk_list); if ((error = ffs_freefile(ump, fs, freefile->fx_devvp, - freefile->fx_oldinum, freefile->fx_mode)) != 0) + freefile->fx_oldinum, freefile->fx_mode, &wkhd)) != 0) softdep_error("handle_workitem_freefile", error); ACQUIRE_LOCK(&lk); WORKITEM_FREE(freefile, D_FREEFILE); @@ -3757,7 +6447,6 @@ softdep_disk_io_initiation(bp) { struct worklist *wk; struct worklist marker; - struct indirdep *indirdep; struct inodedep *inodedep; /* @@ -3767,6 +6456,10 @@ softdep_disk_io_initiation(bp) if (bp->b_iocmd != BIO_WRITE) panic("softdep_disk_io_initiation: not write"); + if (bp->b_vflags & BV_BKGRDINPROG) + panic("softdep_disk_io_initiation: Writing buffer with " + "background write in progress: %p", bp); + marker.wk_type = D_LAST + 1; /* Not a normal workitem */ PHOLD(curproc); /* Don't swap out kernel stack */ @@ -3792,46 +6485,23 @@ softdep_disk_io_initiation(bp) continue; case D_INDIRDEP: - indirdep = WK_INDIRDEP(wk); - if (indirdep->ir_state & GOINGAWAY) - panic("disk_io_initiation: indirdep gone"); - /* - * If there are no remaining dependencies, this - * will be writing the real pointers, so the - * dependency can be freed. - */ - if (LIST_EMPTY(&indirdep->ir_deplisthd)) { - struct buf *bp; + initiate_write_indirdep(WK_INDIRDEP(wk), bp); + continue; - bp = indirdep->ir_savebp; - bp->b_flags |= B_INVAL | B_NOCACHE; - /* inline expand WORKLIST_REMOVE(wk); */ - wk->wk_state &= ~ONWORKLIST; - LIST_REMOVE(wk, wk_list); - WORKITEM_FREE(indirdep, D_INDIRDEP); - FREE_LOCK(&lk); - brelse(bp); - ACQUIRE_LOCK(&lk); - continue; - } - /* - * Replace up-to-date version with safe version. - */ - FREE_LOCK(&lk); - indirdep->ir_saveddata = malloc(bp->b_bcount, - M_INDIRDEP, M_SOFTDEP_FLAGS); - ACQUIRE_LOCK(&lk); - indirdep->ir_state &= ~ATTACHED; - indirdep->ir_state |= UNDONE; - bcopy(bp->b_data, indirdep->ir_saveddata, bp->b_bcount); - bcopy(indirdep->ir_savebp->b_data, bp->b_data, - bp->b_bcount); + case D_BMSAFEMAP: + initiate_write_bmsafemap(WK_BMSAFEMAP(wk), bp); continue; + case D_JSEG: + WK_JSEG(wk)->js_buf = NULL; + continue; + case D_MKDIR: - case D_BMSAFEMAP: case D_ALLOCDIRECT: case D_ALLOCINDIR: + case D_FREEWORK: + case D_FREEDEP: + case D_JSEGDEP: continue; default: @@ -3855,6 +6525,8 @@ initiate_write_filepage(pagedep, bp) struct pagedep *pagedep; struct buf *bp; { + struct jremref *jremref; + struct dirrem *dirrem; struct diradd *dap; struct direct *ep; int i; @@ -3869,6 +6541,16 @@ initiate_write_filepage(pagedep, bp) return; } pagedep->pd_state |= IOSTARTED; + /* + * Wait for all journal remove dependencies to hit the disk. + * We can not allow any potentially conflicting directory adds + * to be visible before removes and rollback is too difficult. + * lk may be dropped and re-acquired, however we hold the buf + * locked so the dependency can not go away. + */ + LIST_FOREACH(dirrem, &pagedep->pd_dirremhd, dm_next) + while ((jremref = LIST_FIRST(&dirrem->dm_jremrefhd)) != NULL) + jwait(&jremref->jr_list); for (i = 0; i < DAHASHSZ; i++) { LIST_FOREACH(dap, &pagedep->pd_diraddhd[i], da_pdlist) { ep = (struct direct *) @@ -3905,6 +6587,7 @@ initiate_write_inodeblock_ufs1(inodedep, bp) struct allocdirect *adp, *lastadp; struct ufs1_dinode *dp; struct ufs1_dinode *sip; + struct jaddref *jaddref; struct fs *fs; ufs_lbn_t i; #ifdef INVARIANTS @@ -3940,32 +6623,41 @@ initiate_write_inodeblock_ufs1(inodedep, bp) */ inodedep->id_savedsize = dp->di_size; inodedep->id_savedextsize = 0; - if (TAILQ_EMPTY(&inodedep->id_inoupdt)) + if (TAILQ_EMPTY(&inodedep->id_inoupdt) && + LIST_EMPTY(&inodedep->id_jaddrefhd)) return; /* + * Revert the link count for every jaddref present. + */ + LIST_FOREACH(jaddref, &inodedep->id_jaddrefhd, ja_inodeps) { + dp->di_nlink--; + jaddref->ja_state &= ~ATTACHED; + jaddref->ja_state |= UNDONE; + } + /* * Set the dependencies to busy. */ for (deplist = 0, adp = TAILQ_FIRST(&inodedep->id_inoupdt); adp; adp = TAILQ_NEXT(adp, ad_next)) { #ifdef INVARIANTS - if (deplist != 0 && prevlbn >= adp->ad_lbn) + if (deplist != 0 && prevlbn >= adp->ad_offset) panic("softdep_write_inodeblock: lbn order"); - prevlbn = adp->ad_lbn; - if (adp->ad_lbn < NDADDR && - dp->di_db[adp->ad_lbn] != adp->ad_newblkno) + prevlbn = adp->ad_offset; + if (adp->ad_offset < NDADDR && + dp->di_db[adp->ad_offset] != adp->ad_newblkno) panic("%s: direct pointer #%jd mismatch %d != %jd", "softdep_write_inodeblock", - (intmax_t)adp->ad_lbn, - dp->di_db[adp->ad_lbn], + (intmax_t)adp->ad_offset, + dp->di_db[adp->ad_offset], (intmax_t)adp->ad_newblkno); - if (adp->ad_lbn >= NDADDR && - dp->di_ib[adp->ad_lbn - NDADDR] != adp->ad_newblkno) + if (adp->ad_offset >= NDADDR && + dp->di_ib[adp->ad_offset - NDADDR] != adp->ad_newblkno) panic("%s: indirect pointer #%jd mismatch %d != %jd", "softdep_write_inodeblock", - (intmax_t)adp->ad_lbn - NDADDR, - dp->di_ib[adp->ad_lbn - NDADDR], + (intmax_t)adp->ad_offset - NDADDR, + dp->di_ib[adp->ad_offset - NDADDR], (intmax_t)adp->ad_newblkno); - deplist |= 1 << adp->ad_lbn; + deplist |= 1 << adp->ad_offset; if ((adp->ad_state & ATTACHED) == 0) panic("softdep_write_inodeblock: Unknown state 0x%x", adp->ad_state); @@ -3981,14 +6673,14 @@ initiate_write_inodeblock_ufs1(inodedep, bp) */ for (lastadp = NULL, adp = TAILQ_FIRST(&inodedep->id_inoupdt); adp; lastadp = adp, adp = TAILQ_NEXT(adp, ad_next)) { - if (adp->ad_lbn >= NDADDR) + if (adp->ad_offset >= NDADDR) break; - dp->di_db[adp->ad_lbn] = adp->ad_oldblkno; + dp->di_db[adp->ad_offset] = adp->ad_oldblkno; /* keep going until hitting a rollback to a frag */ if (adp->ad_oldsize == 0 || adp->ad_oldsize == fs->fs_bsize) continue; - dp->di_size = fs->fs_bsize * adp->ad_lbn + adp->ad_oldsize; - for (i = adp->ad_lbn + 1; i < NDADDR; i++) { + dp->di_size = fs->fs_bsize * adp->ad_offset + adp->ad_oldsize; + for (i = adp->ad_offset + 1; i < NDADDR; i++) { #ifdef INVARIANTS if (dp->di_db[i] != 0 && (deplist & (1 << i)) == 0) panic("softdep_write_inodeblock: lost dep1"); @@ -4012,8 +6704,8 @@ initiate_write_inodeblock_ufs1(inodedep, bp) * we already checked for fragments in the loop above. */ if (lastadp != NULL && - dp->di_size <= (lastadp->ad_lbn + 1) * fs->fs_bsize) { - for (i = lastadp->ad_lbn; i >= 0; i--) + dp->di_size <= (lastadp->ad_offset + 1) * fs->fs_bsize) { + for (i = lastadp->ad_offset; i >= 0; i--) if (dp->di_db[i] != 0) break; dp->di_size = (i + 1) * fs->fs_bsize; @@ -4030,7 +6722,7 @@ initiate_write_inodeblock_ufs1(inodedep, bp) * postpone fsck, we are stuck with this argument. */ for (; adp; adp = TAILQ_NEXT(adp, ad_next)) - dp->di_ib[adp->ad_lbn - NDADDR] = 0; + dp->di_ib[adp->ad_offset - NDADDR] = 0; } /* @@ -4051,6 +6743,7 @@ initiate_write_inodeblock_ufs2(inodedep, bp) struct allocdirect *adp, *lastadp; struct ufs2_dinode *dp; struct ufs2_dinode *sip; + struct jaddref *jaddref; struct fs *fs; ufs_lbn_t i; #ifdef INVARIANTS @@ -4087,24 +6780,33 @@ initiate_write_inodeblock_ufs2(inodedep, bp) inodedep->id_savedsize = dp->di_size; inodedep->id_savedextsize = dp->di_extsize; if (TAILQ_EMPTY(&inodedep->id_inoupdt) && - TAILQ_EMPTY(&inodedep->id_extupdt)) + TAILQ_EMPTY(&inodedep->id_extupdt) && + LIST_EMPTY(&inodedep->id_jaddrefhd)) return; /* + * Revert the link count for every jaddref present. + */ + LIST_FOREACH(jaddref, &inodedep->id_jaddrefhd, ja_inodeps) { + dp->di_nlink--; + jaddref->ja_state &= ~ATTACHED; + jaddref->ja_state |= UNDONE; + } + /* * Set the ext data dependencies to busy. */ for (deplist = 0, adp = TAILQ_FIRST(&inodedep->id_extupdt); adp; adp = TAILQ_NEXT(adp, ad_next)) { #ifdef INVARIANTS - if (deplist != 0 && prevlbn >= adp->ad_lbn) + if (deplist != 0 && prevlbn >= adp->ad_offset) panic("softdep_write_inodeblock: lbn order"); - prevlbn = adp->ad_lbn; - if (dp->di_extb[adp->ad_lbn] != adp->ad_newblkno) + prevlbn = adp->ad_offset; + if (dp->di_extb[adp->ad_offset] != adp->ad_newblkno) panic("%s: direct pointer #%jd mismatch %jd != %jd", "softdep_write_inodeblock", - (intmax_t)adp->ad_lbn, - (intmax_t)dp->di_extb[adp->ad_lbn], + (intmax_t)adp->ad_offset, + (intmax_t)dp->di_extb[adp->ad_offset], (intmax_t)adp->ad_newblkno); - deplist |= 1 << adp->ad_lbn; + deplist |= 1 << adp->ad_offset; if ((adp->ad_state & ATTACHED) == 0) panic("softdep_write_inodeblock: Unknown state 0x%x", adp->ad_state); @@ -4120,12 +6822,12 @@ initiate_write_inodeblock_ufs2(inodedep, bp) */ for (lastadp = NULL, adp = TAILQ_FIRST(&inodedep->id_extupdt); adp; lastadp = adp, adp = TAILQ_NEXT(adp, ad_next)) { - dp->di_extb[adp->ad_lbn] = adp->ad_oldblkno; + dp->di_extb[adp->ad_offset] = adp->ad_oldblkno; /* keep going until hitting a rollback to a frag */ if (adp->ad_oldsize == 0 || adp->ad_oldsize == fs->fs_bsize) continue; - dp->di_extsize = fs->fs_bsize * adp->ad_lbn + adp->ad_oldsize; - for (i = adp->ad_lbn + 1; i < NXADDR; i++) { + dp->di_extsize = fs->fs_bsize * adp->ad_offset + adp->ad_oldsize; + for (i = adp->ad_offset + 1; i < NXADDR; i++) { #ifdef INVARIANTS if (dp->di_extb[i] != 0 && (deplist & (1 << i)) == 0) panic("softdep_write_inodeblock: lost dep1"); @@ -4142,8 +6844,8 @@ initiate_write_inodeblock_ufs2(inodedep, bp) * we already checked for fragments in the loop above. */ if (lastadp != NULL && - dp->di_extsize <= (lastadp->ad_lbn + 1) * fs->fs_bsize) { - for (i = lastadp->ad_lbn; i >= 0; i--) + dp->di_extsize <= (lastadp->ad_offset + 1) * fs->fs_bsize) { + for (i = lastadp->ad_offset; i >= 0; i--) if (dp->di_extb[i] != 0) break; dp->di_extsize = (i + 1) * fs->fs_bsize; @@ -4154,24 +6856,24 @@ initiate_write_inodeblock_ufs2(inodedep, bp) for (deplist = 0, adp = TAILQ_FIRST(&inodedep->id_inoupdt); adp; adp = TAILQ_NEXT(adp, ad_next)) { #ifdef INVARIANTS - if (deplist != 0 && prevlbn >= adp->ad_lbn) + if (deplist != 0 && prevlbn >= adp->ad_offset) panic("softdep_write_inodeblock: lbn order"); - prevlbn = adp->ad_lbn; - if (adp->ad_lbn < NDADDR && - dp->di_db[adp->ad_lbn] != adp->ad_newblkno) + prevlbn = adp->ad_offset; + if (adp->ad_offset < NDADDR && + dp->di_db[adp->ad_offset] != adp->ad_newblkno) panic("%s: direct pointer #%jd mismatch %jd != %jd", "softdep_write_inodeblock", - (intmax_t)adp->ad_lbn, - (intmax_t)dp->di_db[adp->ad_lbn], + (intmax_t)adp->ad_offset, + (intmax_t)dp->di_db[adp->ad_offset], (intmax_t)adp->ad_newblkno); - if (adp->ad_lbn >= NDADDR && - dp->di_ib[adp->ad_lbn - NDADDR] != adp->ad_newblkno) + if (adp->ad_offset >= NDADDR && + dp->di_ib[adp->ad_offset - NDADDR] != adp->ad_newblkno) panic("%s indirect pointer #%jd mismatch %jd != %jd", "softdep_write_inodeblock:", - (intmax_t)adp->ad_lbn - NDADDR, - (intmax_t)dp->di_ib[adp->ad_lbn - NDADDR], + (intmax_t)adp->ad_offset - NDADDR, + (intmax_t)dp->di_ib[adp->ad_offset - NDADDR], (intmax_t)adp->ad_newblkno); - deplist |= 1 << adp->ad_lbn; + deplist |= 1 << adp->ad_offset; if ((adp->ad_state & ATTACHED) == 0) panic("softdep_write_inodeblock: Unknown state 0x%x", adp->ad_state); @@ -4187,14 +6889,14 @@ initiate_write_inodeblock_ufs2(inodedep, bp) */ for (lastadp = NULL, adp = TAILQ_FIRST(&inodedep->id_inoupdt); adp; lastadp = adp, adp = TAILQ_NEXT(adp, ad_next)) { - if (adp->ad_lbn >= NDADDR) + if (adp->ad_offset >= NDADDR) break; - dp->di_db[adp->ad_lbn] = adp->ad_oldblkno; + dp->di_db[adp->ad_offset] = adp->ad_oldblkno; /* keep going until hitting a rollback to a frag */ if (adp->ad_oldsize == 0 || adp->ad_oldsize == fs->fs_bsize) continue; - dp->di_size = fs->fs_bsize * adp->ad_lbn + adp->ad_oldsize; - for (i = adp->ad_lbn + 1; i < NDADDR; i++) { + dp->di_size = fs->fs_bsize * adp->ad_offset + adp->ad_oldsize; + for (i = adp->ad_offset + 1; i < NDADDR; i++) { #ifdef INVARIANTS if (dp->di_db[i] != 0 && (deplist & (1 << i)) == 0) panic("softdep_write_inodeblock: lost dep2"); @@ -4218,8 +6920,8 @@ initiate_write_inodeblock_ufs2(inodedep, bp) * we already checked for fragments in the loop above. */ if (lastadp != NULL && - dp->di_size <= (lastadp->ad_lbn + 1) * fs->fs_bsize) { - for (i = lastadp->ad_lbn; i >= 0; i--) + dp->di_size <= (lastadp->ad_offset + 1) * fs->fs_bsize) { + for (i = lastadp->ad_offset; i >= 0; i--) if (dp->di_db[i] != 0) break; dp->di_size = (i + 1) * fs->fs_bsize; @@ -4236,16 +6938,324 @@ initiate_write_inodeblock_ufs2(inodedep, bp) * postpone fsck, we are stuck with this argument. */ for (; adp; adp = TAILQ_NEXT(adp, ad_next)) - dp->di_ib[adp->ad_lbn - NDADDR] = 0; + dp->di_ib[adp->ad_offset - NDADDR] = 0; } +static void +free_indirdep(indirdep) + struct indirdep *indirdep; +{ + struct indirdep *child; + + while ((child = LIST_FIRST(&indirdep->ir_children)) != NULL) { + child->ir_parent = NULL; + LIST_REMOVE(child, ir_sibling); + } + KASSERT(LIST_EMPTY(&indirdep->ir_jwork), + ("free_indirdep: Journal work not empty.")); + WORKITEM_FREE(indirdep, D_INDIRDEP); +} + +static void +initiate_write_indirdep(indirdep, bp) + struct indirdep *indirdep; + struct buf *bp; +{ + struct inodedep *inodedep; + + if (indirdep->ir_state & GOINGAWAY) + panic("disk_io_initiation: indirdep gone"); + /* + * If there are no remaining dependencies, this + * will be writing the real pointers, so the + * dependency can be freed. + */ + if (LIST_EMPTY(&indirdep->ir_deplisthd)) { + struct buf *sbp; + + inodedep = indirdep->ir_inodedep; + sbp = indirdep->ir_savebp; + sbp->b_flags |= B_INVAL | B_NOCACHE; + /* + * Move pending journal work down the chain. This ensures + * that the path to allocated blocks is fully viable before + * we free the journal space that describes the addition. + * + * This is more strict than is required, we really only need + * to know that the chain of block pointers rooted in the + * inode and leading to the allocindir in question has + * been written. However, calculating this is more costly + * and so a more conservative approach is chosen. If + * there are no parent indirdeps and the inode is clean + * we simply free all jsegdeps once the buf is written. + */ + if (indirdep->ir_parent != NULL) { + LIST_REMOVE(indirdep, ir_sibling); + jwork_move(D_INDIRDEP, __LINE__, + &indirdep->ir_parent->ir_jwork, + &indirdep->ir_jwork); + } else if (inodedep && (inodedep->id_state & ALLCOMPLETE) == 0) + jwork_move(D_INODEDEP, __LINE__, &inodedep->id_bufwait, + &indirdep->ir_jwork); + else + jwork_move(D_INDIRDEP, __LINE__, &bp->b_dep, + &indirdep->ir_jwork); + if (inodedep) { + LIST_REMOVE(indirdep, ir_next); + free_inodedep(inodedep); + } + WORKLIST_REMOVE(&indirdep->ir_list); + free_indirdep(indirdep); + FREE_LOCK(&lk); + brelse(sbp); + ACQUIRE_LOCK(&lk); + return; + } + /* + * Replace up-to-date version with safe version. + */ + FREE_LOCK(&lk); + indirdep->ir_saveddata = malloc(bp->b_bcount, M_INDIRDEP, + M_SOFTDEP_FLAGS); + ACQUIRE_LOCK(&lk); + indirdep->ir_state &= ~ATTACHED; + indirdep->ir_state |= UNDONE; + bcopy(bp->b_data, indirdep->ir_saveddata, bp->b_bcount); + bcopy(indirdep->ir_savebp->b_data, bp->b_data, + bp->b_bcount); +} + /* + * Called when an inode has been cleared in a cg bitmap. This finally + * eliminates any canceled jaddrefs + */ +void +softdep_setup_inofree(mp, bp, ino, wkhd) + struct mount *mp; + struct buf *bp; + ino_t ino; + struct workhead *wkhd; +{ + struct worklist *wk, *wkn; + struct bmsafemap *bmsafemap; + struct inodedep *inodedep; + uint8_t *inosused; + struct cg *cgp; + struct fs *fs; + + ACQUIRE_LOCK(&lk); + fs = VFSTOUFS(mp)->um_fs; + bmsafemap = bmsafemap_lookup(mp, bp, ino_to_cg(fs, ino)); + cgp = (struct cg *)bp->b_data; + inosused = cg_inosused(cgp); + if (isset(inosused, ino % fs->fs_ipg)) + panic("softdep_setup_inofree: inode %d not freed.", ino); + if (inodedep_lookup(mp, ino, 0, &inodedep)) + panic("softdep_setup_inofree: ino %d has existing inodedep %p", + ino, inodedep); + if (wkhd) { /* XXX Temporary. */ + LIST_FOREACH_SAFE(wk, wkhd, wk_list, wkn) { + if (wk->wk_type != D_JADDREF) + continue; + WORKLIST_REMOVE(wk); + /* + * We can free immediately even if the jaddref isn't attached + * in a background write as now the bitmaps are reconciled. + */ + wk->wk_state |= COMPLETE | ATTACHED; + free_jaddref(WK_JADDREF(wk)); + } + } + FREE_LOCK(&lk); +} + + +/* + * Called via ffs_blkfree() after a set of frags has been cleared from a cg + * map. Any dependencies waiting for the write to clear are added to the + * buf's list and any jnewblks that are being canceled are discarded + * immediately. + */ +void +softdep_setup_blkfree(mp, bp, blkno, frags, wkhd) + struct mount *mp; + struct buf *bp; + ufs2_daddr_t blkno; + int frags; + struct workhead *wkhd; +{ + struct bmsafemap *bmsafemap; + struct jnewblk *jnewblk; + struct worklist *wk, *wkn; + uint8_t *blksfree; + struct cg *cgp; + struct fs *fs; + ufs2_daddr_t jstart; + ufs2_daddr_t jend; + ufs2_daddr_t end; + long bno; + int i; + + ACQUIRE_LOCK(&lk); + fs = VFSTOUFS(mp)->um_fs; + bmsafemap = bmsafemap_lookup(mp, bp, dtog(fs, blkno)); + + /* + * Detach any jnewblks which have been canceled. They must linger + * until the bitmap is cleared again by ffs_blkfree() to prevent + * an unjournaled allocation from hitting the disk. + */ + if (wkhd) { /* XXX Should be temporary. */ + LIST_FOREACH_SAFE(wk, wkhd, wk_list, wkn) { + if (wk->wk_type != D_JNEWBLK) + continue; + jnewblk = WK_JNEWBLK(wk); + KASSERT(jnewblk->jn_state & GOINGAWAY, + ("softdep_setup_blkfree: Freed jnewblk not going away.")); + WORKLIST_REMOVE(wk); + /* + * Assert that this block is free in the bitmap before we + * discard the jnewblk. + */ + cgp = (struct cg *)bp->b_data; + blksfree = cg_blksfree(cgp); + bno = dtogd(fs, jnewblk->jn_blkno); + for (i = jnewblk->jn_oldfrags; i < jnewblk->jn_frags; i++) + if (isclr(blksfree, bno + i)) + panic("softdep_setup_blkfree: %jd - %jd(%jd) not free", + blkno, jnewblk->jn_blkno, jnewblk->jn_lbn); + /* + * Even if it's not attached we can free immediately as the + * new bitmap is correct. + */ + wk->wk_state |= COMPLETE | ATTACHED; + free_jnewblk(jnewblk); + } + /* + * The buf must be locked by the caller otherwise these could be + * added while it's being written and the write would complete + * them before they made it to disk. + */ + jwork_move(D_BMSAFEMAP, __LINE__, &bp->b_dep, wkhd); + } + /* + * Assert that we are not freeing a block which has an outstanding + * allocation dependency. + */ + fs = VFSTOUFS(bmsafemap->sm_list.wk_mp)->um_fs; + end = blkno + frags; + LIST_FOREACH(jnewblk, &bmsafemap->sm_jnewblkhd, jn_deps) { + jstart = jnewblk->jn_blkno + jnewblk->jn_oldfrags; + jend = jnewblk->jn_blkno + jnewblk->jn_frags; + if ((blkno >= jstart && blkno < jend) || + (end > jstart && end <= jend)) { + printf("state 0x%X %jd - %d %d\n", + jnewblk->jn_state, jnewblk->jn_blkno, + jnewblk->jn_oldfrags, jnewblk->jn_frags); + panic("softdep_setup_blkfree: " + "%jd-%jd(%d) overlaps with %jd-%jd", + blkno, end, frags, jstart, jend); + } + } + FREE_LOCK(&lk); +} + +static void +initiate_write_bmsafemap(bmsafemap, bp) + struct bmsafemap *bmsafemap; + struct buf *bp; /* The cg block. */ +{ + struct jaddref *jaddref; + struct jnewblk *jnewblk; + uint8_t *inosused; + uint8_t *blksfree; + struct cg *cgp; + struct fs *fs; + int cleared; + ino_t ino; + long bno; + int i; + + if (bmsafemap->sm_state & IOSTARTED) + panic("initiate_write_bmsafemap: Already started\n"); + bmsafemap->sm_state |= IOSTARTED; + /* + * Clear any inode allocations which are pending journal writes. + */ + if (LIST_FIRST(&bmsafemap->sm_jaddrefhd) != NULL) { + cgp = (struct cg *)bp->b_data; + fs = VFSTOUFS(bmsafemap->sm_list.wk_mp)->um_fs; + inosused = cg_inosused(cgp); + LIST_FOREACH(jaddref, &bmsafemap->sm_jaddrefhd, ja_bmdeps) { + ino = jaddref->ja_ino % fs->fs_ipg; + /* + * If this is a background copy the inode may not + * be marked used yet. + */ + if (isset(inosused, ino)) { + if ((jaddref->ja_mode & IFMT) == IFDIR) + cgp->cg_cs.cs_ndir--; + cgp->cg_cs.cs_nifree++; + clrbit(inosused, ino); + jaddref->ja_state &= ~ATTACHED; + jaddref->ja_state |= UNDONE; + } else if ((bp->b_xflags & BX_BKGRDMARKER) == 0) + panic("initiate_write_bmsafemap: inode %d " + "marked free", jaddref->ja_ino); + } + } + /* + * Clear any block allocations which are pending journal writes. + */ + if (LIST_FIRST(&bmsafemap->sm_jnewblkhd) != NULL) { + cgp = (struct cg *)bp->b_data; + fs = VFSTOUFS(bmsafemap->sm_list.wk_mp)->um_fs; + blksfree = cg_blksfree(cgp); + LIST_FOREACH(jnewblk, &bmsafemap->sm_jnewblkhd, jn_deps) { + bno = dtogd(fs, jnewblk->jn_blkno); + cleared = 0; + for (i = jnewblk->jn_oldfrags; i < jnewblk->jn_frags; + i++) { + if (isclr(blksfree, bno + i)) { + cleared = 1; + setbit(blksfree, bno + i); + } + } + /* + * We may not clear the block if it's a background + * copy. In that case there is no reason to detach + * it. + */ + if (cleared) { + jnewblk->jn_state &= ~ATTACHED; + jnewblk->jn_state |= UNDONE; + } else if ((bp->b_xflags & BX_BKGRDMARKER) == 0) + panic("initiate_write_bmsafemap: block %jd " + "marked free", jnewblk->jn_blkno); + } + } + /* + * Move allocation lists to the written lists so they can be + * cleared once the block write is complete. + */ + LIST_SWAP(&bmsafemap->sm_allocdirecthd, &bmsafemap->sm_allocdirectwr, + allocdirect, ad_deps); + LIST_SWAP(&bmsafemap->sm_allocindirhd, &bmsafemap->sm_allocindirwr, + allocindir, ai_deps); + LIST_SWAP(&bmsafemap->sm_inodedephd, &bmsafemap->sm_inodedepwr, + inodedep, id_deps); + LIST_SWAP(&bmsafemap->sm_newblkhd, &bmsafemap->sm_newblkwr, + newblk, nb_deps); +} + +/* * This routine is called during the completion interrupt * service routine for a disk write (from the procedure called * by the device driver to inform the filesystem caches of * a request completion). It should be called early in this * procedure, before the block is made available to other * processes or other routines are called. + * */ static void softdep_disk_write_complete(bp) @@ -4254,12 +7264,9 @@ softdep_disk_write_complete(bp) struct worklist *wk; struct worklist *owk; struct workhead reattach; - struct newblk *newblk; struct allocindir *aip; struct allocdirect *adp; struct indirdep *indirdep; - struct inodedep *inodedep; - struct bmsafemap *bmsafemap; /* * If an error occurred while doing the write, then the data @@ -4291,33 +7298,8 @@ softdep_disk_write_complete(bp) continue; case D_BMSAFEMAP: - bmsafemap = WK_BMSAFEMAP(wk); - while ((newblk = LIST_FIRST(&bmsafemap->sm_newblkhd))) { - newblk->nb_state |= DEPCOMPLETE; - newblk->nb_bmsafemap = NULL; - LIST_REMOVE(newblk, nb_deps); - } - while ((adp = - LIST_FIRST(&bmsafemap->sm_allocdirecthd))) { - adp->ad_state |= DEPCOMPLETE; - adp->ad_buf = NULL; - LIST_REMOVE(adp, ad_deps); - handle_allocdirect_partdone(adp); - } - while ((aip = - LIST_FIRST(&bmsafemap->sm_allocindirhd))) { - aip->ai_state |= DEPCOMPLETE; - aip->ai_buf = NULL; - LIST_REMOVE(aip, ai_deps); - handle_allocindir_partdone(aip); - } - while ((inodedep = - LIST_FIRST(&bmsafemap->sm_inodedephd)) != NULL) { - inodedep->id_state |= DEPCOMPLETE; - LIST_REMOVE(inodedep, id_deps); - inodedep->id_buf = NULL; - } - WORKITEM_FREE(bmsafemap, D_BMSAFEMAP); + if (handle_written_bmsafemap(WK_BMSAFEMAP(wk), bp)) + WORKLIST_INSERT(&reattach, wk); continue; case D_MKDIR: @@ -4327,7 +7309,7 @@ softdep_disk_write_complete(bp) case D_ALLOCDIRECT: adp = WK_ALLOCDIRECT(wk); adp->ad_state |= COMPLETE; - handle_allocdirect_partdone(adp); + handle_allocdirect_partdone(adp, NULL); continue; case D_ALLOCINDIR: @@ -4356,6 +7338,22 @@ softdep_disk_write_complete(bp) bdirty(bp); continue; + case D_FREEWORK: + handle_written_freework(WK_FREEWORK(wk)); + break; + + case D_FREEDEP: + free_freedep(WK_FREEDEP(wk)); + break; + + case D_JSEGDEP: + free_jsegdep(WK_JSEGDEP(wk)); + continue; + + case D_JSEG: + handle_written_jseg(WK_JSEG(wk), bp); + continue; + default: panic("handle_disk_write_complete: Unknown type %s", TYPENAME(wk->wk_type)); @@ -4378,8 +7376,9 @@ softdep_disk_write_complete(bp) * splbio interrupts blocked. */ static void -handle_allocdirect_partdone(adp) +handle_allocdirect_partdone(adp, wkhd) struct allocdirect *adp; /* the completed allocdirect */ + struct workhead *wkhd; /* Work to do when inode is writtne. */ { struct allocdirectlst *listhead; struct allocdirect *listadp; @@ -4388,7 +7387,7 @@ static void if ((adp->ad_state & ALLCOMPLETE) != ALLCOMPLETE) return; - if (adp->ad_buf != NULL) + if (adp->ad_bmsafemap != NULL) panic("handle_allocdirect_partdone: dangling dep"); /* * The on-disk inode cannot claim to be any larger than the last @@ -4401,6 +7400,8 @@ static void * or id_extupdt as appropriate. */ inodedep = adp->ad_inodedep; + if (wkhd == NULL) + wkhd = &inodedep->id_bufwait; bsize = inodedep->id_fs->fs_bsize; if (adp->ad_state & EXTDATA) listhead = &inodedep->id_extupdt; @@ -4450,7 +7451,12 @@ static void listadp = TAILQ_NEXT(adp, ad_next); if ((adp->ad_state & ALLCOMPLETE) != ALLCOMPLETE) return; - free_allocdirect(listhead, adp, delay); + /* + * Any pending journal work need to be moved to the inode so + * that they can be reclaimed after the updated inode is + * written with the new pointers. + */ + free_allocdirect(listhead, adp, wkhd, D_INODEDEP, delay); } } @@ -4464,10 +7470,11 @@ handle_allocindir_partdone(aip) struct allocindir *aip; /* the completed allocindir */ { struct indirdep *indirdep; + struct freefrag *freefrag; if ((aip->ai_state & ALLCOMPLETE) != ALLCOMPLETE) return; - if (aip->ai_buf != NULL) + if (aip->ai_bmsafemap != NULL) panic("handle_allocindir_partdone: dangling dependency"); indirdep = aip->ai_indirdep; if (indirdep->ir_state & UNDONE) { @@ -4482,11 +7489,118 @@ handle_allocindir_partdone(aip) ((ufs2_daddr_t *)indirdep->ir_savebp->b_data)[aip->ai_offset] = aip->ai_newblkno; LIST_REMOVE(aip, ai_next); - if (aip->ai_freefrag != NULL) - add_to_worklist(&aip->ai_freefrag->ff_list); + if ((freefrag = aip->ai_freefrag) != NULL) { + freefrag->ff_state |= COMPLETE; + if ((freefrag->ff_state & ALLCOMPLETE) == ALLCOMPLETE) + add_to_worklist(&aip->ai_freefrag->ff_list); + } + /* + * Move the journal work items to the indirdep to be completed + * after it is next written. + */ + KASSERT(aip->ai_jnewblk == NULL, + ("handle_allocindir_partdone: Journal not written")); + jwork_move(D_INDIRDEP, __LINE__, &indirdep->ir_jwork, &aip->ai_jwork); WORKITEM_FREE(aip, D_ALLOCINDIR); } +static struct freefile * +handle_bufwait(inodedep, wkhd, refhd, jonly) + struct inodedep *inodedep; + struct workhead *wkhd; + struct workhead *refhd; + int jonly; +{ + struct jaddref *jaddref; + struct freefile *freefile; + struct worklist *wk; + + freefile = NULL; + while ((wk = LIST_FIRST(wkhd)) != NULL) { + WORKLIST_REMOVE(wk); + if (jonly == 0) { + switch (wk->wk_type) { + case D_FREEFILE: + /* + * We defer adding freefile to the worklist + * until all other additions have been made to + * ensure that it will be done after all the + * old blocks have been freed. + */ + if (freefile != NULL) + panic("handle_bufwait: freefile"); + freefile = WK_FREEFILE(wk); + continue; + + case D_MKDIR: + handle_written_mkdir(WK_MKDIR(wk), + MKDIR_PARENT); + continue; + + case D_DIRADD: + diradd_inode_written(WK_DIRADD(wk), inodedep); + continue; + + case D_FREEBLKS: + case D_FREEFRAG: + wk->wk_state |= COMPLETE; + if ((wk->wk_state & ALLCOMPLETE) != + ALLCOMPLETE) + continue; + add_to_worklist(wk); + continue; + + case D_DIRREM: + wk->wk_state |= COMPLETE; + add_to_worklist(wk); + continue; + + case D_NEWDIRBLK: + free_newdirblk(WK_NEWDIRBLK(wk)); + continue; + } + } + + switch (wk->wk_type) { + case D_JSEGDEP: + free_jsegdep(WK_JSEGDEP(wk)); + continue; + + case D_JADDREF: + jaddref = WK_JADDREF(wk); + /* + * We have to remove this journal entry from the + * inode's list as soon as it's written so the + * inodedep can be freed. + */ + if (jaddref->ja_state & ONDEPLIST) { + jaddref->ja_state &= ~ONDEPLIST; + LIST_REMOVE(jaddref, ja_inodeps); + } + /* + * Transfer any jaddrefs to the list to be freed with + * the bitmap if we're handle a removed file. + */ + if (refhd == NULL) { + wk->wk_state |= COMPLETE; + free_jaddref(jaddref); + } else + WORKLIST_INSERT(refhd, wk); + continue; + + case D_JNEWBLK: + wk->wk_state |= COMPLETE; + free_jnewblk(WK_JNEWBLK(wk)); + continue; + + default: + panic("handle_bufwait: Unknown type %p(%s)", + wk, TYPENAME(wk->wk_type)); + /* NOTREACHED */ + } + } + return (freefile); +} /* * Called from within softdep_disk_write_complete above to restore * in-memory inode block contents to their most up-to-date state. Note @@ -4498,10 +7612,12 @@ handle_written_inodeblock(inodedep, bp) struct inodedep *inodedep; struct buf *bp; /* buffer containing the inode block */ { - struct worklist *wk, *filefree; + struct freefile *freefile; struct allocdirect *adp, *nextadp; struct ufs1_dinode *dp1 = NULL; struct ufs2_dinode *dp2 = NULL; + struct jaddref *jaddref, *tmp; + struct workhead wkhd; int hadchanges, fstype; if ((inodedep->id_state & IOSTARTED) == 0) @@ -4541,49 +7657,64 @@ handle_written_inodeblock(inodedep, bp) * the inode could be updated. */ hadchanges = 0; + /* + * Restore the link count for every jaddref present. + */ + LIST_FOREACH_SAFE(jaddref, &inodedep->id_jaddrefhd, ja_inodeps, tmp) { + hadchanges = 1; + if ((jaddref->ja_state & UNDONE) == 0) + continue; + if (fstype == UFS1) + dp1->di_nlink++; + else + dp2->di_nlink++; + jaddref->ja_state &= ~UNDONE; + jaddref->ja_state |= ATTACHED; + free_jaddref(jaddref); + } for (adp = TAILQ_FIRST(&inodedep->id_inoupdt); adp; adp = nextadp) { nextadp = TAILQ_NEXT(adp, ad_next); if (adp->ad_state & ATTACHED) panic("handle_written_inodeblock: new entry"); if (fstype == UFS1) { - if (adp->ad_lbn < NDADDR) { - if (dp1->di_db[adp->ad_lbn]!=adp->ad_oldblkno) + if (adp->ad_offset < NDADDR) { + if (dp1->di_db[adp->ad_offset]!=adp->ad_oldblkno) panic("%s %s #%jd mismatch %d != %jd", "handle_written_inodeblock:", "direct pointer", - (intmax_t)adp->ad_lbn, - dp1->di_db[adp->ad_lbn], + (intmax_t)adp->ad_offset, + dp1->di_db[adp->ad_offset], (intmax_t)adp->ad_oldblkno); - dp1->di_db[adp->ad_lbn] = adp->ad_newblkno; + dp1->di_db[adp->ad_offset] = adp->ad_newblkno; } else { - if (dp1->di_ib[adp->ad_lbn - NDADDR] != 0) + if (dp1->di_ib[adp->ad_offset - NDADDR] != 0) panic("%s: %s #%jd allocated as %d", "handle_written_inodeblock", "indirect pointer", - (intmax_t)adp->ad_lbn - NDADDR, - dp1->di_ib[adp->ad_lbn - NDADDR]); - dp1->di_ib[adp->ad_lbn - NDADDR] = + (intmax_t)adp->ad_offset - NDADDR, + dp1->di_ib[adp->ad_offset - NDADDR]); + dp1->di_ib[adp->ad_offset - NDADDR] = adp->ad_newblkno; } } else { - if (adp->ad_lbn < NDADDR) { - if (dp2->di_db[adp->ad_lbn]!=adp->ad_oldblkno) + if (adp->ad_offset < NDADDR) { + if (dp2->di_db[adp->ad_offset]!=adp->ad_oldblkno) panic("%s: %s #%jd %s %jd != %jd", "handle_written_inodeblock", "direct pointer", - (intmax_t)adp->ad_lbn, "mismatch", - (intmax_t)dp2->di_db[adp->ad_lbn], + (intmax_t)adp->ad_offset, "mismatch", + (intmax_t)dp2->di_db[adp->ad_offset], (intmax_t)adp->ad_oldblkno); - dp2->di_db[adp->ad_lbn] = adp->ad_newblkno; + dp2->di_db[adp->ad_offset] = adp->ad_newblkno; } else { - if (dp2->di_ib[adp->ad_lbn - NDADDR] != 0) + if (dp2->di_ib[adp->ad_offset - NDADDR] != 0) panic("%s: %s #%jd allocated as %jd", "handle_written_inodeblock", "indirect pointer", - (intmax_t)adp->ad_lbn - NDADDR, + (intmax_t)adp->ad_offset - NDADDR, (intmax_t) - dp2->di_ib[adp->ad_lbn - NDADDR]); - dp2->di_ib[adp->ad_lbn - NDADDR] = + dp2->di_ib[adp->ad_offset - NDADDR]); + dp2->di_ib[adp->ad_offset - NDADDR] = adp->ad_newblkno; } } @@ -4595,13 +7726,13 @@ handle_written_inodeblock(inodedep, bp) nextadp = TAILQ_NEXT(adp, ad_next); if (adp->ad_state & ATTACHED) panic("handle_written_inodeblock: new entry"); - if (dp2->di_extb[adp->ad_lbn] != adp->ad_oldblkno) + if (dp2->di_extb[adp->ad_offset] != adp->ad_oldblkno) panic("%s: direct pointers #%jd %s %jd != %jd", "handle_written_inodeblock", - (intmax_t)adp->ad_lbn, "mismatch", - (intmax_t)dp2->di_extb[adp->ad_lbn], + (intmax_t)adp->ad_offset, "mismatch", + (intmax_t)dp2->di_extb[adp->ad_offset], (intmax_t)adp->ad_oldblkno); - dp2->di_extb[adp->ad_lbn] = adp->ad_newblkno; + dp2->di_extb[adp->ad_offset] = adp->ad_newblkno; adp->ad_state &= ~UNDONE; adp->ad_state |= ATTACHED; hadchanges = 1; @@ -4640,10 +7771,11 @@ handle_written_inodeblock(inodedep, bp) /* * Process any allocdirects that completed during the update. */ + LIST_INIT(&wkhd); if ((adp = TAILQ_FIRST(&inodedep->id_inoupdt)) != NULL) - handle_allocdirect_partdone(adp); + handle_allocdirect_partdone(adp, &wkhd); if ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != NULL) - handle_allocdirect_partdone(adp); + handle_allocdirect_partdone(adp, &wkhd); /* * Process deallocations that were held pending until the * inode had been written to disk. Freeing of the inode @@ -4651,55 +7783,24 @@ handle_written_inodeblock(inodedep, bp) * avoid creation of new triples * before the old ones have been deleted. */ - filefree = NULL; - while ((wk = LIST_FIRST(&inodedep->id_bufwait)) != NULL) { - WORKLIST_REMOVE(wk); - switch (wk->wk_type) { + freefile = handle_bufwait(inodedep, &inodedep->id_bufwait, NULL, 0); + if (freefile && !LIST_EMPTY(&wkhd)) { + WORKLIST_INSERT(&wkhd, &freefile->fx_list); + freefile = NULL; + } + /* + * Move rolled forward dependency completions to the bufwait list + * now that those that were already written have been processed. + */ + if (!LIST_EMPTY(&wkhd) && hadchanges == 0) + panic("handle_written_inodeblock: bufwait but no changes"); + jwork_move(D_INODEDEP, __LINE__, &inodedep->id_bufwait, &wkhd); - case D_FREEFILE: - /* - * We defer adding filefree to the worklist until - * all other additions have been made to ensure - * that it will be done after all the old blocks - * have been freed. - */ - if (filefree != NULL) - panic("handle_written_inodeblock: filefree"); - filefree = wk; - continue; - - case D_MKDIR: - handle_written_mkdir(WK_MKDIR(wk), MKDIR_PARENT); - continue; - - case D_DIRADD: - diradd_inode_written(WK_DIRADD(wk), inodedep); - continue; - - case D_FREEBLKS: - wk->wk_state |= COMPLETE; - if ((wk->wk_state & ALLCOMPLETE) != ALLCOMPLETE) - continue; - /* -- fall through -- */ - case D_FREEFRAG: - case D_DIRREM: - add_to_worklist(wk); - continue; - - case D_NEWDIRBLK: - free_newdirblk(WK_NEWDIRBLK(wk)); - continue; - - default: - panic("handle_written_inodeblock: Unknown type %s", - TYPENAME(wk->wk_type)); - /* NOTREACHED */ - } - } - if (filefree != NULL) { + if (freefile != NULL) { if (free_inodedep(inodedep) == 0) - panic("handle_written_inodeblock: live inodedep"); - add_to_worklist(filefree); + panic("handle_written_inodeblock: live inodedep %p", + inodedep); + add_to_worklist(&freefile->fx_list); return (0); } @@ -4707,8 +7808,10 @@ handle_written_inodeblock(inodedep, bp) * If no outstanding dependencies, free it. */ if (free_inodedep(inodedep) || - (TAILQ_FIRST(&inodedep->id_inoupdt) == 0 && - TAILQ_FIRST(&inodedep->id_extupdt) == 0)) + (LIST_FIRST(&inodedep->id_jaddrefhd) == 0 && + TAILQ_FIRST(&inodedep->id_inoupdt) == 0 && + TAILQ_FIRST(&inodedep->id_extupdt) == 0 && + LIST_FIRST(&inodedep->id_bufwait) == 0)) return (0); return (hadchanges); } @@ -4722,50 +7825,185 @@ diradd_inode_written(dap, inodedep) struct diradd *dap; struct inodedep *inodedep; { - struct pagedep *pagedep; dap->da_state |= COMPLETE; - if ((dap->da_state & ALLCOMPLETE) == ALLCOMPLETE) { - if (dap->da_state & DIRCHG) - pagedep = dap->da_previous->dm_pagedep; - else - pagedep = dap->da_pagedep; - LIST_REMOVE(dap, da_pdlist); - LIST_INSERT_HEAD(&pagedep->pd_pendinghd, dap, da_pdlist); - } + complete_diradd(dap); WORKLIST_INSERT(&inodedep->id_pendinghd, &dap->da_list); } /* - * Handle the completion of a mkdir dependency. + * Returns true if the bmsafemap will have rollbacks when written. Must + * only be called with lk and the buf lock on the cg held. */ +static int +bmsafemap_rollbacks(bmsafemap) + struct bmsafemap *bmsafemap; +{ + + return (!LIST_EMPTY(&bmsafemap->sm_jaddrefhd) | + !LIST_EMPTY(&bmsafemap->sm_jnewblkhd)); +} + +/* + * Complete a write to a bmsafemap structure. Roll forward any bitmap + * changes if it's not a background write. Set all written dependencies + * to DEPCOMPLETE and free the structure if possible. + */ +static int +handle_written_bmsafemap(bmsafemap, bp) + struct bmsafemap *bmsafemap; + struct buf *bp; +{ + struct newblk *newblk; + struct allocindir *aip; + struct allocdirect *adp; + struct inodedep *inodedep; + struct jaddref *jaddref, *jatmp; + struct jnewblk *jnewblk, *jntmp; + uint8_t *inosused; + uint8_t *blksfree; + struct cg *cgp; + struct fs *fs; + ino_t ino; + long bno; + int chgs; + int i; + + if ((bmsafemap->sm_state & IOSTARTED) == 0) + panic("initiate_write_bmsafemap: Not started\n"); + chgs = 0; + bmsafemap->sm_state &= ~IOSTARTED; + /* + * Restore unwritten inode allocation pending jaddref writes. + */ + if (!LIST_EMPTY(&bmsafemap->sm_jaddrefhd)) { + cgp = (struct cg *)bp->b_data; + fs = VFSTOUFS(bmsafemap->sm_list.wk_mp)->um_fs; + inosused = cg_inosused(cgp); + LIST_FOREACH_SAFE(jaddref, &bmsafemap->sm_jaddrefhd, + ja_bmdeps, jatmp) { + if ((jaddref->ja_state & UNDONE) == 0) + continue; + ino = jaddref->ja_ino % fs->fs_ipg; + if (isset(inosused, ino)) + panic("handle_written_bmsafemap: " + "re-allocated inode"); + if ((bp->b_xflags & BX_BKGRDMARKER) == 0) { + if ((jaddref->ja_mode & IFMT) == IFDIR) + cgp->cg_cs.cs_ndir++; + cgp->cg_cs.cs_nifree--; + setbit(inosused, ino); + chgs = 1; + } + jaddref->ja_state &= ~UNDONE; + jaddref->ja_state |= ATTACHED; + free_jaddref(jaddref); + } + } + /* + * Restore any block allocations which are pending journal writes. + */ + if (LIST_FIRST(&bmsafemap->sm_jnewblkhd) != NULL) { + cgp = (struct cg *)bp->b_data; + fs = VFSTOUFS(bmsafemap->sm_list.wk_mp)->um_fs; + blksfree = cg_blksfree(cgp); + LIST_FOREACH_SAFE(jnewblk, &bmsafemap->sm_jnewblkhd, jn_deps, + jntmp) { + if ((jnewblk->jn_state & UNDONE) == 0) + continue; + bno = dtogd(fs, jnewblk->jn_blkno); + for (i = jnewblk->jn_oldfrags; i < jnewblk->jn_frags; + i++) { + if (bp->b_xflags & BX_BKGRDMARKER) + break; + if ((jnewblk->jn_state & NEWBLOCK) == 0 && + isclr(blksfree, bno + i)) + panic("handle_written_bmsafemap: " + "re-allocated fragment"); + clrbit(blksfree, bno + i); + chgs = 1; + } + jnewblk->jn_state &= ~(UNDONE | NEWBLOCK); + jnewblk->jn_state |= ATTACHED; + free_jnewblk(jnewblk); + } + } + while ((newblk = LIST_FIRST(&bmsafemap->sm_newblkwr))) { + newblk->nb_state |= DEPCOMPLETE; + newblk->nb_bmsafemap = NULL; + LIST_REMOVE(newblk, nb_deps); + } + while ((adp = LIST_FIRST(&bmsafemap->sm_allocdirectwr))) { + adp->ad_state |= DEPCOMPLETE; + adp->ad_bmsafemap = NULL; + LIST_REMOVE(adp, ad_deps); + handle_allocdirect_partdone(adp, NULL); + } + while ((aip = LIST_FIRST(&bmsafemap->sm_allocindirwr))) { + aip->ai_state |= DEPCOMPLETE; + aip->ai_bmsafemap = NULL; + LIST_REMOVE(aip, ai_deps); + handle_allocindir_partdone(aip); + } + while ((inodedep = LIST_FIRST(&bmsafemap->sm_inodedepwr)) != NULL) { + inodedep->id_state |= DEPCOMPLETE; + inodedep->id_state &= ~ONDEPLIST; + LIST_REMOVE(inodedep, id_deps); + inodedep->id_bmsafemap = NULL; + } + if (LIST_EMPTY(&bmsafemap->sm_jaddrefhd) && + LIST_EMPTY(&bmsafemap->sm_jnewblkhd) && + LIST_EMPTY(&bmsafemap->sm_newblkhd) && + LIST_EMPTY(&bmsafemap->sm_allocdirecthd) && + LIST_EMPTY(&bmsafemap->sm_allocindirhd) && + LIST_EMPTY(&bmsafemap->sm_inodedephd)) { + if (chgs) + bdirty(bp); + LIST_REMOVE(bmsafemap, sm_hash); + WORKITEM_FREE(bmsafemap, D_BMSAFEMAP); + return (0); + } + bdirty(bp); + return (1); +} + +/* + * Try to free a mkdir dependency. + */ static void -handle_written_mkdir(mkdir, type) +complete_mkdir(mkdir) struct mkdir *mkdir; - int type; { struct diradd *dap; - struct pagedep *pagedep; - if (mkdir->md_state != type) - panic("handle_written_mkdir: bad type"); + if ((mkdir->md_state & ALLCOMPLETE) != ALLCOMPLETE) + return; + LIST_REMOVE(mkdir, md_mkdirs); dap = mkdir->md_diradd; - dap->da_state &= ~type; - if ((dap->da_state & (MKDIR_PARENT | MKDIR_BODY)) == 0) + dap->da_state &= ~(mkdir->md_state & (MKDIR_PARENT | MKDIR_BODY)); + if ((dap->da_state & (MKDIR_PARENT | MKDIR_BODY)) == 0) { dap->da_state |= DEPCOMPLETE; - if ((dap->da_state & ALLCOMPLETE) == ALLCOMPLETE) { - if (dap->da_state & DIRCHG) - pagedep = dap->da_previous->dm_pagedep; - else - pagedep = dap->da_pagedep; - LIST_REMOVE(dap, da_pdlist); - LIST_INSERT_HEAD(&pagedep->pd_pendinghd, dap, da_pdlist); + complete_diradd(dap); } - LIST_REMOVE(mkdir, md_mkdirs); WORKITEM_FREE(mkdir, D_MKDIR); } /* + * Handle the completion of a mkdir dependency. + */ +static void +handle_written_mkdir(mkdir, type) + struct mkdir *mkdir; + int type; +{ + + if ((mkdir->md_state & (MKDIR_PARENT | MKDIR_BODY)) != type) + panic("handle_written_mkdir: bad type"); + mkdir->md_state |= COMPLETE; + complete_mkdir(mkdir); +} + +/* * Called from within softdep_disk_write_complete above. * A write operation was just completed. Removed inodes can * now be freed and associated block pointers may be committed. @@ -4790,7 +8028,10 @@ handle_written_filepage(pagedep, bp) */ while ((dirrem = LIST_FIRST(&pagedep->pd_dirremhd)) != NULL) { LIST_REMOVE(dirrem, dm_next); + dirrem->dm_state |= COMPLETE; dirrem->dm_dirinum = pagedep->pd_ino; + KASSERT(LIST_EMPTY(&dirrem->dm_jremrefhd), + ("handle_written_filepage: Journal entries not written.")); add_to_worklist(&dirrem->dm_list); } /* @@ -4800,7 +8041,7 @@ handle_written_filepage(pagedep, bp) */ if ((pagedep->pd_state & NEWBLOCK) == 0) while ((dap = LIST_FIRST(&pagedep->pd_pendinghd)) != NULL) - free_diradd(dap); + free_diradd(dap, NULL); /* * Uncommitted directory entries must be restored. */ @@ -4908,6 +8149,7 @@ softdep_update_inodeblock(ip, bp, waitfor) int waitfor; /* nonzero => update must be allowed */ { struct inodedep *inodedep; + struct jaddref *jaddref; struct worklist *wk; struct mount *mp; struct buf *ibp; @@ -4922,6 +8164,7 @@ softdep_update_inodeblock(ip, bp, waitfor) */ mp = UFSTOVFS(ip->i_ump); ACQUIRE_LOCK(&lk); +again: if (inodedep_lookup(mp, ip->i_number, 0, &inodedep) == 0) { FREE_LOCK(&lk); if (ip->i_effnlink != ip->i_nlink) @@ -4931,6 +8174,17 @@ softdep_update_inodeblock(ip, bp, waitfor) if (inodedep->id_nlinkdelta != ip->i_nlink - ip->i_effnlink) panic("softdep_update_inodeblock: bad delta"); /* + * If we're flushing all dependencies we must also move any waiting + * for journal writes onto the bufwait list prior to I/O. + */ + if (waitfor) + LIST_FOREACH(jaddref, &inodedep->id_jaddrefhd, ja_inodeps) { + if (jaddref->ja_state & (GOINGAWAY | COMPLETE)) + continue; + jwait(&jaddref->ja_list); + goto again; + } + /* * Changes have been initiated. Anything depending on these * changes cannot occur until this inode has been written. */ @@ -4945,10 +8199,12 @@ softdep_update_inodeblock(ip, bp, waitfor) */ merge_inode_lists(&inodedep->id_newinoupdt, &inodedep->id_inoupdt); if (!TAILQ_EMPTY(&inodedep->id_inoupdt)) - handle_allocdirect_partdone(TAILQ_FIRST(&inodedep->id_inoupdt)); + handle_allocdirect_partdone(TAILQ_FIRST(&inodedep->id_inoupdt), + NULL); merge_inode_lists(&inodedep->id_newextupdt, &inodedep->id_extupdt); if (!TAILQ_EMPTY(&inodedep->id_extupdt)) - handle_allocdirect_partdone(TAILQ_FIRST(&inodedep->id_extupdt)); + handle_allocdirect_partdone(TAILQ_FIRST(&inodedep->id_extupdt), + NULL); /* * Now that the inode has been pushed into the buffer, the * operations dependent on the inode being written to disk @@ -4975,7 +8231,7 @@ retry: FREE_LOCK(&lk); return; } - ibp = inodedep->id_buf; + ibp = inodedep->id_bmsafemap->sm_buf; ibp = getdirtybuf(ibp, &lk, MNT_WAIT); if (ibp == NULL) { /* @@ -5007,13 +8263,13 @@ merge_inode_lists(newlisthead, oldlisthead) newadp = TAILQ_FIRST(newlisthead); for (listadp = TAILQ_FIRST(oldlisthead); listadp && newadp;) { - if (listadp->ad_lbn < newadp->ad_lbn) { + if (listadp->ad_offset < newadp->ad_offset) { listadp = TAILQ_NEXT(listadp, ad_next); continue; } TAILQ_REMOVE(newlisthead, newadp, ad_next); TAILQ_INSERT_BEFORE(listadp, newadp, ad_next); - if (listadp->ad_lbn == newadp->ad_lbn) { + if (listadp->ad_offset == newadp->ad_offset) { allocdirect_merge(oldlisthead, newadp, listadp); listadp = newadp; @@ -5057,12 +8313,11 @@ softdep_fsync(vp) return (0); } if (!LIST_EMPTY(&inodedep->id_inowait) || - !LIST_EMPTY(&inodedep->id_bufwait) || !TAILQ_EMPTY(&inodedep->id_extupdt) || !TAILQ_EMPTY(&inodedep->id_newextupdt) || !TAILQ_EMPTY(&inodedep->id_inoupdt) || !TAILQ_EMPTY(&inodedep->id_newinoupdt)) - panic("softdep_fsync: pending ops"); + panic("softdep_fsync: pending ops %p", inodedep); for (error = 0, flushparent = 0; ; ) { if ((wk = LIST_FIRST(&inodedep->id_pendinghd)) == NULL) break; @@ -5320,9 +8575,11 @@ loop: case D_ALLOCDIRECT: adp = WK_ALLOCDIRECT(wk); + if (adp->ad_jnewblk != NULL) + jwait(&adp->ad_jnewblk->jn_list); if (adp->ad_state & DEPCOMPLETE) continue; - nbp = adp->ad_buf; + nbp = adp->ad_bmsafemap->sm_buf; nbp = getdirtybuf(nbp, &lk, waitfor); if (nbp == NULL) continue; @@ -5337,9 +8594,11 @@ loop: case D_ALLOCINDIR: aip = WK_ALLOCINDIR(wk); + if (aip->ai_jnewblk != NULL) + jwait(&aip->ai_jnewblk->jn_list); if (aip->ai_state & DEPCOMPLETE) continue; - nbp = aip->ai_buf; + nbp = aip->ai_bmsafemap->sm_buf; nbp = getdirtybuf(nbp, &lk, waitfor); if (nbp == NULL) continue; @@ -5356,9 +8615,13 @@ loop: restart: LIST_FOREACH(aip, &WK_INDIRDEP(wk)->ir_deplisthd, ai_next) { + if (aip->ai_jnewblk != NULL) { + jwait(&aip->ai_jnewblk->jn_list); + goto restart; + } if (aip->ai_state & DEPCOMPLETE) continue; - nbp = aip->ai_buf; + nbp = aip->ai_bmsafemap->sm_buf; nbp = getdirtybuf(nbp, &lk, MNT_WAIT); if (nbp == NULL) goto restart; @@ -5489,7 +8752,8 @@ loop: BO_LOCK(bo); drain_output(vp); BO_UNLOCK(bo); - return (0); + return ffs_update(vp, 1); + /* return (0); */ } /* @@ -5502,7 +8766,9 @@ flush_inodedep_deps(mp, ino) ino_t ino; { struct inodedep *inodedep; + struct jaddref *jaddref; int error, waitfor; + int loops = 0; /* * This work is done in two passes. The first pass grabs most @@ -5522,8 +8788,17 @@ flush_inodedep_deps(mp, ino) return (error); FREE_LOCK(&lk); ACQUIRE_LOCK(&lk); +restart: if (inodedep_lookup(mp, ino, 0, &inodedep) == 0) return (0); + LIST_FOREACH(jaddref, &inodedep->id_jaddrefhd, ja_inodeps) { + if (jaddref->ja_state & (GOINGAWAY | COMPLETE)) + continue; + if (++loops > 20) + panic("stuck jaddref: %p\n", jaddref); + jwait(&jaddref->ja_list); + goto restart; + } if (flush_deplist(&inodedep->id_inoupdt, waitfor, &error) || flush_deplist(&inodedep->id_newinoupdt, waitfor, &error) || flush_deplist(&inodedep->id_extupdt, waitfor, &error) || @@ -5559,9 +8834,11 @@ flush_deplist(listhead, waitfor, errorp) mtx_assert(&lk, MA_OWNED); TAILQ_FOREACH(adp, listhead, ad_next) { + if (adp->ad_jnewblk != NULL) + jwait(&adp->ad_jnewblk->jn_list); if (adp->ad_state & DEPCOMPLETE) continue; - bp = adp->ad_buf; + bp = adp->ad_bmsafemap->sm_buf; bp = getdirtybuf(bp, &lk, waitfor); if (bp == NULL) { if (waitfor == MNT_NOWAIT) @@ -5592,6 +8869,7 @@ flush_pagedep_deps(pvp, mp, diraddhdp) struct diraddhd *diraddhdp; { struct inodedep *inodedep; + struct jaddref *jaddref; struct ufsmount *ump; struct diradd *dap; struct vnode *vp; @@ -5690,6 +8968,13 @@ flush_pagedep_deps(pvp, mp, diraddhdp) break; } BO_UNLOCK(bo); + /* + * We have to wait for the direct pointers to point + * at the newdirblk before the dependency will go + * away. + */ + if (dap == LIST_FIRST(diraddhdp)) + ffs_update(vp, 1); vput(vp); if (error != 0) break; /* Flushing of first block failed */ @@ -5716,11 +9001,20 @@ retry: if (inodedep_lookup(UFSTOVFS(ump), inum, 0, &inodedep) == 0) panic("flush_pagedep_deps: lost inode"); /* + * Wait for any pending journal adds to complete. + */ + LIST_FOREACH(jaddref, &inodedep->id_jaddrefhd, ja_inodeps) { + if (jaddref->ja_state & (GOINGAWAY | COMPLETE)) + continue; + jwait(&jaddref->ja_list); + goto retry; + } + /* * If the inode still has bitmap dependencies, * push them to disk. */ if ((inodedep->id_state & DEPCOMPLETE) == 0) { - bp = inodedep->id_buf; + bp = inodedep->id_bmsafemap->sm_buf; bp = getdirtybuf(bp, &lk, MNT_WAIT); if (bp == NULL) goto retry; @@ -5749,8 +9043,11 @@ retry: * If we have failed to get rid of all the dependencies * then something is seriously wrong. */ - if (dap == LIST_FIRST(diraddhdp)) - panic("flush_pagedep_deps: flush failed"); + if (dap == LIST_FIRST(diraddhdp)) { + inodedep_lookup(UFSTOVFS(ump), inum, 0, &inodedep); + panic("flush_pagedep_deps: failed to flush " + "inodep %p ino %d dap %p", inodedep, inum, dap); + } } if (error) ACQUIRE_LOCK(&lk); @@ -6100,10 +9397,12 @@ softdep_count_dependencies(bp, wantcount) int wantcount; { struct worklist *wk; + struct bmsafemap *bmsafemap; struct inodedep *inodedep; struct indirdep *indirdep; struct allocindir *aip; struct pagedep *pagedep; + struct dirrem *dirrem; struct diradd *dap; int i, retval; @@ -6132,6 +9431,12 @@ softdep_count_dependencies(bp, wantcount) if (!wantcount) goto out; } + if (LIST_FIRST(&inodedep->id_jaddrefhd)) { + /* Add reference dependency. */ + retval += 1; + if (!wantcount) + goto out; + } continue; case D_INDIRDEP: @@ -6147,6 +9452,14 @@ softdep_count_dependencies(bp, wantcount) case D_PAGEDEP: pagedep = WK_PAGEDEP(wk); + LIST_FOREACH(dirrem, &pagedep->pd_dirremhd, dm_next) { + if (LIST_FIRST(&dirrem->dm_jremrefhd)) { + /* Journal remove ref dependency. */ + retval += 1; + if (!wantcount) + goto out; + } + } for (i = 0; i < DAHASHSZ; i++) { LIST_FOREACH(dap, &pagedep->pd_diraddhd[i], da_pdlist) { @@ -6159,14 +9472,33 @@ softdep_count_dependencies(bp, wantcount) continue; case D_BMSAFEMAP: + bmsafemap = WK_BMSAFEMAP(wk); + if (LIST_FIRST(&bmsafemap->sm_jaddrefhd)) { + /* Add reference dependency. */ + retval += 1; + if (!wantcount) + goto out; + } + if (LIST_FIRST(&bmsafemap->sm_jnewblkhd)) { + /* Allocate block dependency. */ + retval += 1; + if (!wantcount) + goto out; + } + continue; + + case D_FREEWORK: + case D_FREEDEP: + case D_JSEGDEP: case D_ALLOCDIRECT: case D_ALLOCINDIR: case D_MKDIR: + case D_JSEG: /* never a dependency on these blocks */ continue; default: - panic("softdep_check_for_rollback: Unexpected type %s", + panic("softdep_count_dependencies: Unexpected type %s", TYPENAME(wk->wk_type)); /* NOTREACHED */ } @@ -6382,6 +9714,45 @@ softdep_error(func, error) #ifdef DDB +static void +inodedep_print(struct inodedep *inodedep, int verbose) +{ + db_printf("%p fs %p st %x ino %jd inoblk %jd delta %d saveino %p\n", + inodedep, inodedep->id_fs, inodedep->id_state, + (intmax_t)inodedep->id_ino, + (intmax_t)fsbtodb(inodedep->id_fs, + ino_to_fsba(inodedep->id_fs, inodedep->id_ino)), + inodedep->id_nlinkdelta, inodedep->id_savedino1); + + if (verbose == 0) + return; + + db_printf("\tpendinghd %p, bufwait %p, inowait %p, jaddrefhd %p, " + "mkdiradd %p\n", + LIST_FIRST(&inodedep->id_pendinghd), + LIST_FIRST(&inodedep->id_bufwait), + LIST_FIRST(&inodedep->id_inowait), + LIST_FIRST(&inodedep->id_jaddrefhd), + inodedep->id_mkdiradd); + db_printf("\tindirdephd %p, inoupdt %p, newinoupdt %p, extupdt %p, " + "newextupdt %p\n", + LIST_FIRST(&inodedep->id_indirdephd), + TAILQ_FIRST(&inodedep->id_inoupdt), + TAILQ_FIRST(&inodedep->id_newinoupdt), + TAILQ_FIRST(&inodedep->id_extupdt), + TAILQ_FIRST(&inodedep->id_newextupdt)); +} + +DB_SHOW_COMMAND(inodedep, db_show_inodedep) +{ + + if (have_addr == 0) { + db_printf("Address required\n"); + return; + } + inodedep_print((struct inodedep*)addr, 1); +} + DB_SHOW_COMMAND(inodedeps, db_show_inodedeps) { struct inodedep_hashhead *inodedephd; @@ -6395,15 +9766,62 @@ DB_SHOW_COMMAND(inodedeps, db_show_inodedeps) LIST_FOREACH(inodedep, inodedephd, id_hash) { if (fs != NULL && fs != inodedep->id_fs) continue; - db_printf("%p fs %p st %x ino %jd inoblk %jd\n", - inodedep, inodedep->id_fs, inodedep->id_state, - (intmax_t)inodedep->id_ino, - (intmax_t)fsbtodb(inodedep->id_fs, - ino_to_fsba(inodedep->id_fs, inodedep->id_ino))); + inodedep_print(inodedep, 0); } } } +DB_SHOW_COMMAND(worklist, db_show_worklist) +{ + struct worklist *wk; + + if (have_addr == 0) { + db_printf("Address required\n"); + return; + } + wk = (struct worklist *)addr; + printf("worklist: %p type %s state 0x%X\n", + wk, TYPENAME(wk->wk_type), wk->wk_state); +} + +DB_SHOW_COMMAND(workhead, db_show_workhead) +{ + struct workhead *wkhd; + struct worklist *wk; + int i; + + if (have_addr == 0) { + db_printf("Address required\n"); + return; + } + wkhd = (struct workhead *)addr; + wk = LIST_FIRST(wkhd); + for (i = 0; i < 100 && wk != NULL; i++, wk = LIST_NEXT(wk, wk_list)) + db_printf("worklist: %p type %s state 0x%X", + wk, TYPENAME(wk->wk_type), wk->wk_state); + if (i == 100) + db_printf("workhead overflow"); + printf("\n"); +} + + +DB_SHOW_COMMAND(mkdirs, db_show_mkdirs) +{ + struct jaddref *jaddref; + struct diradd *diradd; + struct mkdir *mkdir; + + LIST_FOREACH(mkdir, &mkdirlisthd, md_mkdirs) { + diradd = mkdir->md_diradd; + db_printf("mkdir: %p state 0x%X dap %p state 0x%X", + mkdir, mkdir->md_state, diradd, diradd->da_state); + if ((jaddref = mkdir->md_jaddref) != NULL) + db_printf(" jaddref %p jaddref state 0x%X", + jaddref, jaddref->ja_state); + db_printf("\n"); + } +} + #endif /* DDB */ #endif /* SOFTUPDATES */ Index: /usr/src/sys/ufs/ffs/ffs_alloc.c =================================================================== --- /usr/src/sys/ufs/ffs/ffs_alloc.c (revision 200565) +++ /usr/src/sys/ufs/ffs/ffs_alloc.c (working copy) @@ -89,23 +89,23 @@ __FBSDID("$FreeBSD$"); #include typedef ufs2_daddr_t allocfcn_t(struct inode *ip, int cg, ufs2_daddr_t bpref, - int size); + int size, int rsize); -static ufs2_daddr_t ffs_alloccg(struct inode *, int, ufs2_daddr_t, int); +static ufs2_daddr_t ffs_alloccg(struct inode *, int, ufs2_daddr_t, int, int); static ufs2_daddr_t - ffs_alloccgblk(struct inode *, struct buf *, ufs2_daddr_t); + ffs_alloccgblk(struct inode *, struct buf *, ufs2_daddr_t, int); #ifdef INVARIANTS static int ffs_checkblk(struct inode *, ufs2_daddr_t, long); #endif -static ufs2_daddr_t ffs_clusteralloc(struct inode *, int, ufs2_daddr_t, int); -static void ffs_clusteracct(struct ufsmount *, struct fs *, struct cg *, - ufs1_daddr_t, int); +static ufs2_daddr_t ffs_clusteralloc(struct inode *, int, ufs2_daddr_t, int, + int); static ino_t ffs_dirpref(struct inode *); static ufs2_daddr_t ffs_fragextend(struct inode *, int, ufs2_daddr_t, int, int); static void ffs_fserr(struct fs *, ino_t, char *); static ufs2_daddr_t ffs_hashalloc - (struct inode *, int, ufs2_daddr_t, int, allocfcn_t *); -static ufs2_daddr_t ffs_nodealloccg(struct inode *, int, ufs2_daddr_t, int); + (struct inode *, int, ufs2_daddr_t, int, int, allocfcn_t *); +static ufs2_daddr_t ffs_nodealloccg(struct inode *, int, ufs2_daddr_t, int, + int); static ufs1_daddr_t ffs_mapsearch(struct fs *, struct cg *, ufs2_daddr_t, int); static int ffs_reallocblks_ufs1(struct vop_reallocblks_args *); static int ffs_reallocblks_ufs2(struct vop_reallocblks_args *); @@ -182,7 +182,7 @@ retry: cg = ino_to_cg(fs, ip->i_number); else cg = dtog(fs, bpref); - bno = ffs_hashalloc(ip, cg, bpref, size, ffs_alloccg); + bno = ffs_hashalloc(ip, cg, bpref, size, size, ffs_alloccg); if (bno > 0) { delta = btodb(size); if (ip->i_flag & IN_SPACECOUNTED) { @@ -380,16 +380,12 @@ retry: panic("ffs_realloccg: bad optim"); /* NOTREACHED */ } - bno = ffs_hashalloc(ip, cg, bpref, request, ffs_alloccg); + bno = ffs_hashalloc(ip, cg, bpref, request, nsize, ffs_alloccg); if (bno > 0) { bp->b_blkno = fsbtodb(fs, bno); if (!DOINGSOFTDEP(vp)) ffs_blkfree(ump, fs, ip->i_devvp, bprev, (long)osize, - ip->i_number); - if (nsize < request) - ffs_blkfree(ump, fs, ip->i_devvp, - bno + numfrags(fs, nsize), - (long)(request - nsize), ip->i_number); + ip->i_number, NULL); delta = btodb(nsize - osize); if (ip->i_flag & IN_SPACECOUNTED) { UFS_LOCK(ump); @@ -493,7 +489,7 @@ ffs_reallocblks_ufs1(ap) struct fs *fs; struct inode *ip; struct vnode *vp; - struct buf *sbp, *ebp; + struct buf *sbp, *ebp, *bp; ufs1_daddr_t *bap, *sbap, *ebap = 0; struct cluster_save *buflist; struct ufsmount *ump; @@ -501,7 +497,7 @@ ffs_reallocblks_ufs1(ap) ufs1_daddr_t soff, newblk, blkno; ufs2_daddr_t pref; struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; - int i, len, start_lvl, end_lvl, ssize; + int i, len, start_lvl, end_lvl, ssize, lvl; vp = ap->a_vp; ip = VTOI(vp); @@ -578,7 +574,7 @@ ffs_reallocblks_ufs1(ap) * Search the block map looking for an allocation of the desired size. */ if ((newblk = ffs_hashalloc(ip, dtog(fs, pref), pref, - len, ffs_clusteralloc)) == 0) { + len, len, ffs_clusteralloc)) == 0) { UFS_UNLOCK(ump); goto fail; } @@ -594,11 +590,17 @@ ffs_reallocblks_ufs1(ap) printf("realloc: ino %d, lbns %jd-%jd\n\told:", ip->i_number, (intmax_t)start_lbn, (intmax_t)end_lbn); #endif + idp = start_ap; + bp = sbp; blkno = newblk; + lvl = start_lvl - 1; for (bap = &sbap[soff], i = 0; i < len; i++, blkno += fs->fs_frag) { if (i == ssize) { bap = ebap; - soff = -i; + idp = end_ap; + bp = ebp; + lvl = end_lvl - 1; + idp[lvl].in_off = 0; } #ifdef INVARIANTS if (!ffs_checkblk(ip, @@ -614,12 +616,13 @@ ffs_reallocblks_ufs1(ap) if (DOINGSOFTDEP(vp)) { if (sbap == &ip->i_din1->di_db[0] && i < ssize) softdep_setup_allocdirect(ip, start_lbn + i, - blkno, *bap, fs->fs_bsize, fs->fs_bsize, - buflist->bs_children[i]); + start_lbn + i, blkno, *bap, fs->fs_bsize, + fs->fs_bsize, buflist->bs_children[i]); else - softdep_setup_allocindir_page(ip, start_lbn + i, - i < ssize ? sbp : ebp, soff + i, blkno, - *bap, buflist->bs_children[i]); + softdep_setup_allocindir_page(ip, bp, idp, + lvl, start_lbn + i, blkno, *bap, + buflist->bs_children[i]); + idp[lvl].in_off++; } *bap++ = blkno; } @@ -664,7 +667,7 @@ ffs_reallocblks_ufs1(ap) if (!DOINGSOFTDEP(vp)) ffs_blkfree(ump, fs, ip->i_devvp, dbtofsb(fs, buflist->bs_children[i]->b_blkno), - fs->fs_bsize, ip->i_number); + fs->fs_bsize, ip->i_number, NULL); buflist->bs_children[i]->b_blkno = fsbtodb(fs, blkno); #ifdef INVARIANTS if (!ffs_checkblk(ip, @@ -702,14 +705,14 @@ ffs_reallocblks_ufs2(ap) struct fs *fs; struct inode *ip; struct vnode *vp; - struct buf *sbp, *ebp; + struct buf *sbp, *ebp, *bp; ufs2_daddr_t *bap, *sbap, *ebap = 0; struct cluster_save *buflist; struct ufsmount *ump; ufs_lbn_t start_lbn, end_lbn; ufs2_daddr_t soff, newblk, blkno, pref; struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; - int i, len, start_lvl, end_lvl, ssize; + int i, len, start_lvl, end_lvl, ssize, lvl; vp = ap->a_vp; ip = VTOI(vp); @@ -786,7 +789,7 @@ ffs_reallocblks_ufs2(ap) * Search the block map looking for an allocation of the desired size. */ if ((newblk = ffs_hashalloc(ip, dtog(fs, pref), pref, - len, ffs_clusteralloc)) == 0) { + len, len, ffs_clusteralloc)) == 0) { UFS_UNLOCK(ump); goto fail; } @@ -802,11 +805,17 @@ ffs_reallocblks_ufs2(ap) printf("realloc: ino %d, lbns %jd-%jd\n\told:", ip->i_number, (intmax_t)start_lbn, (intmax_t)end_lbn); #endif + idp = start_ap; + bp = sbp; blkno = newblk; + lvl = start_lvl - 1; for (bap = &sbap[soff], i = 0; i < len; i++, blkno += fs->fs_frag) { if (i == ssize) { bap = ebap; - soff = -i; + idp = end_ap; + bp = ebp; + lvl = end_lvl - 1; + idp[lvl].in_off = 0; } #ifdef INVARIANTS if (!ffs_checkblk(ip, @@ -822,12 +831,13 @@ ffs_reallocblks_ufs2(ap) if (DOINGSOFTDEP(vp)) { if (sbap == &ip->i_din2->di_db[0] && i < ssize) softdep_setup_allocdirect(ip, start_lbn + i, - blkno, *bap, fs->fs_bsize, fs->fs_bsize, - buflist->bs_children[i]); + start_lbn + i, blkno, *bap, fs->fs_bsize, + fs->fs_bsize, buflist->bs_children[i]); else - softdep_setup_allocindir_page(ip, start_lbn + i, - i < ssize ? sbp : ebp, soff + i, blkno, - *bap, buflist->bs_children[i]); + softdep_setup_allocindir_page(ip, bp, idp, + lvl, start_lbn + i, blkno, *bap, + buflist->bs_children[i]); + idp[lvl].in_off++; } *bap++ = blkno; } @@ -872,7 +882,7 @@ ffs_reallocblks_ufs2(ap) if (!DOINGSOFTDEP(vp)) ffs_blkfree(ump, fs, ip->i_devvp, dbtofsb(fs, buflist->bs_children[i]->b_blkno), - fs->fs_bsize, ip->i_number); + fs->fs_bsize, ip->i_number, NULL); buflist->bs_children[i]->b_blkno = fsbtodb(fs, blkno); #ifdef INVARIANTS if (!ffs_checkblk(ip, @@ -959,7 +969,7 @@ ffs_valloc(pvp, mode, cred, vpp) if (fs->fs_contigdirs[cg] > 0) fs->fs_contigdirs[cg]--; } - ino = (ino_t)ffs_hashalloc(pip, cg, ipref, mode, + ino = (ino_t)ffs_hashalloc(pip, cg, ipref, mode, 0, (allocfcn_t *)ffs_nodealloccg); if (ino == 0) goto noinodes; @@ -1268,11 +1278,12 @@ ffs_blkpref_ufs2(ip, lbn, indx, bap) */ /*VARARGS5*/ static ufs2_daddr_t -ffs_hashalloc(ip, cg, pref, size, allocator) +ffs_hashalloc(ip, cg, pref, size, rsize, allocator) struct inode *ip; int cg; ufs2_daddr_t pref; - int size; /* size for data blocks, mode for inodes */ + int size; /* Search size for data blocks, mode for inodes */ + int rsize; /* Real allocated size. */ allocfcn_t *allocator; { struct fs *fs; @@ -1288,7 +1299,7 @@ static ufs2_daddr_t /* * 1: preferred cylinder group */ - result = (*allocator)(ip, cg, pref, size); + result = (*allocator)(ip, cg, pref, size, rsize); if (result) return (result); /* @@ -1298,7 +1309,7 @@ static ufs2_daddr_t cg += i; if (cg >= fs->fs_ncg) cg -= fs->fs_ncg; - result = (*allocator)(ip, cg, 0, size); + result = (*allocator)(ip, cg, 0, size, rsize); if (result) return (result); } @@ -1309,7 +1320,7 @@ static ufs2_daddr_t */ cg = (icg + 2) % fs->fs_ncg; for (i = 2; i < fs->fs_ncg; i++) { - result = (*allocator)(ip, cg, 0, size); + result = (*allocator)(ip, cg, 0, size, rsize); if (result) return (result); cg++; @@ -1391,7 +1402,8 @@ ffs_fragextend(ip, cg, bprev, osize, nsize) ACTIVECLEAR(fs, cg); UFS_UNLOCK(ump); if (DOINGSOFTDEP(ITOV(ip))) - softdep_setup_blkmapdep(bp, UFSTOVFS(ump), bprev); + softdep_setup_blkmapdep(bp, UFSTOVFS(ump), bprev, + frags, numfrags(fs, osize)); bdwrite(bp); return (bprev); @@ -1409,11 +1421,12 @@ fail: * and if it is, allocate it. */ static ufs2_daddr_t -ffs_alloccg(ip, cg, bpref, size) +ffs_alloccg(ip, cg, bpref, size, rsize) struct inode *ip; int cg; ufs2_daddr_t bpref; int size; + int rsize; { struct fs *fs; struct cg *cgp; @@ -1441,7 +1454,7 @@ static ufs2_daddr_t cgp->cg_old_time = cgp->cg_time = time_second; if (size == fs->fs_bsize) { UFS_LOCK(ump); - blkno = ffs_alloccgblk(ip, bp, bpref); + blkno = ffs_alloccgblk(ip, bp, bpref, rsize); ACTIVECLEAR(fs, cg); UFS_UNLOCK(ump); bdwrite(bp); @@ -1465,21 +1478,14 @@ static ufs2_daddr_t if (cgp->cg_cs.cs_nbfree == 0) goto fail; UFS_LOCK(ump); - blkno = ffs_alloccgblk(ip, bp, bpref); - bno = dtogd(fs, blkno); - for (i = frags; i < fs->fs_frag; i++) - setbit(blksfree, bno + i); - i = fs->fs_frag - frags; - cgp->cg_cs.cs_nffree += i; - fs->fs_cstotal.cs_nffree += i; - fs->fs_cs(fs, cg).cs_nffree += i; - fs->fs_fmod = 1; - cgp->cg_frsum[i]++; + blkno = ffs_alloccgblk(ip, bp, bpref, rsize); ACTIVECLEAR(fs, cg); UFS_UNLOCK(ump); bdwrite(bp); return (blkno); } + KASSERT(size == rsize, + ("ffs_alloccg: size(%d) != rsize(%d)", size, rsize)); bno = ffs_mapsearch(fs, cgp, bpref, allocsiz); if (bno < 0) goto fail; @@ -1497,7 +1503,7 @@ static ufs2_daddr_t ACTIVECLEAR(fs, cg); UFS_UNLOCK(ump); if (DOINGSOFTDEP(ITOV(ip))) - softdep_setup_blkmapdep(bp, UFSTOVFS(ump), blkno); + softdep_setup_blkmapdep(bp, UFSTOVFS(ump), blkno, frags, 0); bdwrite(bp); return (blkno); @@ -1519,10 +1525,11 @@ fail: * blocks may be fragmented by the routine that allocates them. */ static ufs2_daddr_t -ffs_alloccgblk(ip, bp, bpref) +ffs_alloccgblk(ip, bp, bpref, size) struct inode *ip; struct buf *bp; ufs2_daddr_t bpref; + int size; { struct fs *fs; struct cg *cgp; @@ -1530,6 +1537,7 @@ static ufs2_daddr_t ufs1_daddr_t bno; ufs2_daddr_t blkno; u_int8_t *blksfree; + int i; fs = ip->i_fs; ump = ip->i_ump; @@ -1557,16 +1565,32 @@ static ufs2_daddr_t gotit: blkno = fragstoblks(fs, bno); ffs_clrblock(fs, blksfree, (long)blkno); - ffs_clusteracct(ump, fs, cgp, blkno, -1); + ffs_clusteracct(fs, cgp, blkno, -1); cgp->cg_cs.cs_nbfree--; fs->fs_cstotal.cs_nbfree--; fs->fs_cs(fs, cgp->cg_cgx).cs_nbfree--; fs->fs_fmod = 1; blkno = cgbase(fs, cgp->cg_cgx) + bno; + /* + * If the caller didn't want the whole block free the frags here. + */ + size = numfrags(fs, size); + if (size != fs->fs_frag) { + bno = dtogd(fs, blkno); + for (i = size; i < fs->fs_frag; i++) + setbit(blksfree, bno + i); + i = fs->fs_frag - size; + cgp->cg_cs.cs_nffree += i; + fs->fs_cstotal.cs_nffree += i; + fs->fs_cs(fs, cgp->cg_cgx).cs_nffree += i; + fs->fs_fmod = 1; + cgp->cg_frsum[i]++; + } /* XXX Fixme. */ UFS_UNLOCK(ump); if (DOINGSOFTDEP(ITOV(ip))) - softdep_setup_blkmapdep(bp, UFSTOVFS(ump), blkno); + softdep_setup_blkmapdep(bp, UFSTOVFS(ump), blkno, + size, 0); UFS_LOCK(ump); return (blkno); } @@ -1579,11 +1603,12 @@ gotit: * take the first one that we find following bpref. */ static ufs2_daddr_t -ffs_clusteralloc(ip, cg, bpref, len) +ffs_clusteralloc(ip, cg, bpref, len, unused) struct inode *ip; int cg; ufs2_daddr_t bpref; int len; + int unused; { struct fs *fs; struct cg *cgp; @@ -1679,7 +1704,7 @@ static ufs2_daddr_t len = blkstofrags(fs, len); UFS_LOCK(ump); for (i = 0; i < len; i += fs->fs_frag) - if (ffs_alloccgblk(ip, bp, bno + i) != bno + i) + if (ffs_alloccgblk(ip, bp, bno + i, fs->fs_bsize) != bno + i) panic("ffs_clusteralloc: lost block"); ACTIVECLEAR(fs, cg); UFS_UNLOCK(ump); @@ -1703,11 +1728,12 @@ fail: * inode in the specified cylinder group. */ static ufs2_daddr_t -ffs_nodealloccg(ip, cg, ipref, mode) +ffs_nodealloccg(ip, cg, ipref, mode, unused) struct inode *ip; int cg; ufs2_daddr_t ipref; int mode; + int unused; { struct fs *fs; struct cg *cgp; @@ -1810,28 +1836,6 @@ gotit: } /* - * check if a block is free - */ -static int -ffs_isfreeblock(struct fs *fs, u_char *cp, ufs1_daddr_t h) -{ - - switch ((int)fs->fs_frag) { - case 8: - return (cp[h] == 0); - case 4: - return ((cp[h >> 1] & (0x0f << ((h & 0x1) << 2))) == 0); - case 2: - return ((cp[h >> 2] & (0x03 << ((h & 0x3) << 1))) == 0); - case 1: - return ((cp[h >> 3] & (0x01 << (h & 0x7))) == 0); - default: - panic("ffs_isfreeblock"); - } - return (0); -} - -/* * Free a block or fragment. * * The specified block or fragment is placed back in the @@ -1839,13 +1843,14 @@ gotit: * block reassembly is checked. */ void -ffs_blkfree(ump, fs, devvp, bno, size, inum) +ffs_blkfree(ump, fs, devvp, bno, size, inum, dephd) struct ufsmount *ump; struct fs *fs; struct vnode *devvp; ufs2_daddr_t bno; long size; ino_t inum; + struct workhead *dephd; { struct cg *cgp; struct buf *bp; @@ -1912,7 +1917,7 @@ void panic("ffs_blkfree: freeing free block"); } ffs_setblock(fs, blksfree, fragno); - ffs_clusteracct(ump, fs, cgp, fragno, 1); + ffs_clusteracct(fs, cgp, fragno, 1); cgp->cg_cs.cs_nbfree++; fs->fs_cstotal.cs_nbfree++; fs->fs_cs(fs, cg).cs_nbfree++; @@ -1952,7 +1957,7 @@ void cgp->cg_cs.cs_nffree -= fs->fs_frag; fs->fs_cstotal.cs_nffree -= fs->fs_frag; fs->fs_cs(fs, cg).cs_nffree -= fs->fs_frag; - ffs_clusteracct(ump, fs, cgp, fragno, 1); + ffs_clusteracct(fs, cgp, fragno, 1); cgp->cg_cs.cs_nbfree++; fs->fs_cstotal.cs_nbfree++; fs->fs_cs(fs, cg).cs_nbfree++; @@ -1961,6 +1966,9 @@ void fs->fs_fmod = 1; ACTIVECLEAR(fs, cg); UFS_UNLOCK(ump); + if (UFSTOVFS(ump)->mnt_flag & MNT_SOFTDEP) + softdep_setup_blkfree(UFSTOVFS(ump), bp, bno, + numfrags(fs, size), dephd); bdwrite(bp); } @@ -2031,7 +2039,8 @@ ffs_vfree(pvp, ino, mode) return (0); } ip = VTOI(pvp); - return (ffs_freefile(ip->i_ump, ip->i_fs, ip->i_devvp, ino, mode)); + return (ffs_freefile(ip->i_ump, ip->i_fs, ip->i_devvp, ino, mode, + NULL)); } /* @@ -2039,12 +2048,13 @@ ffs_vfree(pvp, ino, mode) * The specified inode is placed back in the free map. */ int -ffs_freefile(ump, fs, devvp, ino, mode) +ffs_freefile(ump, fs, devvp, ino, mode, wkhd) struct ufsmount *ump; struct fs *fs; struct vnode *devvp; ino_t ino; int mode; + struct workhead *wkhd; { struct cg *cgp; struct buf *bp; @@ -2100,6 +2110,9 @@ int fs->fs_fmod = 1; ACTIVECLEAR(fs, cg); UFS_UNLOCK(ump); + if (UFSTOVFS(ump)->mnt_flag & MNT_SOFTDEP) + softdep_setup_inofree(UFSTOVFS(ump), bp, + ino + cg * fs->fs_ipg, wkhd); bdwrite(bp); return (0); } @@ -2213,101 +2226,6 @@ ffs_mapsearch(fs, cgp, bpref, allocsiz) } /* - * Update the cluster map because of an allocation or free. - * - * Cnt == 1 means free; cnt == -1 means allocating. - */ -void -ffs_clusteracct(ump, fs, cgp, blkno, cnt) - struct ufsmount *ump; - struct fs *fs; - struct cg *cgp; - ufs1_daddr_t blkno; - int cnt; -{ - int32_t *sump; - int32_t *lp; - u_char *freemapp, *mapp; - int i, start, end, forw, back, map, bit; - - mtx_assert(UFS_MTX(ump), MA_OWNED); - - if (fs->fs_contigsumsize <= 0) - return; - freemapp = cg_clustersfree(cgp); - sump = cg_clustersum(cgp); - /* - * Allocate or clear the actual block. - */ - if (cnt > 0) - setbit(freemapp, blkno); - else - clrbit(freemapp, blkno); - /* - * Find the size of the cluster going forward. - */ - start = blkno + 1; - end = start + fs->fs_contigsumsize; - if (end >= cgp->cg_nclusterblks) - end = cgp->cg_nclusterblks; - mapp = &freemapp[start / NBBY]; - map = *mapp++; - bit = 1 << (start % NBBY); - for (i = start; i < end; i++) { - if ((map & bit) == 0) - break; - if ((i & (NBBY - 1)) != (NBBY - 1)) { - bit <<= 1; - } else { - map = *mapp++; - bit = 1; - } - } - forw = i - start; - /* - * Find the size of the cluster going backward. - */ - start = blkno - 1; - end = start - fs->fs_contigsumsize; - if (end < 0) - end = -1; - mapp = &freemapp[start / NBBY]; - map = *mapp--; - bit = 1 << (start % NBBY); - for (i = start; i > end; i--) { - if ((map & bit) == 0) - break; - if ((i & (NBBY - 1)) != 0) { - bit >>= 1; - } else { - map = *mapp--; - bit = 1 << (NBBY - 1); - } - } - back = start - i; - /* - * Account for old cluster and the possibly new forward and - * back clusters. - */ - i = back + forw + 1; - if (i > fs->fs_contigsumsize) - i = fs->fs_contigsumsize; - sump[i] += cnt; - if (back > 0) - sump[back] -= cnt; - if (forw > 0) - sump[forw] -= cnt; - /* - * Update cluster summary information. - */ - lp = &sump[fs->fs_contigsumsize]; - for (i = fs->fs_contigsumsize; i > 0; i--) - if (*lp-- > 0) - break; - fs->fs_maxcluster[cgp->cg_cgx] = i; -} - -/* * Fserr prints the name of a filesystem with an error diagnostic. * * The form of the error message is: @@ -2505,7 +2423,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) #endif /* DEBUG */ while (cmd.size > 0) { if ((error = ffs_freefile(ump, fs, ump->um_devvp, - cmd.value, filetype))) + cmd.value, filetype, NULL))) break; cmd.size -= 1; cmd.value += 1; @@ -2533,7 +2451,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) if (blksize > blkcnt) blksize = blkcnt; ffs_blkfree(ump, fs, ump->um_devvp, blkno, - blksize * fs->fs_fsize, ROOTINO); + blksize * fs->fs_fsize, ROOTINO, NULL); blkno += blksize; blkcnt -= blksize; blksize = fs->fs_frag; Index: /usr/src/sys/ufs/ffs/ffs_extern.h =================================================================== --- /usr/src/sys/ufs/ffs/ffs_extern.h (revision 200565) +++ /usr/src/sys/ufs/ffs/ffs_extern.h (working copy) @@ -56,18 +56,20 @@ int ffs_balloc_ufs2(struct vnode *a_vp, off_t a_st struct ucred *a_cred, int a_flags, struct buf **a_bpp); int ffs_blkatoff(struct vnode *, off_t, char **, struct buf **); void ffs_blkfree(struct ufsmount *, struct fs *, struct vnode *, - ufs2_daddr_t, long, ino_t); + ufs2_daddr_t, long, ino_t, struct workhead *); ufs2_daddr_t ffs_blkpref_ufs1(struct inode *, ufs_lbn_t, int, ufs1_daddr_t *); ufs2_daddr_t ffs_blkpref_ufs2(struct inode *, ufs_lbn_t, int, ufs2_daddr_t *); int ffs_checkfreefile(struct fs *, struct vnode *, ino_t); void ffs_clrblock(struct fs *, u_char *, ufs1_daddr_t); +void ffs_clusteracct(struct fs *, struct cg *, ufs1_daddr_t, int); void ffs_bdflush(struct bufobj *, struct buf *); int ffs_copyonwrite(struct vnode *, struct buf *); int ffs_flushfiles(struct mount *, int, struct thread *); void ffs_fragacct(struct fs *, int, int32_t [], int); int ffs_freefile(struct ufsmount *, struct fs *, struct vnode *, ino_t, - int); + int, struct workhead *); int ffs_isblock(struct fs *, u_char *, ufs1_daddr_t); +int ffs_isfreeblock(struct fs *, u_char *, ufs1_daddr_t); void ffs_load_inode(struct buf *, struct inode *, struct fs *, ino_t); int ffs_mountroot(void); int ffs_reallocblks(struct vop_reallocblks_args *); @@ -108,7 +110,7 @@ void softdep_initialize(void); void softdep_uninitialize(void); int softdep_mount(struct vnode *, struct mount *, struct fs *, struct ucred *); -void softdep_move_dependencies(struct buf *, struct buf *); +int softdep_move_dependencies(struct buf *, struct buf *); int softdep_flushworklist(struct mount *, int *, struct thread *); int softdep_flushfiles(struct mount *, int, struct thread *); void softdep_update_inodeblock(struct inode *, struct buf *, int); @@ -117,15 +119,21 @@ void softdep_freefile(struct vnode *, ino_t, int); int softdep_request_cleanup(struct fs *, struct vnode *); void softdep_setup_freeblocks(struct inode *, off_t, int); void softdep_setup_inomapdep(struct buf *, struct inode *, ino_t); -void softdep_setup_blkmapdep(struct buf *, struct mount *, ufs2_daddr_t); -void softdep_setup_allocdirect(struct inode *, ufs_lbn_t, ufs2_daddr_t, +void softdep_setup_blkmapdep(struct buf *, struct mount *, ufs2_daddr_t, + int, int); +void softdep_setup_allocdirect(struct inode *, int, ufs_lbn_t, ufs2_daddr_t, ufs2_daddr_t, long, long, struct buf *); void softdep_setup_allocext(struct inode *, ufs_lbn_t, ufs2_daddr_t, ufs2_daddr_t, long, long, struct buf *); void softdep_setup_allocindir_meta(struct buf *, struct inode *, - struct buf *, int, ufs2_daddr_t); -void softdep_setup_allocindir_page(struct inode *, ufs_lbn_t, - struct buf *, int, ufs2_daddr_t, ufs2_daddr_t, struct buf *); + struct buf *, struct indir *, int, ufs2_daddr_t); +void softdep_setup_allocindir_page(struct inode *, struct buf *, + struct indir *, int, ufs_lbn_t, ufs2_daddr_t, ufs2_daddr_t, + struct buf *); +void softdep_setup_blkfree(struct mount *, struct buf *, ufs2_daddr_t, int, + struct workhead *); +void softdep_setup_inofree(struct mount *, struct buf *, ino_t, + struct workhead *); void softdep_fsync_mountdev(struct vnode *); int softdep_sync_metadata(struct vnode *); int softdep_process_worklist(struct mount *, int); Index: /usr/src/sys/ufs/ffs/ffs_subr.c =================================================================== --- /usr/src/sys/ufs/ffs/ffs_subr.c (revision 200565) +++ /usr/src/sys/ufs/ffs/ffs_subr.c (working copy) @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #ifndef _KERNEL #include #include -#include "fsck.h" #else #include #include @@ -223,12 +222,43 @@ ffs_isblock(fs, cp, h) mask = 0x01 << (h & 0x7); return ((cp[h >> 3] & mask) == mask); default: +#ifdef _KERNEL panic("ffs_isblock"); +#endif + break; } return (0); } /* + * check if a block is free + */ +int +ffs_isfreeblock(fs, cp, h) + struct fs *fs; + u_char *cp; + ufs1_daddr_t h; +{ + + switch ((int)fs->fs_frag) { + case 8: + return (cp[h] == 0); + case 4: + return ((cp[h >> 1] & (0x0f << ((h & 0x1) << 2))) == 0); + case 2: + return ((cp[h >> 2] & (0x03 << ((h & 0x3) << 1))) == 0); + case 1: + return ((cp[h >> 3] & (0x01 << (h & 0x7))) == 0); + default: +#ifdef _KERNEL + panic("ffs_isfreeblock"); +#endif + break; + } + return (0); +} + +/* * take a block out of the map */ void @@ -252,7 +282,10 @@ ffs_clrblock(fs, cp, h) cp[h >> 3] &= ~(0x01 << (h & 0x7)); return; default: +#ifdef _KERNEL panic("ffs_clrblock"); +#endif + break; } } @@ -281,6 +314,101 @@ ffs_setblock(fs, cp, h) cp[h >> 3] |= (0x01 << (h & 0x7)); return; default: +#ifdef _KERNEL panic("ffs_setblock"); +#endif + break; } } + +/* + * Update the cluster map because of an allocation or free. + * + * Cnt == 1 means free; cnt == -1 means allocating. + */ +void +ffs_clusteracct(fs, cgp, blkno, cnt) + struct fs *fs; + struct cg *cgp; + ufs1_daddr_t blkno; + int cnt; +{ + int32_t *sump; + int32_t *lp; + u_char *freemapp, *mapp; + int i, start, end, forw, back, map, bit; + + if (fs->fs_contigsumsize <= 0) + return; + freemapp = cg_clustersfree(cgp); + sump = cg_clustersum(cgp); + /* + * Allocate or clear the actual block. + */ + if (cnt > 0) + setbit(freemapp, blkno); + else + clrbit(freemapp, blkno); + /* + * Find the size of the cluster going forward. + */ + start = blkno + 1; + end = start + fs->fs_contigsumsize; + if (end >= cgp->cg_nclusterblks) + end = cgp->cg_nclusterblks; + mapp = &freemapp[start / NBBY]; + map = *mapp++; + bit = 1 << (start % NBBY); + for (i = start; i < end; i++) { + if ((map & bit) == 0) + break; + if ((i & (NBBY - 1)) != (NBBY - 1)) { + bit <<= 1; + } else { + map = *mapp++; + bit = 1; + } + } + forw = i - start; + /* + * Find the size of the cluster going backward. + */ + start = blkno - 1; + end = start - fs->fs_contigsumsize; + if (end < 0) + end = -1; + mapp = &freemapp[start / NBBY]; + map = *mapp--; + bit = 1 << (start % NBBY); + for (i = start; i > end; i--) { + if ((map & bit) == 0) + break; + if ((i & (NBBY - 1)) != 0) { + bit >>= 1; + } else { + map = *mapp--; + bit = 1 << (NBBY - 1); + } + } + back = start - i; + /* + * Account for old cluster and the possibly new forward and + * back clusters. + */ + i = back + forw + 1; + if (i > fs->fs_contigsumsize) + i = fs->fs_contigsumsize; + sump[i] += cnt; + if (back > 0) + sump[back] -= cnt; + if (forw > 0) + sump[forw] -= cnt; + /* + * Update cluster summary information. + */ + lp = &sump[fs->fs_contigsumsize]; + for (i = fs->fs_contigsumsize; i > 0; i--) + if (*lp-- > 0) + break; + fs->fs_maxcluster[cgp->cg_cgx] = i; +} Index: /usr/src/sys/ufs/ffs/softdep.h =================================================================== --- /usr/src/sys/ufs/ffs/softdep.h (revision 200565) +++ /usr/src/sys/ufs/ffs/softdep.h (working copy) @@ -98,18 +98,20 @@ #define UNDONE 0x0002 #define COMPLETE 0x0004 #define DEPCOMPLETE 0x0008 -#define MKDIR_PARENT 0x0010 /* diradd & mkdir only */ -#define MKDIR_BODY 0x0020 /* diradd & mkdir only */ +#define MKDIR_PARENT 0x0010 /* diradd, mkdir, jaddref, jsegdep only */ +#define MKDIR_BODY 0x0020 /* diradd, mkdir, jaddref only */ #define RMDIR 0x0040 /* dirrem only */ -#define DIRCHG 0x0080 /* diradd & dirrem only */ -#define GOINGAWAY 0x0100 /* indirdep only */ -#define IOSTARTED 0x0200 /* inodedep & pagedep only */ +#define DIRCHG 0x0080 /* diradd, dirrem only */ +#define GOINGAWAY 0x0100 /* indirdep, jremref only */ +#define IOSTARTED 0x0200 /* inodedep, pagedep, bmsafemap only */ #define SPACECOUNTED 0x0400 /* inodedep only */ -#define NEWBLOCK 0x0800 /* pagedep only */ +#define NEWBLOCK 0x0800 /* pagedep, jaddref only */ #define INPROGRESS 0x1000 /* dirrem, freeblks, freefrag, freefile only */ #define UFS1FMT 0x2000 /* indirdep only */ #define EXTDATA 0x4000 /* allocdirect only */ #define ONWORKLIST 0x8000 +#define IOWAITING 0x10000 /* Thread is waiting for IO to complete. */ +#define ONDEPLIST 0x20000 /* Structure is on a dependency list. */ #define ALLCOMPLETE (ATTACHED | COMPLETE | DEPCOMPLETE) @@ -135,10 +137,10 @@ * and the macros below changed to use it. */ struct worklist { + LIST_ENTRY(worklist) wk_list; /* list of work requests */ struct mount *wk_mp; /* Mount we live in */ - LIST_ENTRY(worklist) wk_list; /* list of work requests */ - unsigned short wk_type; /* type of request */ - unsigned short wk_state; /* state flags */ + unsigned int wk_type:8, /* type of request */ + wk_state:24; /* state flags */ }; #define WK_DATA(wk) ((void *)(wk)) #define WK_PAGEDEP(wk) ((struct pagedep *)(wk)) @@ -149,11 +151,20 @@ struct worklist { #define WK_ALLOCINDIR(wk) ((struct allocindir *)(wk)) #define WK_FREEFRAG(wk) ((struct freefrag *)(wk)) #define WK_FREEBLKS(wk) ((struct freeblks *)(wk)) +#define WK_FREEWORK(wk) ((struct freework *)(wk)) #define WK_FREEFILE(wk) ((struct freefile *)(wk)) #define WK_DIRADD(wk) ((struct diradd *)(wk)) #define WK_MKDIR(wk) ((struct mkdir *)(wk)) #define WK_DIRREM(wk) ((struct dirrem *)(wk)) #define WK_NEWDIRBLK(wk) ((struct newdirblk *)(wk)) +#define WK_JADDREF(wk) ((struct jaddref *)(wk)) +#define WK_JREMREF(wk) ((struct jremref *)(wk)) +#define WK_JSEGDEP(wk) ((struct jsegdep *)(wk)) +#define WK_JSEG(wk) ((struct jseg *)(wk)) +#define WK_JNEWBLK(wk) ((struct jnewblk *)(wk)) +#define WK_JFREEBLK(wk) ((struct jfreeblk *)(wk)) +#define WK_FREEDEP(wk) ((struct freedep *)(wk)) +#define WK_JFREEFRAG(wk) ((struct jfreefrag *)(wk)) /* * Various types of lists @@ -165,6 +176,13 @@ LIST_HEAD(inodedephd, inodedep); LIST_HEAD(allocindirhd, allocindir); LIST_HEAD(allocdirecthd, allocdirect); TAILQ_HEAD(allocdirectlst, allocdirect); +LIST_HEAD(indirdephd, indirdep); +LIST_HEAD(jremrefhd, jremref); +LIST_HEAD(jaddrefhd, jaddref); +LIST_HEAD(jnewblkhd, jnewblk); +LIST_HEAD(jfreeblkhd, jfreeblk); +LIST_HEAD(freeworkhd, freework); +TAILQ_HEAD(jseglst, jseg); /* * The "pagedep" structure tracks the various dependencies related to @@ -252,7 +270,9 @@ struct inodedep { ino_t id_ino; /* dependent inode */ nlink_t id_nlinkdelta; /* saved effective link count */ LIST_ENTRY(inodedep) id_deps; /* bmsafemap's list of inodedep's */ - struct buf *id_buf; /* related bmsafemap (if pending) */ + struct bmsafemap *id_bmsafemap; /* related bmsafemap (if pending) */ + struct diradd *id_mkdiradd; /* diradd for a mkdir. */ + struct jaddrefhd id_jaddrefhd; /* Journal add refs pending. */ long id_savedextsize; /* ext size saved during rollback */ off_t id_savedsize; /* file size saved during rollback */ struct workhead id_pendinghd; /* entries awaiting directory write */ @@ -262,6 +282,7 @@ struct inodedep { struct allocdirectlst id_newinoupdt; /* updates when inode written */ struct allocdirectlst id_extupdt; /* extdata updates pre-inode write */ struct allocdirectlst id_newextupdt; /* extdata updates at ino write */ + struct indirdephd id_indirdephd; /* Pending indirdeps. */ union { struct ufs1_dinode *idu_savedino1; /* saved ufs1_dinode contents */ struct ufs2_dinode *idu_savedino2; /* saved ufs2_dinode contents */ @@ -283,8 +304,10 @@ struct newblk { struct fs *nb_fs; /* associated filesystem */ int nb_state; /* state of bitmap dependency */ ufs2_daddr_t nb_newblkno; /* allocated block number */ + /* XXX nb_deps not needed with journaling. */ LIST_ENTRY(newblk) nb_deps; /* bmsafemap's list of newblk's */ struct bmsafemap *nb_bmsafemap; /* associated bmsafemap */ + struct jnewblk *nb_jnewblk; /* Journal entry. */ }; /* @@ -299,11 +322,21 @@ struct newblk { */ struct bmsafemap { struct worklist sm_list; /* cylgrp buffer */ +# define sm_state sm_list.wk_state + int sm_cg; + LIST_ENTRY(bmsafemap) sm_hash; /* Hash links. */ struct buf *sm_buf; /* associated buffer */ struct allocdirecthd sm_allocdirecthd; /* allocdirect deps */ + struct allocdirecthd sm_allocdirectwr; /* writing allocdirect deps */ struct allocindirhd sm_allocindirhd; /* allocindir deps */ + struct allocindirhd sm_allocindirwr; /* writing allocindir deps */ struct inodedephd sm_inodedephd; /* inodedep deps */ - struct newblkhd sm_newblkhd; /* newblk deps */ + struct inodedephd sm_inodedepwr; /* writing inodedep deps */ + /* XXX newblk* not needed with journaling. */ + struct newblkhd sm_newblkhd; /* newblk deps, unused with journal */ + struct newblkhd sm_newblkwr; /* writing newblk deps */ + struct jaddrefhd sm_jaddrefhd; /* Pending inode allocations. */ + struct jnewblkhd sm_jnewblkhd; /* Pending block allocations. */ }; /* @@ -337,16 +370,18 @@ struct allocdirect { struct worklist ad_list; /* buffer holding block */ # define ad_state ad_list.wk_state /* block pointer state */ TAILQ_ENTRY(allocdirect) ad_next; /* inodedep's list of allocdirect's */ - ufs_lbn_t ad_lbn; /* block within file */ + int ad_offset; /* inode disk address offset */ ufs2_daddr_t ad_newblkno; /* new value of block pointer */ ufs2_daddr_t ad_oldblkno; /* old value of block pointer */ long ad_newsize; /* size of new block */ long ad_oldsize; /* size of old block */ LIST_ENTRY(allocdirect) ad_deps; /* bmsafemap's list of allocdirect's */ - struct buf *ad_buf; /* cylgrp buffer (if pending) */ + struct bmsafemap *ad_bmsafemap;/* cylgrp dep (if pending) */ struct inodedep *ad_inodedep; /* associated inodedep */ struct freefrag *ad_freefrag; /* fragment to be freed (if any) */ struct workhead ad_newdirblk; /* dir block to notify when written */ + struct jnewblk *ad_jnewblk; /* New block journal entry. */ + struct workhead ad_jwork; /* Journal work pending. */ }; /* @@ -369,10 +404,17 @@ struct allocdirect { struct indirdep { struct worklist ir_list; /* buffer holding indirect block */ # define ir_state ir_list.wk_state /* indirect block pointer state */ - caddr_t ir_saveddata; /* buffer cache contents */ + LIST_ENTRY(indirdep) ir_next; /* inodedep's list of indirdeps */ + LIST_ENTRY(indirdep) ir_sibling; /* indirdep's list of indirdeps */ + struct indirdep *ir_parent; /* Backpointer to parent. */ + ufs_lbn_t ir_lbn; /* Our lbn. */ + caddr_t ir_saveddata; /* buffer cache contents */ + struct inodedep *ir_inodedep; /* Inode containing dependency. */ struct buf *ir_savebp; /* buffer holding safe copy */ + struct indirdephd ir_children; /* Children indirect blocks. */ struct allocindirhd ir_donehd; /* done waiting to update safecopy */ struct allocindirhd ir_deplisthd; /* allocindir deps for this block */ + struct workhead ir_jwork; /* Journal work pending. */ }; /* @@ -398,7 +440,9 @@ struct allocindir { struct freefrag *ai_freefrag; /* block to be freed when complete */ struct indirdep *ai_indirdep; /* address of associated indirdep */ LIST_ENTRY(allocindir) ai_deps; /* bmsafemap's list of allocindir's */ - struct buf *ai_buf; /* cylgrp buffer (if pending) */ + struct bmsafemap *ai_bmsafemap;/* cylgrp dep (if pending) */ + struct jnewblk *ai_jnewblk; /* New block journal entry. */ + struct workhead ai_jwork; /* Journal work pending. */ }; /* @@ -406,14 +450,13 @@ struct allocindir { * allocated fragment is replaced with a larger fragment, rather than extended. * The "freefrag" structure is constructed and attached when the replacement * block is first allocated. It is processed after the inode claiming the - * bigger block that replaces it has been written to disk. Note that the - * ff_state field is is used to store the uid, so may lose data. However, - * the uid is used only in printing an error message, so is not critical. - * Keeping it in a short keeps the data structure down to 32 bytes. + * bigger block that replaces it has been written to disk. */ struct freefrag { struct worklist ff_list; /* id_inowait or delayed worklist */ -# define ff_state ff_list.wk_state /* owning user; should be uid_t */ +# define ff_state ff_list.wk_state + struct jfreefrag *ff_jfreefrag; /* Associated journal entry. */ + struct workhead ff_jwork; /* Journal work pending. */ ufs2_daddr_t ff_blkno; /* fragment physical block number */ long ff_fragsize; /* size of fragment being deleted */ ino_t ff_inum; /* owning inode number */ @@ -423,23 +466,59 @@ struct freefrag { * A "freeblks" structure is attached to an "inodedep" when the * corresponding file's length is reduced to zero. It records all * the information needed to free the blocks of a file after its - * zero'ed inode has been written to disk. + * zero'ed inode has been written to disk. The actual work is done + * by child freework structures which are responsible for individual + * inode pointers while freeblks is responsible for retiring the + * entire operation when it is complete and holding common members. */ struct freeblks { struct worklist fb_list; /* id_inowait or delayed worklist */ # define fb_state fb_list.wk_state /* inode and dirty block state */ + struct jfreeblkhd fb_jfreeblkhd; /* Journal entries pending */ + struct workhead fb_freeworkhd; /* Work items pending */ + struct workhead fb_jwork; /* Journal work pending */ ino_t fb_previousinum; /* inode of previous owner of blocks */ uid_t fb_uid; /* uid of previous owner of blocks */ struct vnode *fb_devvp; /* filesystem device vnode */ - long fb_oldextsize; /* previous ext data size */ - off_t fb_oldsize; /* previous file size */ ufs2_daddr_t fb_chkcnt; /* used to check cnt of blks released */ - ufs2_daddr_t fb_dblks[NDADDR]; /* direct blk ptrs to deallocate */ - ufs2_daddr_t fb_iblks[NIADDR]; /* indirect blk ptrs to deallocate */ - ufs2_daddr_t fb_eblks[NXADDR]; /* indirect blk ptrs to deallocate */ + int fb_ref; /* Children outstanding. */ }; /* + * A "freework" structure handles the release of a tree of blocks or a single + * block. Each indirect block in a tree is allocated its own freework + * structure so that the indrect block may be freed only when all of its + * children are freed. In this way we enforce the rule that an allocated + * block must have a valid path to a root that is journaled. Each child + * block acquires a reference and when the ref hits zero the parent ref + * is decremented. If there is no parent the freeblks ref is decremented. + */ +struct freework { + struct worklist fw_list; +# define fw_state fw_list.wk_state + LIST_ENTRY(freework) fw_next; /* Queue for freeblksk. */ + struct freeblks *fw_freeblks; /* Root of operation. */ + struct freework *fw_parent; /* Parent indirect. */ + ufs2_daddr_t fw_blkno; /* Our block #. */ + ufs_lbn_t fw_lbn; /* Original lbn before free. */ + int fw_frags; /* Number of frags. */ + int fw_ref; /* Number of children out. */ + struct workhead fw_jwork; /* Journal work pending. */ +}; + +/* + * A "freedep" structure is allocated to track the completion of a bitmap + * write for a freework. One freedep may cover many freed blocks so long + * as they reside in the same cylinder group. When the cg is written + * the freedep decrements the ref on the freework which may permit it + * to be freed as well. + */ +struct freedep { + struct worklist fd_list; + struct freework *fd_freework; /* Parent freework. */ +}; + +/* * A "freefile" structure is attached to an inode when its * link count is reduced to zero. It marks the inode as free in * the cylinder group map after the zero'ed inode has been written @@ -450,6 +529,7 @@ struct freefile { mode_t fx_mode; /* mode of inode */ ino_t fx_oldinum; /* inum of the unlinked file */ struct vnode *fx_devvp; /* filesystem device vnode */ + struct workhead fx_jwork; /* journal work pending. */ }; /* @@ -482,12 +562,11 @@ struct freefile { * than zero. * * The overlaying of da_pagedep and da_previous is done to keep the - * structure down to 32 bytes in size on a 32-bit machine. If a - * da_previous entry is present, the pointer to its pagedep is available - * in the associated dirrem entry. If the DIRCHG flag is set, the - * da_previous entry is valid; if not set the da_pagedep entry is valid. - * The DIRCHG flag never changes; it is set when the structure is created - * if appropriate and is never cleared. + * structure down. If a da_previous entry is present, the pointer to its + * pagedep is available in the associated dirrem entry. If the DIRCHG flag + * is set, the da_previous entry is valid; if not set the da_pagedep entry + * is valid. The DIRCHG flag never changes; it is set when the structure + * is created if appropriate and is never cleared. */ struct diradd { struct worklist da_list; /* id_inowait or id_pendinghd list */ @@ -499,6 +578,7 @@ struct diradd { struct dirrem *dau_previous; /* entry being replaced in dir change */ struct pagedep *dau_pagedep; /* pagedep dependency for addition */ } da_un; + struct workhead da_jwork; /* Journal work awaiting completion. */ }; #define da_previous da_un.dau_previous #define da_pagedep da_un.dau_pagedep @@ -525,12 +605,13 @@ struct diradd { * mkdir structures that reference it. The deletion would be faster if the * diradd structure were simply augmented to have two pointers that referenced * the associated mkdir's. However, this would increase the size of the diradd - * structure from 32 to 64-bits to speed a very infrequent operation. + * structure to speed a very infrequent operation. */ struct mkdir { struct worklist md_list; /* id_inowait or buffer holding dir */ # define md_state md_list.wk_state /* type: MKDIR_PARENT or MKDIR_BODY */ struct diradd *md_diradd; /* associated diradd */ + struct jaddref *md_jaddref; /* dependent jaddref. */ struct buf *md_buf; /* MKDIR_BODY: buffer holding dir */ LIST_ENTRY(mkdir) md_mkdirs; /* list of all mkdirs */ }; @@ -542,20 +623,18 @@ LIST_HEAD(mkdirlist, mkdir) mkdirlisthd; * list of the pagedep for the directory page that contains the entry. * It is processed after the directory page with the deleted entry has * been written to disk. - * - * The overlaying of dm_pagedep and dm_dirinum is done to keep the - * structure down to 32 bytes in size on a 32-bit machine. It works - * because they are never used concurrently. */ struct dirrem { struct worklist dm_list; /* delayed worklist */ # define dm_state dm_list.wk_state /* state of the old directory entry */ LIST_ENTRY(dirrem) dm_next; /* pagedep's list of dirrem's */ + struct jremrefhd dm_jremrefhd; /* Pending remove reference deps. */ ino_t dm_oldinum; /* inum of the removed dir entry */ union { struct pagedep *dmu_pagedep; /* pagedep dependency for remove */ ino_t dmu_dirinum; /* parent inode number (for rmdir) */ } dm_un; + struct workhead dm_jwork; /* Journal work awaiting completion. */ }; #define dm_pagedep dm_un.dmu_pagedep #define dm_dirinum dm_un.dmu_dirinum @@ -577,9 +656,156 @@ struct dirrem { * blocks using a similar scheme with the allocindir structures. Rather * than adding this level of complexity, we simply write those newly * allocated indirect blocks synchronously as such allocations are rare. + * In the case of a new directory the . and .. links are tracked with + * a mkdir rather than a pagedep. In this case we track the mkdir + * so it can be released when it is written. A workhead is used + * to simplify canceling a mkdir that is removed by a subsequent dirrem. */ struct newdirblk { struct worklist db_list; /* id_inowait or pg_newdirblk */ # define db_state db_list.wk_state /* unused */ struct pagedep *db_pagedep; /* associated pagedep */ + struct workhead db_mkdir; }; + +/* + * A "jaddref" structure tracks a new reference (link count) on an inode + * and prevents the link count increase and bitmap allocation until a + * journal entry can be written. Once the journal entry is written, + * the inode is put on the pendinghd of the bmsafemap and a diradd or + * mkdir entry is placed on the bufwait list of the inode. The DEPCOMPLETE + * flag is used to indicate that all of the required information for writing + * the journal entry is present. MKDIR_BODY and MKDIR_PARENT are used to + * differentiate . and .. links from regular file names. NEWBLOCK indicates + * a bitmap is still pending. If a new reference is canceled by a delete + * prior to writing the journal the jaddref write is canceled and the + * structure persists to prevent any disk-visible changes until it is + * ultimately released when the file is freed or the link is dropped again. + */ +struct jaddref { + struct worklist ja_list; /* Journal pending or jseg entries. */ +# define ja_state ja_list.wk_state + union { + struct diradd *jau_diradd; /* Pending diradd. */ + struct mkdir *jau_mkdir; /* MKDIR_{PARENT,BODY} */ + } ja_un; + LIST_ENTRY(jaddref) ja_bmdeps; /* Links for bmsafemap. */ + LIST_ENTRY(jaddref) ja_inodeps; /* Links for inodedep. */ + off_t ja_diroff; /* Directory offset. */ + ino_t ja_ino; /* Inode number. */ + ino_t ja_parent; /* Parent inode number. */ + int16_t ja_nlink; /* nlink before addition. */ + uint16_t ja_mode; /* File mode, needed for IFMT. */ +}; +#define ja_diradd ja_un.jau_diradd +#define ja_mkdir ja_un.jau_mkdir + +/* + * A "jremref" structure tracks a removed reference (unlink) on an + * inode and prevents the directory remove from proceeding until the + * journal entry is written. Once the journal has been written the remove + * may proceed as normal. + */ +struct jremref { + struct worklist jr_list; /* Journal pending or jseg entries. */ +# define jr_state jr_list.wk_state + struct dirrem *jr_dirrem; /* Back pointer to dirrem. */ + LIST_ENTRY(jremref) jr_deps; /* Links for pagdep. */ + off_t jr_diroff; /* Directory offset. */ + ino_t jr_ino; /* Inode number. */ + ino_t jr_parent; /* Parent inode number. */ + int16_t jr_nlink; /* nlink before the removal. */ + uint16_t jr_mode; /* File mode, needed for IFMT. */ +}; + +/* + * A "jnewblk" structure tracks a newly allocated block or fragment and + * prevents the direct or indirect block pointer as well as the cg bitmap + * from being written until it is logged. After it is logged the jsegdep + * is attached to the allocdirect or allocindir until the operation is + * completed or reverted. If the operation is reverted prior to the journal + * write the jnewblk structure is maintained to prevent the bitmaps from + * reaching the disk. Ultimately the jnewblk structure will be passed + * to the free routine as the in memory cg is modified back to the free + * state at which time it can be released. + */ +struct jnewblk { + struct worklist jn_list; +# define jn_state jn_list.wk_state + LIST_ENTRY(jnewblk) jn_deps; /* All jnewblks on bmsafemap */ + union { + struct newblk *jnu_newblk; /* newblk if not DEPCOMPLETE */ + struct worklist *jnu_dep; /* allocdirect or allocindir */ + } jn_un; + ino_t jn_ino; + ufs_lbn_t jn_lbn; + ufs2_daddr_t jn_blkno; + int jn_oldfrags; + int jn_frags; +}; +#define jn_newblk jn_un.jnu_newblk +#define jn_dep jn_un.jnu_dep + +/* + * A "jfreeblk" structure tracks the journal write for freeing a block + * or tree of blocks. The block pointer must not be cleared in the inode + * or indirect prior to the jfreeblk being written. + */ +struct jfreeblk { + struct worklist jf_list; +# define jf_state jf_list.wk_state + struct freeblks *jf_freeblks; + LIST_ENTRY(jfreeblk) jf_deps; + ino_t jf_ino; + ufs_lbn_t jf_lbn; + ufs2_daddr_t jf_blkno; + int jf_frags; +}; + +/* + * A "jfreefrag" tracks the freeing of a single block when a fragment is + * extended or an indirect page is replaced. It is not part of a larger + * freeblks operation. + */ +struct jfreefrag { + struct worklist fr_list; +# define fr_state fr_list.wk_state + struct freefrag *fr_freefrag; + ino_t fr_ino; + ufs_lbn_t fr_lbn; + ufs2_daddr_t fr_blkno; + int fr_frags; +}; + +/* + * A "jsegdep" structure tracks a single reference to a written journal + * segment so the journal space can be reclaimed when all dependencies + * have been written. + */ +struct jsegdep { + struct worklist jd_list; +# define jd_state jd_list.wk_state + struct jseg *jd_seg; + short jd_type; + short jd_line; +}; + +/* + * A "jseg" structure contains all of the journal records written in a + * single disk write. jaddref and jremref structures are linked into + * js_entries so thay may be completed when the write completes. The + * js_deps array contains as many entries as there are ref counts to + * reduce the number of allocations required per journal write to one. + */ +struct jseg { + struct worklist js_list; /* b_deps link for journal */ + struct workhead js_entries; /* Entries awaiting write */ + TAILQ_ENTRY(jseg) js_next; + struct jblocks *js_jblocks; /* Back pointer to block/seg list */ + struct buf *js_buf; /* Buffer while unwritten */ + uint64_t js_seq; + int js_size; /* Allocated size in bytes */ + int js_cnt; /* Total items allocated */ + int js_refs; /* Count of items pending completion */ + struct jsegdep js_deps[0]; /* Dependencies for completion */ +}; Index: /usr/src/sys/ufs/ffs/ffs_balloc.c =================================================================== --- /usr/src/sys/ufs/ffs/ffs_balloc.c (revision 200565) +++ /usr/src/sys/ufs/ffs/ffs_balloc.c (working copy) @@ -138,7 +138,7 @@ ffs_balloc_ufs1(struct vnode *vp, off_t startoffse if (error) return (error); if (DOINGSOFTDEP(vp)) - softdep_setup_allocdirect(ip, nb, + softdep_setup_allocdirect(ip, nb, nb, dbtofsb(fs, bp->b_blkno), dp->di_db[nb], fs->fs_bsize, osize, bp); ip->i_size = smalllblktosize(fs, nb + 1); @@ -190,7 +190,7 @@ ffs_balloc_ufs1(struct vnode *vp, off_t startoffse if (error) return (error); if (DOINGSOFTDEP(vp)) - softdep_setup_allocdirect(ip, lbn, + softdep_setup_allocdirect(ip, lbn, lbn, dbtofsb(fs, bp->b_blkno), nb, nsize, osize, bp); } @@ -210,7 +210,7 @@ ffs_balloc_ufs1(struct vnode *vp, off_t startoffse if (flags & BA_CLRBUF) vfs_bio_clrbuf(bp); if (DOINGSOFTDEP(vp)) - softdep_setup_allocdirect(ip, lbn, newb, 0, + softdep_setup_allocdirect(ip, lbn, lbn, newb, 0, nsize, 0, bp); } dp->di_db[lbn] = dbtofsb(fs, bp->b_blkno); @@ -255,7 +255,7 @@ ffs_balloc_ufs1(struct vnode *vp, off_t startoffse vfs_bio_clrbuf(bp); if (DOINGSOFTDEP(vp)) { softdep_setup_allocdirect(ip, NDADDR + indirs[0].in_off, - newb, 0, fs->fs_bsize, 0, bp); + indirs[0].in_lbn, newb, 0, fs->fs_bsize, 0, bp); bdwrite(bp); } else { /* @@ -305,8 +305,8 @@ ffs_balloc_ufs1(struct vnode *vp, off_t startoffse nbp->b_blkno = fsbtodb(fs, nb); vfs_bio_clrbuf(nbp); if (DOINGSOFTDEP(vp)) { - softdep_setup_allocindir_meta(nbp, ip, bp, - indirs[i - 1].in_off, nb); + softdep_setup_allocindir_meta(nbp, ip, bp, indirs, i, + nb); bdwrite(nbp); } else { /* @@ -361,8 +361,8 @@ ffs_balloc_ufs1(struct vnode *vp, off_t startoffse if (flags & BA_CLRBUF) vfs_bio_clrbuf(nbp); if (DOINGSOFTDEP(vp)) - softdep_setup_allocindir_page(ip, lbn, bp, - indirs[i].in_off, nb, 0, nbp); + softdep_setup_allocindir_page(ip, bp, indirs, i, lbn, + nb, 0, nbp); bap[indirs[i].in_off] = nb; /* * If required, write synchronously, otherwise use @@ -418,6 +418,8 @@ fail: * slow, running out of disk space is not expected to be a common * occurence. The error return from fsync is ignored as we already * have an error to return to the user. + * + * XXX Still have to journal the free below */ (void) ffs_syncvnode(vp, MNT_WAIT); for (deallocated = 0, blkp = allociblk, lbns_remfree = lbns; @@ -473,7 +475,7 @@ fail: */ for (blkp = allociblk; blkp < allocblk; blkp++) { ffs_blkfree(ump, fs, ip->i_devvp, *blkp, fs->fs_bsize, - ip->i_number); + ip->i_number, NULL); } return (error); } @@ -643,7 +645,7 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffse if (error) return (error); if (DOINGSOFTDEP(vp)) - softdep_setup_allocdirect(ip, nb, + softdep_setup_allocdirect(ip, nb, nb, dbtofsb(fs, bp->b_blkno), dp->di_db[nb], fs->fs_bsize, osize, bp); @@ -696,7 +698,7 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffse if (error) return (error); if (DOINGSOFTDEP(vp)) - softdep_setup_allocdirect(ip, lbn, + softdep_setup_allocdirect(ip, lbn, lbn, dbtofsb(fs, bp->b_blkno), nb, nsize, osize, bp); } @@ -716,7 +718,7 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffse if (flags & BA_CLRBUF) vfs_bio_clrbuf(bp); if (DOINGSOFTDEP(vp)) - softdep_setup_allocdirect(ip, lbn, newb, 0, + softdep_setup_allocdirect(ip, lbn, lbn, newb, 0, nsize, 0, bp); } dp->di_db[lbn] = dbtofsb(fs, bp->b_blkno); @@ -761,7 +763,7 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffse vfs_bio_clrbuf(bp); if (DOINGSOFTDEP(vp)) { softdep_setup_allocdirect(ip, NDADDR + indirs[0].in_off, - newb, 0, fs->fs_bsize, 0, bp); + indirs[0].in_lbn, newb, 0, fs->fs_bsize, 0, bp); bdwrite(bp); } else { /* @@ -811,8 +813,8 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffse nbp->b_blkno = fsbtodb(fs, nb); vfs_bio_clrbuf(nbp); if (DOINGSOFTDEP(vp)) { - softdep_setup_allocindir_meta(nbp, ip, bp, - indirs[i - 1].in_off, nb); + softdep_setup_allocindir_meta(nbp, ip, bp, indirs, i, + nb); bdwrite(nbp); } else { /* @@ -867,8 +869,8 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffse if (flags & BA_CLRBUF) vfs_bio_clrbuf(nbp); if (DOINGSOFTDEP(vp)) - softdep_setup_allocindir_page(ip, lbn, bp, - indirs[i].in_off, nb, 0, nbp); + softdep_setup_allocindir_page(ip, bp, indirs, i, lbn, + nb, 0, nbp); bap[indirs[i].in_off] = nb; /* * If required, write synchronously, otherwise use @@ -930,6 +932,8 @@ fail: * slow, running out of disk space is not expected to be a common * occurence. The error return from fsync is ignored as we already * have an error to return to the user. + * + * XXX Still have to journal the free below */ (void) ffs_syncvnode(vp, MNT_WAIT); for (deallocated = 0, blkp = allociblk, lbns_remfree = lbns; @@ -985,7 +989,7 @@ fail: */ for (blkp = allociblk; blkp < allocblk; blkp++) { ffs_blkfree(ump, fs, ip->i_devvp, *blkp, fs->fs_bsize, - ip->i_number); + ip->i_number, NULL); } return (error); } Index: /usr/src/sys/ufs/ffs/ffs_inode.c =================================================================== --- /usr/src/sys/ufs/ffs/ffs_inode.c (revision 200565) +++ /usr/src/sys/ufs/ffs/ffs_inode.c (working copy) @@ -232,7 +232,7 @@ ffs_truncate(vp, length, flags, cred, td) if (oldblks[i] == 0) continue; ffs_blkfree(ump, fs, ip->i_devvp, oldblks[i], - sblksize(fs, osize, i), ip->i_number); + sblksize(fs, osize, i), ip->i_number, NULL); } } } @@ -336,6 +336,8 @@ ffs_truncate(vp, length, flags, cred, td) * zero'ed in case it ever becomes accessible again because * of subsequent file growth. Directories however are not * zero'ed as they should grow back initialized to empty. + * + * XXX Still need to manually journal this. */ offset = blkoff(fs, length); if (offset == 0) { @@ -445,7 +447,7 @@ ffs_truncate(vp, length, flags, cred, td) if (lastiblock[level] < 0) { DIP_SET(ip, i_ib[level], 0); ffs_blkfree(ump, fs, ip->i_devvp, bn, - fs->fs_bsize, ip->i_number); + fs->fs_bsize, ip->i_number, NULL); blocksreleased += nblocks; } } @@ -464,7 +466,8 @@ ffs_truncate(vp, length, flags, cred, td) continue; DIP_SET(ip, i_db[i], 0); bsize = blksize(fs, ip, i); - ffs_blkfree(ump, fs, ip->i_devvp, bn, bsize, ip->i_number); + ffs_blkfree(ump, fs, ip->i_devvp, bn, bsize, ip->i_number, + NULL); blocksreleased += btodb(bsize); } if (lastblock < 0) @@ -496,7 +499,7 @@ ffs_truncate(vp, length, flags, cred, td) */ bn += numfrags(fs, newspace); ffs_blkfree(ump, fs, ip->i_devvp, bn, - oldspace - newspace, ip->i_number); + oldspace - newspace, ip->i_number, NULL); blocksreleased += btodb(oldspace - newspace); } } @@ -638,7 +641,7 @@ ffs_indirtrunc(ip, lbn, dbn, lastbn, level, countp blocksreleased += blkcount; } ffs_blkfree(ip->i_ump, fs, ip->i_devvp, nb, fs->fs_bsize, - ip->i_number); + ip->i_number, NULL); blocksreleased += nblocks; } Index: /usr/src/sys/ufs/ffs/ffs_snapshot.c =================================================================== --- /usr/src/sys/ufs/ffs/ffs_snapshot.c (revision 200565) +++ /usr/src/sys/ufs/ffs/ffs_snapshot.c (working copy) @@ -582,7 +582,8 @@ loop: len = fragroundup(fs, blkoff(fs, xp->i_size)); if (len != 0 && len < fs->fs_bsize) { ffs_blkfree(ump, copy_fs, vp, - DIP(xp, i_db[loc]), len, xp->i_number); + DIP(xp, i_db[loc]), len, xp->i_number, + NULL); blkno = DIP(xp, i_db[loc]); DIP_SET(xp, i_db[loc], 0); } @@ -598,7 +599,7 @@ loop: DIP_SET(xp, i_db[loc], blkno); if (!error) error = ffs_freefile(ump, copy_fs, vp, xp->i_number, - xp->i_mode); + xp->i_mode, NULL); VOP_UNLOCK(xvp, 0); vdrop(xvp); if (error) { @@ -700,7 +701,7 @@ out1: copy_fs, vp, xp->i_number, - xp->i_mode); + xp->i_mode, NULL); } if (error) { fs->fs_snapinum[snaploc] = 0; @@ -1220,7 +1221,7 @@ mapacct_ufs1(vp, oldblkp, lastblkp, fs, lblkno, ex *ip->i_snapblklist++ = lblkno; if (blkno == BLK_SNAP) blkno = blkstofrags(fs, lblkno); - ffs_blkfree(ip->i_ump, fs, vp, blkno, fs->fs_bsize, inum); + ffs_blkfree(ip->i_ump, fs, vp, blkno, fs->fs_bsize, inum, NULL); } return (0); } @@ -1500,7 +1501,7 @@ mapacct_ufs2(vp, oldblkp, lastblkp, fs, lblkno, ex *ip->i_snapblklist++ = lblkno; if (blkno == BLK_SNAP) blkno = blkstofrags(fs, lblkno); - ffs_blkfree(ip->i_ump, fs, vp, blkno, fs->fs_bsize, inum); + ffs_blkfree(ip->i_ump, fs, vp, blkno, fs->fs_bsize, inum, NULL); } return (0); } Index: /usr/src/sys/ufs/ffs/fs.h =================================================================== --- /usr/src/sys/ufs/ffs/fs.h (revision 200565) +++ /usr/src/sys/ufs/ffs/fs.h (working copy) @@ -337,7 +337,9 @@ struct fs { int32_t fs_avgfilesize; /* expected average file size */ int32_t fs_avgfpdir; /* expected # of files per directory */ int32_t fs_save_cgsize; /* save real cg size to use fs_bsize */ - int32_t fs_sparecon32[26]; /* reserved for future constants */ + int32_t fs_sujournal; /* SUJ journal file */ + int32_t fs_sujfree; /* SUJ free list */ + int32_t fs_sparecon32[24]; /* reserved for future constants */ int32_t fs_flags; /* see FS_ flags below */ int32_t fs_contigsumsize; /* size of cluster summary array */ int32_t fs_maxsymlinklen; /* max length of an internal symlink */ @@ -409,6 +411,7 @@ CTASSERT(sizeof(struct fs) == 1376); #define FS_MULTILABEL 0x20 /* file system is MAC multi-label */ #define FS_GJOURNAL 0x40 /* gjournaled file system */ #define FS_FLAGS_UPDATED 0x80 /* flags have been moved to new location */ +#define FS_SUJ 0x100 /* Filesystem using softupdate journal */ /* * Macros to access bits in the fs_active array. @@ -598,8 +601,32 @@ struct cg { ? (fs)->fs_bsize \ : (fragroundup(fs, blkoff(fs, (size))))) - /* + * Indirect lbns are aligned on NDADDR addresses where single indirects + * are the negated address of the lowest lbn reachable, double indirects + * are this lbn - 1 and triple indirects are this lbn - 2. This yields + * an unusual bit order to determine level. + */ +static inline int +lbn_level(ufs_lbn_t lbn) +{ + if (lbn >= 0) + return 0; + switch (lbn & 0x3) { + case 0: + return (0); + case 1: + break; + case 2: + return (2); + case 3: + return (1); + default: + break; + } + return (-1); +} +/* * Number of inodes in a secondary storage block/fragment. */ #define INOPB(fs) ((fs)->fs_inopb) @@ -610,6 +637,66 @@ struct cg { */ #define NINDIR(fs) ((fs)->fs_nindir) +/* + * Softdep journal record format. + */ + +#define JOP_ADDREF 1 /* Add a reference to an inode. */ +#define JOP_REMREF 2 /* Remove a reference from an inode. */ +#define JOP_NEWBLK 3 /* Allocate a block. */ +#define JOP_FREEBLK 4 /* Free a block or a tree of blocks. */ + +#define JREC_SIZE 32 /* Record and segment header size. */ + +#define SUJ_MIN (1 * 1024 * 1024) /* Minimum journal size */ +#define SUJ_MAX (128 * SUJ_MIN) /* Maximum journal size */ + +/* + * Size of the segment record header. There is at most one for each disk + * block and at least one for each filesystem block in the journal. The + * segment header is followed by an array of records. + */ +struct jsegrec { + uint64_t jsr_seq; /* Our sequence number */ + uint64_t jsr_oldest; /* Oldest valid sequence number */ + uint32_t jsr_cnt; /* Count of valid records */ + uint32_t jsr_crc; /* 32bit crc of the valid space */ + uint64_t jsr_unused; +}; + +struct jrefrec { + uint32_t jr_op; + ino_t jr_ino; + ino_t jr_parent; + int16_t jr_nlink; + uint16_t jr_mode; + off_t jr_diroff; + uint64_t jr_unused; +}; + +struct jblkrec { + uint32_t jb_op; + uint32_t jb_ino; + ufs2_daddr_t jb_blkno; + ufs_lbn_t jb_lbn; + uint16_t jb_frags; + uint16_t jb_oldfrags; + uint32_t jb_unused; +}; + +union jrec { + struct jsegrec rec_jsegrec; + struct jrefrec rec_jrefrec; + struct jblkrec rec_jblkrec; +}; + +#ifdef CTASSERT +CTASSERT(sizeof(struct jsegrec) == JREC_SIZE); +CTASSERT(sizeof(struct jrefrec) == JREC_SIZE); +CTASSERT(sizeof(struct jblkrec) == JREC_SIZE); +CTASSERT(sizeof(union jrec) == JREC_SIZE); +#endif + extern int inside[], around[]; extern u_char *fragtbl[]; -- Test scenario; $ umount /tmp $ tunefs -j disable /dev/ad0s1e tunefs: soft updates journaling cleared $ tunefs -j enable /dev/ad0s1e tunefs: soft updates journaling cannot be enabled until fsck is run $ fsck -y /tmp ** /dev/ad0s1e ** Last Mounted on /tmp ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts UNREF FILE I=94208 OWNER=root MODE=100000 SIZE=67108864 MTIME=Jan 1 01:00 1970 RECONNECT? yes SORRY. NO SPACE IN lost+found DIRECTORY CLEAR? yes ** Phase 5 - Check Cyl groups FREE BLK COUNT(S) WRONG IN SUPERBLK SALVAGE? yes SUMMARY INFORMATION BAD SALVAGE? yes BLK(S) MISSING IN BIT MAPS SALVAGE? yes 12896 files, 757447 used, 1271584 free (904 frags, 158835 blocks, 0.0% fragmentation) ***** FILE SYSTEM MARKED CLEAN ***** ***** FILE SYSTEM WAS MODIFIED ***** $ fsck -y /tmp ** /dev/ad0s1e ** 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 12896 files, 757447 used, 1271584 free (904 frags, 158835 blocks, 0.0% fragmentation) ***** FILE SYSTEM IS CLEAN ***** $ tunefs -j enable /dev/ad0s1e Using inode 94208 in cg 4 for 67108864 byte journal tunefs: soft updates journaling set $ mount /tmp $ exit crashbox# exit $ cd stress2/testcases/mkdir/ $ ./mkdir -t 30m -i 100 -h -v -v mkdir: run time 0+00:30:00, incarnations 100, load 100, verbose 2 mkdir(size=181, incarnations=100). Free(2150493k, 420970), reserve(36200k, 18101)