[linux-lvm] oops on 2.4.2 with lvm-0.9beta5 and Reiserfs 3.6.25
lvm at winux.com
lvm at winux.com
Sat Feb 24 03:45:31 UTC 2001
Chris Mason writes:
>> This oops shows that somebody logged the super block without preparing
>> it. Could you please run this data through ksymoops so I can track down
>> the caller?
>>
>> # dmesg | ksymoops -v /usr/src/linux/vmlinux -m /boot/System.map
>
> Hmmm, probably not the right system.map.
> I think I see the bug though, please try this patch:
>
> --- linux/fs/reiserfs/super.c.1 Fri Feb 23 16:30:55 2001
> +++ linux/fs/reiserfs/super.c Fri Feb 23 16:31:39 2001
> @@ -68,6 +68,7 @@
> lock_kernel() ;
> if (!(s->s_flags & MS_RDONLY)) {
> journal_begin(&th, s, 1) ;
> + reiserfs_prepare_for_journal(s, SB_BUFFER_WITH_SB(s), 1) ;
> journal_mark_dirty(&th, s, SB_BUFFER_WITH_SB (s));
> reiserfs_block_writes(&th) ;
> journal_end(&th, s, 1) ;
This message doesn't show up any more:
journal-1777: buffer 16 bad state !PREPARED !LOCKED !DIRTY !JDIRTY_WAIT
but that definitely didn't fix it. I get exactly the same oops behavior.
I'm working on a different machine now but it's acting the same way.
Here's the script I use to stimulate the problem. I use /dev/sda4
as the target here.
[ WARNING! There should be NO live LVM volumes on this machine.
This starts from scratch by blowing away LVM info and zapping the partition.
]
dd if=/dev/zero of=/dev/sda4 count=2k bs=4k
rm -rf /etc/lvm* /dev/lvm* /dev/vg*
vgscan
pvcreate /dev/sda4
vgcreate vg0 /dev/sda4
lvcreate -L 10g -n lv0 vg0
lvextend -L +2g /dev/vg0/lv0
mkreiserfs -q /dev/vg0/lv0
mount /dev/vg0/lv0 /mnt
echo hello world > /mnt/foo
lvcreate -L 1g -s -n s0 /dev/vg0/lv0
-----------------------------------------------------------------------
Because you questioned the validity of the System.map, I switched back
to the kernel version without the above patch, recompiled to generate
a bona fide System.map and ran the test again. Here's the result.
Hope it helps.
# dmesg | ksymoops -v /usr/src/linux/vmlinux -m /boot/System.map
ksymoops 2.3.7 on i686 2.4.2. Options used
-v /usr/src/linux/vmlinux (specified)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.4.2/ (default)
-m /boot/System.map (specified)
Warning (compare_maps): mismatch on symbol partition_name , ksyms_base says c01e7c70, vmlinux says c01474b0. Ignoring ksyms_base entry
Unable to handle kernel NULL pointer dereference at virtual address 00000000
c0110efb
*pde = 00000000
Oops: 0002
CPU: 0
EIP: 0010:[<c0110efb>]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010086
eax: cf84af78 ebx: 00000000 ecx: 00000286 edx: ce7b3d68
esi: ce7b3d60 edi: ce7b2000 ebp: cddcd590 esp: ce7b3d48
ds: 0018 es: 0018 ss: 0018
Process lvcreate (pid: 129, stackpage=ce7b3000)
Stack: cf84af6c ce7b3d60 c0107a29 cddcd400 cf84ae00 cfb1e000 00000001 ce7b2000
cf84af78 00000000 c0107b88 cf84af6c cfe6bce0 00000000 c022b685 4004fe20
0809bd60 ce7b3f9c cfb1e000 cddcd400 00000001 cfb1e4c4 00000004 cfb1e4c4
Call Trace: [<c0107a29>] [<c0107b88>] [<c022b685>] [<c01ed244>] [<c0139157>] [<c0108e7f>]
Code: 89 13 51 9d 5b 5e c3 89 f6 9c 58 fa 8b 4a 0c 8b 52 08 89 4a
>>EIP; c0110efb <add_wait_queue_exclusive+1f/28> <=====
Trace; c0107a29 <__down+41/9c>
Trace; c0107b88 <__down_failed+8/c>
Trace; c022b685 <stext_lock+f19/1176>
Trace; c01ed244 <lvm_chr_ioctl+504/670>
Trace; c0139157 <sys_ioctl+16b/184>
Trace; c0108e7f <system_call+33/38>
Code; c0110efb <add_wait_queue_exclusive+1f/28>
0000000000000000 <_EIP>:
Code; c0110efb <add_wait_queue_exclusive+1f/28> <=====
0: 89 13 mov %edx,(%ebx) <=====
Code; c0110efd <add_wait_queue_exclusive+21/28>
2: 51 push %ecx
Code; c0110efe <add_wait_queue_exclusive+22/28>
3: 9d popf
Code; c0110eff <add_wait_queue_exclusive+23/28>
4: 5b pop %ebx
Code; c0110f00 <add_wait_queue_exclusive+24/28>
5: 5e pop %esi
Code; c0110f01 <add_wait_queue_exclusive+25/28>
6: c3 ret
Code; c0110f02 <add_wait_queue_exclusive+26/28>
7: 89 f6 mov %esi,%esi
Code; c0110f04 <remove_wait_queue+0/14>
9: 9c pushf
Code; c0110f05 <remove_wait_queue+1/14>
a: 58 pop %eax
Code; c0110f06 <remove_wait_queue+2/14>
b: fa cli
Code; c0110f07 <remove_wait_queue+3/14>
c: 8b 4a 0c mov 0xc(%edx),%ecx
Code; c0110f0a <remove_wait_queue+6/14>
f: 8b 52 08 mov 0x8(%edx),%edx
Code; c0110f0d <remove_wait_queue+9/14>
12: 89 4a 00 mov %ecx,0x0(%edx)
1 warning issued. Results may not be reliable.
More information about the linux-lvm
mailing list