On Mar 23, 2007, at 6:13 AM, Łukasz wrote:
When I'm trying to do in kernel in zfs ioctl:
1. snapshot destroy PREVIOS
2. snapshot rename LATEST->PREVIOUS
3. snapshot create LATEST
code is:
/* delete previous snapshot */
zfs_unmount_snap(snap_previous, NULL);
dmu_objset_destroy(snap_previous);
/* rename snapshot */
zfs_unmount_snap(snap_latest, NULL);
dmu_objset_rename(snap_latest, snap_previous);
/* create snapshot */
dmu_objset_snapshot(zc->zc_name,
REPLICATE_SNAPSHOT_LATEST, 0);
I get kernel panic.
MDB
::status
debugging crash dump vmcore.3 (32-bit) from zfs.dev
operating system: 5.11 snv_56 (i86pc)
panic message: BAD TRAP: type=8 (#df Double fault) rp=fec244f8
addr=d5904ffc
dump content: kernel pages only
This is most likely due to stack overflow.
You're stack is 0xd421cfac - 0xd421b04c = 0t8032 bytes.
The PAGESIZE on x86/x64 machines is 4k and the DEFAULTSTKSZ for 32bit
is 8k (2 * PAGESIZE) and 20k (5 * PAGESIZE) for amd64. So you''ve
blown your stack of 8k. This is mostly due to:
6354519 stack overflow in zfs due to zio pipeline
Running on a 64bit machine would also help.
eric
This happens only when the ZFS filesystem is loaded with I/O
operations.
( I copy studio11 folder on this filesystem. )
MDB ::stack show nothing, but walking threads I found:
stack pointer for thread d8ff9e00: d421b028
d421b04c zio_pop_transform+0x45(d9aba380, d421b090, d421b070,
d421b078)
d421b094 zio_clear_transform_stack+0x23(d9aba380)
d421b200 zio_done+0x12b(d9aba380)
d421b21c zio_next_stage+0x66(d9aba380)
d421b230 zio_checksum_verify+0x17(d9aba380)
d421b24c zio_next_stage+0x66(d9aba380)
d421b26c zio_wait_for_children+0x46(d9aba380, 11, d9aba570)
d421b280 zio_wait_children_done+0x18(d9aba380)
d421b298 zio_next_stage+0x66(d9aba380)
d421b2d0 zio_vdev_io_assess+0x11a(d9aba380)
d421b2e8 zio_next_stage+0x66(d9aba380)
d421b368 vdev_cache_read+0x157(d9aba380)
d421b394 vdev_disk_io_start+0x35(d9aba380)
d421b3a4 vdev_io_start+0x18(d9aba380)
d421b3d0 zio_vdev_io_start+0x142(d9aba380)
d421b3e4 zio_next_stage_async+0xac(d9aba380)
d421b3f4 zio_nowait+0xe(d9aba380)
d421b424 vdev_mirror_io_start+0x151(deab5cc0)
d421b450 zio_vdev_io_start+0x14f(deab5cc0)
d421b460 zio_next_stage+0x66(deab5cc0)
d421b470 zio_ready+0x124(deab5cc0)
d421b48c zio_next_stage+0x66(deab5cc0)
d421b4ac zio_wait_for_children+0x46(deab5cc0, 1, deab5ea8)
d421b4c0 zio_wait_children_ready+0x18(deab5cc0)
d421b4d4 zio_next_stage_async+0xac(deab5cc0)
d421b4e4 zio_nowait+0xe(deab5cc0)
d421b520 arc_read+0x3cc(d8a2cd00, da9f6ac0, d418e840, f9e55e5c,
f9e249b0, d515c010)
d421b590 dbuf_read_impl+0x11b(d515c010, d8a2cd00, d421b5cc)
d421b5bc dbuf_read+0xa5(d515c010, d8a2cd00, 2)
d421b5fc dmu_buf_hold+0x7c(d47cb854, 4, 0, 0, 0, 0)
d421b654 zap_lockdir+0x38(d47cb854, 4, 0, 0, 1, 1)
d421b690 zap_lookup+0x23(d47cb854, 4, 0, d421b6e0, 8, 0)
d421b804 dsl_dir_open_spa+0x10a(da9f6ac0, d8fde000, f9e7378f,
d421b85c, d421b860)
d421b864 dsl_dataset_open_spa+0x2c(0, d8fde000, 1, debe83c0,
d421b938)
d421b88c dsl_dataset_open+0x19(d8fde000, 1, debe83c0, d421b938)
d421b940 dmu_objset_open+0x2e(d8fde000, 5, 1, d421b970)
d421b974 dmu_objset_snapshot_one+0x2c(d8fde000, d421b998)
d421bdb0 dmu_objset_snapshot+0xaf(d8fde000, d4c6a3e8, 0)
d421c9e8 zfs_ioc_replicate_send+0x1ab(d8fde000)
d421ce18 zfs_ioc_sendbackup+0x126()
d421ce40 zfsdev_ioctl+0x100(2d80000, 5a1e, 8046cac, 100003,
d5938650, d421cf78)
d421ce6c cdev_ioctl+0x2e(2d80000, 5a1e, 8046cac, 100003,
d5938650, d421cf78)
d421ce94 spec_ioctl+0x65(d6591780, 5a1e, 8046cac, 100003,
d5938650, d421cf78)
d421ced4 fop_ioctl+0x27(d6591780, 5a1e, 8046cac, 100003,
d5938650, d421cf78)
d421cf84 ioctl+0x151()
d421cfac sys_sysenter+0x101()
$r
%cs = 0x0158 %eax = 0x00000000
%ds = 0x0160 %ebx = 0xe58abac0
%ss = 0x0160 %ecx = 0x00000000
%es = 0x0160 %edx = 0x00000018
%fs = 0x0000 %esi = 0x00000000
%gs = 0x01b0 %edi = 0x00000000
%eip = 0xfe8ebd71 kmem_free+0x111
%ebp = 0x00000000
%esp = 0xfec24530
%eflags = 0x00010246
id=0 vip=0 vif=0 ac=0 vm=0 rf=1 nt=0 iopl=0x0
status=<of,df,IF,tf,sf,ZF,af,PF,cf>
%uesp = 0xd5905000
%trapno = 0x8
%err = 0x0
I was trying to cause error from command line:
[EMAIL PROTECTED] ~]# zfs destroy solaris/[EMAIL PROTECTED] ; zfs rename
solaris/[EMAIL PROTECTED] solaris/[EMAIL PROTECTED]; zfs snapshot solaris/
[EMAIL PROTECTED]
but without success.
Any idea ?
This message posted from opensolaris.org
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss