vop_getpages for zfs

Andriy Gapon avg at freebsd.org
Mon Nov 8 09:17:14 UTC 2010


on 06/11/2010 00:16 jhell said the following:
> Thought I would give you a heads up on this after seeing the post about
> zfs_getpages.diff.
> 
> I patched up to this before after seeing it posted to <you_know_where>@
> and got reliable dumpage from it. Basically a vm_page_unwire fault or
> something like that. I believe the following is the backtrace from that.
> 
> (kgdb) #0  doadump () at pcpu.h:231
> #1  0x80675251 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:419
> #2  0x806754e5 in panic (fmt=Variable "fmt" is not available.
> ) at /usr/src/sys/kern/kern_shutdown.c:592
> #3  0x808e27ce in vm_page_unwire (m=0x816b46e0, activate=1)
>     at /usr/src/sys/vm/vm_page.c:1564
> #4  0x808d123a in vm_fault_unwire (map=0x81690088, start=2568372224,
>     end=2568433664, fictitious=0) at /usr/src/sys/vm/vm_fault.c:1123
> #5  0x808d8a33 in vm_map_delete (map=0x81690088, start=2568372224,
>     end=2568433664) at /usr/src/sys/vm/vm_map.c:2619
> #6  0x808d8d0d in vm_map_remove (map=0x81690088, start=2568372224,
> end=Variable "end" is not available.
> )
>     at /usr/src/sys/vm/vm_map.c:2801
> #7  0x808d6360 in kmem_free (map=0x81690088, addr=2568372224, size=61440)
>     at /usr/src/sys/vm/vm_kern.c:211
> #8  0x808cb601 in page_free (mem=0x99164000, size=61440, flags=34 '"')
>     at /usr/src/sys/vm/uma_core.c:1069
> #9  0x808ccf92 in uma_large_free (slab=0x85be7e6c)
>     at /usr/src/sys/vm/uma_core.c:3021
> #10 0x8065f7a5 in free (addr=0x99164000, mtp=0x80d8e114)
>     at /usr/src/sys/kern/kern_malloc.c:506
> #11 0x80cd49db in zil_lwb_write_done () from /boot/kernel/zfs.ko
> #12 0x80cd99b1 in zio_done () from /boot/kernel/zfs.ko
> #13 0x80cd7d3a in zio_execute () from /boot/kernel/zfs.ko
> #14 0x80cd7f2e in zio_notify_parent () from /boot/kernel/zfs.ko
> #15 0x80cd9a31 in zio_done () from /boot/kernel/zfs.ko
> #16 0x80cd7d3a in zio_execute () from /boot/kernel/zfs.ko
> #17 0x80c6656b in taskq_run_safe () from /boot/kernel/zfs.ko
> #18 0x806af812 in taskqueue_run (queue=0x85a0ac40)
>     at /usr/src/sys/kern/subr_taskqueue.c:239
> #19 0x806afa07 in taskqueue_thread_loop (arg=0x85a3f830)
>     at /usr/src/sys/kern/subr_taskqueue.c:360
> #20 0x80647377 in fork_exit (callout=0x806af94a <taskqueue_thread_loop>,
>     arg=0x85a3f830, frame=0xb4439d38) at /usr/src/sys/kern/kern_fork.c:845
> #21 0x809126a4 in fork_trampoline () at
> /usr/src/sys/i386/i386/exception.s:273
> (kgdb)
> 
> And that coincided with the dates that I added the patch once seeing it
> on the list.
> changeset:   351:f1ca4eb51520
> user:        J. Hellenthal <jhell at DataIX.net>
> date:        Sun Oct 10 22:57:24 2010 -0400
> summary:     Remove the zfs_getpages patch from Andriy Gapon
> 
> changeset:   350:bb885c047f0a
> user:        J. Hellenthal <jhell at DataIX.net>
> date:        Sun Oct 10 22:27:31 2010 -0400
> summary:     zfs_getpages improvement from Andriy Gapon
> 
> If you would like I can patch back up to this patch to provide more
> information if its needed, but at the moment I do not have it available
> nor do I have the core that was generated.

Thanks a lot for this report.
Actually the original patch/commit was intended for head only as there are some
differences in page locking between head and other branches.
I have almost forgot about that and would certainly do that if not for your report.

See r214936 and r214941.
Thanks!
-- 
Andriy Gapon


More information about the freebsd-fs mailing list