<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.5730.11" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN class=672582021-09052007>We are seeing a 
panic in <FONT face="Times New Roman" 
size=3>drbd_al_to_on_disk_bm()</FONT></SPAN></FONT></DIV>
<DIV><FONT face="Times New Roman" size=3><SPAN 
class=672582021-09052007></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT><SPAN class=672582021-09052007>Below is the stack and a possible 
cause:</SPAN></FONT></DIV>
<DIV><FONT><SPAN class=672582021-09052007>May&nbsp; 3 05:17:59 choip kernel: EIP 
is at drbd_al_to_on_disk_bm+0x18/0x470 [drbd]<BR>May&nbsp; 3 05:17:59 choip 
kernel: eax: 00000000&nbsp; ebx: ecbd013c&nbsp; ecx: 00000000&nbsp; edx: 
00000000<BR>May&nbsp; 3 05:17:59 choip kernel: esi: ecbd013c&nbsp; edi: 
00000001&nbsp; ebp: eb2b3ebc&nbsp; esp: eb2b3e34<BR>May&nbsp; 3 05:17:59 choip 
heartbeat: [5898]: info: standby: acquire [all] resources from 
chois.sn.stratus.com<BR>May&nbsp; 3 05:17:59 choip kernel: ds: 007b&nbsp; es: 
007b&nbsp; ss: 0069<BR>May&nbsp; 3 05:17:59 choip heartbeat: [13993]: info: 
acquire all HA resources (standby).<BR>May&nbsp; 3 05:17:59 choip kernel: 
Process drbd15_receiver (pid: 5758, threadinfo=eb2b2000 
task=c591c030)<BR>May&nbsp; 3 05:17:59 choip kernel: Stack: &lt;0&gt;00000000 
e7d8fe98 eb2b3eaa cabe263a eb2b3e78 ee238515 00001000 000000d0 <BR>May&nbsp; 3 
05:17:59 choip kernel:&nbsp; &nbsp; &nbsp; &nbsp; 0000002c 0000009f 0000003c 
00000004 000000d0 eb2b3e80 00000002 eb2b3e94 <BR>May&nbsp; 3 05:17:59 choip 
ResourceManager[14004]: info: Acquiring resource group: choip.sn.stratus.com 
drbddisk::shared.fs Filesystem::/dev/drbd15::/shared 134.111.32.220 httpd 
smd<BR>May&nbsp; 3 05:17:59 choip kernel:&nbsp; &nbsp; &nbsp; &nbsp; eb2b3e80 
eb2b3ebc ee42533c 00000004 00000001 0000009f 00000000 00000016 <BR>May&nbsp; 3 
05:17:59 choip kernel: Call Trace:<BR>May&nbsp; 3 05:17:59 choip kernel:&nbsp; 
[&lt;c0105a01&gt;] show_stack_log_lvl+0xa1/0xe0<BR>May&nbsp; 3 05:17:59 choip 
ResourceManager[14004]: info: Running /etc/ha.d/resource.d/drbddisk shared.fs 
start<BR>May&nbsp; 3 05:17:59 choip kernel:&nbsp; [&lt;c0105bf1&gt;] 
show_registers+0x181/0x200<BR>May&nbsp; 3 05:17:59 choip kernel:&nbsp; 
[&lt;c0105e10&gt;] die+0x100/0x1b0<BR>May&nbsp; 3 05:17:59 choip kernel:&nbsp; 
[&lt;c01168f6&gt;] do_page_fault+0x3c6/0x8c1<BR>May&nbsp; 3 05:17:59 choip 
kernel:&nbsp; [&lt;c010565f&gt;] error_code+0x2b/0x30<BR>May&nbsp; 3 05:17:59 
choip kernel:&nbsp; [&lt;ee41ad8e&gt;] after_state_ch+0x77e/0xa70 
[drbd]<BR>May&nbsp; 3 05:17:59 choip kernel:&nbsp; [&lt;ee40e1b1&gt;] 
receive_state+0x281/0x3c0 [drbd]<BR>May&nbsp; 3 05:17:59 choip kernel:&nbsp; 
[&lt;ee40e8a2&gt;] drbdd+0x42/0x170 [drbd]<BR>May&nbsp; 3 05:17:59 choip 
kernel:&nbsp; [&lt;ee40fc05&gt;] drbdd_init+0x1c5/0x210 [drbd]<BR>May&nbsp; 3 
05:17:59 choip kernel:&nbsp; [&lt;ee41b10c&gt;] drbd_thread_setup+0x8c/0x100 
[drbd]<BR>May&nbsp; 3 05:17:59 choip kernel:&nbsp; [&lt;c0103485&gt;] 
kernel_thread_helper+0x5/0x10<BR>May&nbsp; 3 05:17:59 choip kernel: Code: ff ff 
ff 8b 52 0c eb 94 8d 74 26 00 8d bc 27 00 00 00 00 55 89 e5 57 56 53 83 ec 7c c7 
45 90 00 10 00 00 89 c3 8b 80 c0 03 00 00 &lt;f0&gt; 0f ba 68 28 01 19 d2 31 c0 
85 d2 0f 94 c0 85 c0 75 76 fc b9 <BR>May&nbsp; 3 05:17:59 choip kernel:&nbsp; 
&lt;0&gt;Fatal exception: panic in 5 seconds </SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=672582021-09052007></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=672582021-09052007>======================</SPAN></FONT></DIV>
<DIV><FONT><SPAN class=672582021-09052007>OK ...wait_event() is a macro and 
lc_try_lock() is inline. so....lc-&gt;flags below is likely where we 
died.<BR>static inline int lc_try_lock(struct lru_cache* lc)<BR>{<BR>&nbsp; 
&nbsp; &nbsp; &nbsp; return !test_and_set_bit(__LC_DIRTY,&amp;lc-&gt;flags); 
&lt;=====I think we are here!!!!!<BR>}<BR><BR>Dump of assembler code for 
function drbd_al_to_on_disk_bm:<BR>0x00013520 
&lt;drbd_al_to_on_disk_bm+0&gt;:&nbsp; push&nbsp; %ebp<BR>0x00013521 
&lt;drbd_al_to_on_disk_bm+1&gt;:&nbsp; mov&nbsp; &nbsp; %esp,%ebp<BR>0x00013523 
&lt;drbd_al_to_on_disk_bm+3&gt;:&nbsp; push&nbsp; %edi<BR>0x00013524 
&lt;drbd_al_to_on_disk_bm+4&gt;:&nbsp; push&nbsp; %esi<BR>0x00013525 
&lt;drbd_al_to_on_disk_bm+5&gt;:&nbsp; push&nbsp; %ebx<BR>0x00013526 
&lt;drbd_al_to_on_disk_bm+6&gt;:&nbsp; sub&nbsp; &nbsp; $0x7c,%esp<BR>0x00013529 
&lt;drbd_al_to_on_disk_bm+9&gt;:&nbsp; movl&nbsp; 
$0x1000,0xffffff90(%ebp)<BR>0x00013530 &lt;drbd_al_to_on_disk_bm+16&gt;:&nbsp; 
mov&nbsp; &nbsp; %eax,%ebx<BR>0x00013532 &lt;drbd_al_to_on_disk_bm+18&gt;:&nbsp; 
mov&nbsp; &nbsp; 0x3c0(%eax),%eax &lt;=====dead here!!!<BR>0x00013538 
&lt;drbd_al_to_on_disk_bm+24&gt;:&nbsp; lock btsl $0x1,0x28(%eax)<BR>0x0001353e 
&lt;drbd_al_to_on_disk_bm+30&gt;:&nbsp; sbb&nbsp; &nbsp; %edx,%edx<BR>0x00013540 
&lt;drbd_al_to_on_disk_bm+32&gt;:&nbsp; xor&nbsp; &nbsp; %eax,%eax<BR>0x00013542 
&lt;drbd_al_to_on_disk_bm+34&gt;:&nbsp; test&nbsp; %edx,%edx<BR>0x00013544 
&lt;drbd_al_to_on_disk_bm+36&gt;:&nbsp; sete&nbsp; %al<BR>0x00013547 
&lt;drbd_al_to_on_disk_bm+39&gt;:&nbsp; test&nbsp; %eax,%eax<BR>0x00013549 
&lt;drbd_al_to_on_disk_bm+41&gt;:&nbsp; jne&nbsp; &nbsp; 0x135c1 
&lt;drbd_al_to_on_disk_bm+161&gt;<BR>0x0001354b 
&lt;drbd_al_to_on_disk_bm+43&gt;:&nbsp; cld<BR></SPAN></FONT></DIV>
<DIV><FONT><SPAN class=672582021-09052007>Here is theory since I cannot 
reproduce at will.&nbsp; It seems to me that on the panic'ed node our disk had a 
fault </SPAN></FONT></DIV>
<DIV><FONT><SPAN class=672582021-09052007>inserted. so we went diskless.&nbsp; 
At that point we call after_state_ch() and did this:<BR>&nbsp;if ( os.disk &gt; 
Diskless &amp;&amp; ns.disk == Diskless ) {<BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; /* since inc_local() only works as long as 
disk&gt;=Inconsistent,<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; and it is Diskless here, local_cnt can only go down, it 
can<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; not 
increase... It will reach zero */<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; wait_event(mdev-&gt;misc_wait, 
!atomic_read(&amp;mdev-&gt;local_cnt));<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; drbd_free_bc(mdev-&gt;bc); mdev-&gt;bc = 
NULL;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
lc_free(mdev-&gt;resync);&nbsp; mdev-&gt;resync = NULL;<BR>&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lc_free(mdev-&gt;act_log); mdev-&gt;act_log = 
NULL;&nbsp;//We free things 
here!!!!<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>So we freed the the 
lrucache.<BR><BR>But later, the peer got a&nbsp;fault inserted and entered 
diskless so we set peer to Secondary .&nbsp; The panic'ed node receives that 
state and call after_state_ch() and did this:<BR>&nbsp; &nbsp; if( ns.pdsk &lt; 
Inconsistent ) {<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* 
Diskless Peer becomes primary */<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; if (os.peer == Secondary &amp;&amp; ns.peer == Primary ) 
{<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; drbd_uuid_new_current(mdev);<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; }<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; /* Diskless Peer becomes secondary */<BR>&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; if (os.peer == Primary &amp;&amp; ns.peer == 
Secondary ) {<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; 
drbd_al_to_on_disk_bm(mdev);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp; &nbsp; &nbsp; &nbsp; }<BR>But the lc entry was freed&nbsp;by the 
time &nbsp;we called drbd_al_to_on_disk_bm().&nbsp; If this is correct, I am 
still not sure</SPAN></FONT></DIV>
<DIV><FONT><SPAN class=672582021-09052007>how to best fix 
this.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=672582021-09052007></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=672582021-09052007>Thanks</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=672582021-09052007>EM--</SPAN></FONT></DIV>
<DIV><FONT><SPAN 
class=672582021-09052007>&nbsp;</DIV></SPAN></FONT></BODY></HTML>