I've decided to use UML when caught some hard to debug OOpses on btrfs. The first attempt to use btrfs on UML gave me stable UML crash. I suspect it's a UML's problem.
So I have some questions here (I'm on x86_64, 2.6.39-rc2): 1. (major one) BUG_ON trace in UML does not look as in real kernel. ud2 handler does not show us nice backtrace, but calls some suspicious handler. /mnt/btr # touch asd-`seq 1 10000` [ 95.540000] Kernel panic - not syncing: Kernel mode signal 4 [ 95.540000] Call Trace: [ 95.540000] 602d9908: [<60227a48>] panic+0xea/0x1e0 [ 95.540000] 602d99b8: [<600342ed>] do_softirq+0x4d/0x70 [ 95.540000] 602d9a08: [<60016947>] relay_signal+0x87/0xa0 [ 95.540000] 602d9a18: [<60021f70>] set_signals+0x30/0x40 [ 95.540000] 602d9a38: [<60021df9>] sig_handler_common+0x59/0xd0 [ 95.540000] 602d9a58: [<60021f2c>] real_alarm_handler+0x3c/0x50 [ 95.540000] 602d9ae0: [<6018c0a0>] strncpy+0x20/0x30 [ 95.540000] 602d9b78: [<6002200f>] sig_handler+0x3f/0x50 [ 95.540000] 602d9b98: [<600222a1>] handle_signal+0x71/0xb0 [ 95.540000] 602d9be8: [<60023630>] hard_handler+0x10/0x20 [ 95.540000] 602d9ca8: [<6011263c>] lookup_inline_extent_backref+0x2dc/0x3f0 [ 95.540000] [ 95.540000] [ 95.540000] Pid: 1, comm: sh Not tainted 2.6.39-rc2+ Here we have BUG_ON in lookup_inline_extent_backref+0x2dc/0x3f0, but that pesky hard_handler. Is it an UML bug or known and expected behaviour? Now I use 'gdb -p $pid' to get nicer backtrace: Program received signal SIGILL, Illegal instruction. lookup_inline_extent_backref (trans=0x70c6e000, root=<value optimized out>, path=0x70c82000, ref_ret=<value optimized out>, bytenr=<value optimized out>, num_bytes=<value optimized out>, parent=0, root_objectid=5, owner=0, offset=0, insert=0) at /home/slyfox/linux-2.6/fs/btrfs/extent-tree.c:1399 1399 BUG_ON(ret); Can UML call the same ud2 handler as the real handler? We would see something like: [ 155.038388] kernel BUG at /mnt/archive/src/linux-2.6/fs/btrfs/inode.c:2967! [ 155.038643] invalid opcode: 0000 [#1] PREEMPT SMP How does UML implement running userspace processes and kernel threads in it? I guess it's a problem, why UML can't distinct where ud2 comes from and call proper handler. 2. btrfs in UML does not work for me at all. It corrupts data right off the start. I only need to format the filesystem, touch there ~20 files and I get corrupted FS: I run the following tiny script in UML: /tools/mkfs.btrfs /dev/ubda mount /mnt/btr/ cd /mnt/btr/ touch `seq 1 11` ls The result is: / # ./kill_btr WARNING! - Btrfs v0.19-35-g1b444cd-dirty IS EXPERIMENTAL WARNING! - see http://btrfs.wiki.kernel.org before using fs created label (null) on /dev/ubda nodesize 4096 leafsize 4096 sectorsize 4096 size 1.91GB Btrfs v0.19-35-g1b444cd-dirty [ 2.770000] device fsid f2407093ae1f3a78-9e203194e541bfbd devid 1 transid 7 /dev/ubda [ 2.770000] btrfS: invalid dir item name len: 12594 [ 2.770000] btrfS: invalid dir item name len: 0 [ 2.770000] btrfS: invalid dir item name len: 0 11 Corruption. Only last file is seen. Later, after unmount I get an OOps. It does not happen in real OS. I've enabled all the corruption detecting tehniques in the kernel config and it didn't change picture. I can share .config if you like. kernel builds only 4 minutes on my slow laptop. Is there serious problems in UML block device handling? I run UML this way: ./vmlinux \ ubd0=$(pwd)/btr.img \ root=/dev/root \ rootflags="$(pwd)/root" rw rootfstype=hostfs \ mem=256M init=/init \ btr.img is a 2048000000 bytes sized file. rootfs contains statically linked busybox and latest statically linked btrfs-progs. I can share my root if you are interested. It's tiny (btrfs-progs tree is mounted from hostfs): $ find root/ -type f root/bin/busybox root/bin/strace root/kill_btr root/etc/fstab root/init Thank you! -- Sergei
signature.asc
Description: PGP signature
------------------------------------------------------------------------------ Xperia(TM) PLAY It's a major breakthrough. An authentic gaming smartphone on the nation's most reliable network. And it wants your games. http://p.sf.net/sfu/verizon-sfdev
_______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel