[Drbd-dev] OOPS...

Philipp Reisner philipp.reisner at linbit.com
Wed Mar 21 17:43:15 CET 2007


Hi,

I just want to archive this OOPS (it is attached to the end of that mail),
on an 2.6.16.21-0.15-bigsmp SLES10 kernel.


void submit_bio(int rw, struct bio *bio)
{
        int count = bio_sectors(bio);

        BIO_BUG_ON(!bio->bi_size);
        BIO_BUG_ON(!bio->bi_io_vec); // this is line 3077 of block/ll_rw_blk.c
        bio->bi_rw |= rw;
        if (rw & WRITE)
                mod_page_state(pgpgout, count);
        else
                mod_page_state(pgpgin, count);
[...]

I have read drbd_al_to_on_disk_bm() and  atodb_prepare_unless_covered()
several times, and can not think of a way how a bio could get passed 
to submit_bio with its bi_io_vec set to NULL.

The bios are allocated with "bio = bio_alloc(GFP_KERNEL, 1);", so there
has to be a singe bio_vec in bio->bi_io_vec in place.

My conclusion for now is that something strange happened. (Machine corrupting
its memory ?) 

Here is the actual OOPS:
========================
kernel BUG at block/ll_rw_blk.c:3077!
CPU:    2
EIP:    0060:[<c01b27e5>]    Tainted: P     U VLI
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00210246   (2.6.16.21-0.15-bigsmp #1)
eax: 80000004   ebx: c166ca60   ecx: 00000001   edx: 00400000
esi: ed65f18c   edi: 00000063   ebp: ed65f000   esp: f7d77e18
ds: 007b   es: 007b   ss: 0068
Stack: <0>01000001 f7d77e40 c011bb81 00000000 00000000 00000003 00200292 f5f62000
       ed65f000 f5f62000 ed65f18c 00000063 f93efd8b f93f7776 00000000 ebf6800c
       0000d082 00000002 00000003 0000d081 f5f62310 00000063 00000000 00000001
Call Trace:
 [<c011bb81>] __wake_up+0x2a/0x3d
 [<f93efd8b>] drbd_al_to_on_disk_bm+0x205/0x36d [drbd]
 [<f93f7776>] _drbd_request_state+0x2b7/0x2c2 [drbd]
 [<c011bb81>] __wake_up+0x2a/0x3d
 [<f93f9d00>] drbd_set_role+0x36d/0x402 [drbd]
 [<c0295212>] schedule+0xbee/0xc9a
 [<f93f9da4>] drbd_nl_secondary+0xf/0x16 [drbd]
 [<f93fa13d>] drbd_connector_callback+0xc4/0x173 [drbd]
 [<c0213d96>] cn_queue_wrapper+0x9/0x1e
 [<c012ee96>] run_workqueue+0x7f/0xba
 [<c0213d8d>] cn_queue_wrapper+0x0/0x1e
 [<c012f866>] worker_thread+0xed/0x11e
 [<c011ad69>] default_wake_function+0x0/0xc
 [<c013209a>] kthread+0xca/0xf7
 [<c012f779>] worker_thread+0x0/0x11e
 [<c0131fd0>] kthread+0x0/0xf7
 [<c0102005>] kernel_thread_helper+0x5/0xb
Code: c4 34 5b 5e 5f 5d c3 57 89 c1 56 53 89 d3 83 ec 24 8b 42 20 89 c2 c1 ea 09 85 c0 75 08 0f 0b 04 0c 7e b7 2c c0 83 7b 30 00 75 08 0b 05 0c 7e b7 2c c0 88 c8 09 4b 14 24 01 88 44 24 03 74 07


>>EIP; c01b27e5 <submit_bio+24/ad>   <=====

>>eax; 80000004 <phys_startup_32+7ff00004/c0000000>
>>ebx; c166ca60 <pg0+1266a60/3fbf8400>
>>edx; 00400000 <phys_startup_32+300000/c0000000>
>>esi; ed65f18c <pg0+2d25918c/3fbf8400>
>>ebp; ed65f000 <pg0+2d259000/3fbf8400>
>>esp; f7d77e18 <pg0+37971e18/3fbf8400>

Trace; c011bb81 <__wake_up+2a/3d>
Trace; f93efd8b <pg0+38fe9d8b/3fbf8400>
Trace; f93f7776 <pg0+38ff1776/3fbf8400>
Trace; c011bb81 <__wake_up+2a/3d>
Trace; f93f9d00 <pg0+38ff3d00/3fbf8400>
Trace; c0295212 <schedule+bee/c9a>
Trace; f93f9da4 <pg0+38ff3da4/3fbf8400>
Trace; f93fa13d <pg0+38ff413d/3fbf8400>
Trace; c0213d96 <cn_queue_wrapper+9/1e>
Trace; c012ee96 <run_workqueue+7f/ba>
Trace; c0213d8d <cn_queue_wrapper+0/1e>
Trace; c012f866 <worker_thread+ed/11e>
Trace; c011ad69 <default_wake_function+0/c>
Trace; c013209a <kthread+ca/f7>
Trace; c012f779 <worker_thread+0/11e>
Trace; c0131fd0 <kthread+0/f7>
Trace; c0102005 <kernel_thread_helper+5/b>

Code;  c01b27e5 <submit_bio+24/ad>
00000000 <_EIP>:
Code;  c01b27e5 <submit_bio+24/ad>   <=====
   0:   c4 34 5b                  les    (%ebx,%ebx,2),%esi   <=====
Code;  c01b27e8 <submit_bio+27/ad>
   3:   5e                        pop    %esi
Code;  c01b27e9 <submit_bio+28/ad>
   4:   5f                        pop    %edi
Code;  c01b27ea <submit_bio+29/ad>
   5:   5d                        pop    %ebp
Code;  c01b27eb <submit_bio+2a/ad>
   6:   c3                        ret
Code;  c01b27ec <submit_bio+2b/ad>
   7:   57                        push   %edi
Code;  c01b27ed <submit_bio+2c/ad>
   8:   89 c1                     mov    %eax,%ecx
Code;  c01b27ef <submit_bio+2e/ad>
   a:   56                        push   %esi
Code;  c01b27f0 <submit_bio+2f/ad>
   b:   53                        push   %ebx
Code;  c01b27f1 <submit_bio+30/ad>
   c:   89 d3                     mov    %edx,%ebx
Code;  c01b27f3 <submit_bio+32/ad>
   e:   83 ec 24                  sub    $0x24,%esp
Code;  c01b27f6 <submit_bio+35/ad>
  11:   8b 42 20                  mov    0x20(%edx),%eax
Code;  c01b27f9 <submit_bio+38/ad>
  14:   89 c2                     mov    %eax,%edx
Code;  c01b27fb <submit_bio+3a/ad>
  16:   c1 ea 09                  shr    $0x9,%edx
Code;  c01b27fe <submit_bio+3d/ad>
  19:   85 c0                     test   %eax,%eax
Code;  c01b2800 <submit_bio+3f/ad>
  1b:   75 08                     jne    25 <_EIP+0x25>
Code;  c01b2802 <submit_bio+41/ad>
  1d:   0f 0b                     ud2a
Code;  c01b2804 <submit_bio+43/ad>
  1f:   04 0c                     add    $0xc,%al
Code;  c01b2806 <submit_bio+45/ad>
  21:   7e b7                     jle    ffffffda <_EIP+0xffffffda>
Code;  c01b2808 <submit_bio+47/ad>
  23:   2c c0                     sub    $0xc0,%al
Code;  c01b280a <submit_bio+49/ad>
  25:   83 7b 30 00               cmpl   $0x0,0x30(%ebx)
Code;  c01b280e <submit_bio+4d/ad>
  29:   75 08                     jne    33 <_EIP+0x33>
Code;  c01b2810 <submit_bio+4f/ad>
  2b:   0b 05 0c 7e b7 2c         or     0x2cb77e0c,%eax
Code;  c01b2816 <submit_bio+55/ad>
  31:   c0 88 c8 09 4b 14 24      rorb   $0x24,0x144b09c8(%eax)
Code;  c01b281d <submit_bio+5c/ad>
  38:   01 88 44 24 03 74         add    %ecx,0x74032444(%eax)
Code;  c01b2823 <submit_bio+62/ad>
  3e:   07                        pop    %es

-- 
: Dipl-Ing Philipp Reisner                      Tel +43-1-8178292-50 :
: LINBIT Information Technologies GmbH          Fax +43-1-8178292-82 :
: Vivenotgasse 48, 1120 Vienna, Austria        http://www.linbit.com :


More information about the drbd-dev mailing list