<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-03-10 23:04 GMT+09:00 Lars Ellenberg <span dir="ltr">&lt;<a href="mailto:lars.ellenberg@linbit.com" target="_blank">lars.ellenberg@linbit.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div>On Thu, Mar 10, 2016 at 09:39:46PM +0900, Jaeheon Kim wrote:<br>
&gt; 2. Sources<br>
&gt;<br>
&gt; 1) Ver 9.0.1<br>
&gt;<br>
&gt;     static inline void inc_ap_bio(struct drbd_device *device, int rw)<br>
&gt;     {<br>
&gt;         wait_event(device-&gt;misc_wait, inc_ap_bio_cond(device, rw));<br>
&gt;     }<br>
&gt;<br>
&gt;     static inline void dec_ap_bio(struct drbd_device *device, int rw)<br>
&gt;     {<br>
&gt;          int ap_bio = atomic_dec_return(&amp;device-&gt;ap_bio_cnt[rw]);<br>
&gt;        .........<br>
&gt;<br>
&gt;          if (ap_bio == 0)<br>
&gt;                 wake_up(&amp;device-&gt;misc_wait);<br>
&gt;     }<br>
&gt;<br>
&gt;<br>
&gt; 2) Ver 8.4.7<br>
&gt;<br>
&gt;     static inline void inc_ap_bio(struct drbd_device *device)<br>
&gt;     {<br>
&gt;          wait_event(device-&gt;misc_wait, inc_ap_bio_cond(device));<br>
&gt;     }<br>
&gt;<br>
&gt;     static inline void dec_ap_bio(struct drbd_device *device)<br>
&gt;     {<br>
&gt;          int mxb = drbd_get_max_buffers(device);<br>
&gt;          int ap_bio = atomic_dec_return(&amp;device-&gt;ap_bio_cnt);<br>
&gt;<br>
&gt;         .............<br>
&gt;<br>
&gt;<br>
&gt;          /* this currently does wake_up for every dec_ap_bio!<br>
&gt;           * maybe rather introduce some type of hysteresis?<br>
&gt;           * e.g. (ap_bio == mxb/2 || ap_bio == 0) ? */<br>
&gt;<br>
&gt;           if (ap_bio &lt; mxb)<br>
&gt;                  wake_up(&amp;device-&gt;misc_wait);<br>
&gt;     }<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; 3. Questions<br>
&gt;<br>
&gt; 1) See &quot;1. Stacks&quot;.<br>
&gt;     I think, The Linux &quot;drbd_make_request+0x14a/0x360 [drbd]&quot; will probably<br>
&gt;     mean the same thing as the Windows &quot;drbd!inc_ap_bio+0x49&quot;.<br>
&gt;     What do you think about it?<br>
&gt;<br>
&gt; 2) In version 8.4.7, dec_ap_bio wakes up misc_wait when condition is<br>
&gt; &quot;ap_bio &lt; max&quot;.<br>
&gt;     I mean, this version has greater tolerance than version 9.0.1.<br>
&gt;     My question is Why do you change this condition from &quot;ap_bio &lt; max&quot; to<br>
&gt; &quot;ap_bio == 0&quot;  in version 9.0.1?<br>
<br>
<br>
</div></div>Because there is no more &quot;max&quot; in 9, no-one can possibly wait for<br>
count &lt; max. There are however things that still wait for count == 0.<br>
<br></blockquote><div><br></div><div>I see.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Though we probably will re-introduce some (resource wide) limit<br>
on the maximum amount of &quot;in-flight bios&quot; we accept to be queued.<br>
<br></blockquote><div><br></div><div>Could you explain more detail?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
&quot;misc&quot; wait queue is used for a lot of things,<br>
and a lot of things wake it.<br>
<span><font color="#888888"><br></font></span></blockquote><div><br></div><div>Yes, I know that.</div><div><div><div>However, conversely, if anyone do not wake up to this &quot;misc&quot;,  this pending case could be occurred.</div><div>This case had generated during the big file copy. And  you can see <span style="color:rgb(0,0,0)">&quot;drbd_make_request+0x14a/0x360 [drbd]&quot; at Linux stack</span> which is similar Windows.</div><div>So I doubt whether inc_ap_bio is pending forever because the wake-up condition failed at this dec_ap_bio function.</div><div><br></div><div>Anyway, Did you reproduce it in Linux?</div></div><div><br></div><div>Thanks.</div><div><br></div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span><font color="#888888">
<br>
--<br>
: Lars Ellenberg<br>
: LINBIT | Keeping the Digital World Running<br>
: DRBD -- Heartbeat -- Corosync -- Pacemaker<br>
: R&amp;D, Integration, Ops, Consulting, Support<br>
<br>
DRBD® and LINBIT® are registered trademarks of LINBIT<br>
_______________________________________________<br>
drbd-dev mailing list<br>
<a href="mailto:drbd-dev@lists.linbit.com" target="_blank">drbd-dev@lists.linbit.com</a><br>
<a href="http://lists.linbit.com/mailman/listinfo/drbd-dev" rel="noreferrer" target="_blank">http://lists.linbit.com/mailman/listinfo/drbd-dev</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><p style="margin:0cm 0cm 0pt"><img src="cid:image001.png@01D0F522.B2A586F0" alt="설명: logo"><span lang="EN-US" style="color:black;font-size:10pt;font-family:verdana,sans-serif">          </span><span lang="EN-US" style="color:black;font-size:10pt;font-family:verdana,sans-serif">       </span></p><p style="margin:0cm 0cm 0pt"></p><p style="margin:0cm 0cm 0.0001pt;background-image:initial;background-repeat:initial"><font face="verdana, sans-serif"><b><span style="color:black"><span lang="EN-US">JaeHeon Kim.  Director<span style="font-size:10pt">        jhkim</span></span></span></b><span lang="EN-US" style="font-size:10pt;color:black">@<a href="http://mantech.co.kr/" style="color:rgb(17,85,204)" target="_blank">mantech.co.kr</a></span></font></p><p style="margin:0cm 0cm 0.0001pt;line-height:21px"><span lang="EN-US" style="font-size:8pt;line-height:16px;font-family:&#39;\00b9d1\00c740  \00ace0\00b515&#39;;color:rgb(127,127,127)"><img src="cid:ii_150a68c3811acf54" alt="본문 이미지 1" width="400" height="160" style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal;"><br></span></p></div></div></div></div></div></div>
</div></div>