<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Cool, thanks!<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>От:</b> Pavel Tikhomirov &lt;ptikhomirov@virtuozzo.com&gt;<br>
<b>Отправлено:</b> 4 ноября 2022 г. 15:56<br>
<b>Кому:</b> Andrey Zhadchenko &lt;andrey.zhadchenko@virtuozzo.com&gt;<br>
<b>Копия:</b> devel@openvz.org &lt;devel@openvz.org&gt;; Konstantin Khorenko &lt;khorenko@virtuozzo.com&gt;<br>
<b>Тема:</b> Re: [PATCH RH9 v4 01/10] drivers/vhost: vhost-blk accelerator for virtio-blk guests</font>
<div>&nbsp;</div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText"><br>
<br>
On 04.11.2022 15:28, Andrey Zhadchenko wrote:<br>
&gt; <br>
&gt; <br>
&gt; On 11/4/22 14:31, Pavel Tikhomirov wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On 01.11.2022 10:25, Andrey Zhadchenko wrote:<br>
&gt;&gt;&gt; +/* It is forbidden to call more than one vhost_blk_flush() <br>
&gt;&gt;&gt; simultaneously */<br>
&gt;&gt;&gt; +static void vhost_blk_flush(struct vhost_blk *blk)<br>
&gt;&gt;&gt; +{<br>
&gt;&gt;&gt; +&nbsp;&nbsp;&nbsp; int flush_bin;<br>
&gt;&gt;&gt; +<br>
&gt;&gt;&gt; +&nbsp;&nbsp;&nbsp; spin_lock(&amp;blk-&gt;flush_lock);<br>
&gt;&gt;&gt; +&nbsp;&nbsp;&nbsp; blk-&gt;during_flush = 1;<br>
&gt;&gt;&gt; +&nbsp;&nbsp;&nbsp; flush_bin = blk-&gt;new_req_bin;<br>
&gt;&gt;&gt; +&nbsp;&nbsp;&nbsp; blk-&gt;new_req_bin = (blk-&gt;new_req_bin) ? 0 : 1;<br>
&gt;&gt;<br>
&gt;&gt; We can use shorter and simpler expression for this:<br>
&gt;&gt;<br>
&gt;&gt; blk-&gt;new_req_bin = !blk-&gt;new_req_bin;<br>
&gt; <br>
&gt; Are you sure C standard actually defines it this way and we are not <br>
&gt; relying on unspecified behavior?<br>
&gt; I thought ! operator only defined for logical expressions<br>
<br>
C99 6.5.3.3.5 says:<br>
&quot;The result of the logical negation operator ! is 0 if the value of its <br>
operand compares<br>
unequal to 0, 1 if the value of its operand compares equal to 0. The <br>
result has type int.<br>
The expression !E is equivalent to (0==E)&quot;<br>
<a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf">https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf</a><br>
<br>
So I don't see any problem comparing new_req_bin of type int to 0.<br>
<br>
&gt; <br>
&gt;&gt;<br>
&gt;&gt;&gt; +&nbsp;&nbsp;&nbsp; spin_unlock(&amp;blk-&gt;flush_lock);<br>
&gt;&gt;<br>
<br>
-- <br>
Best regards, Tikhomirov Pavel<br>
Software Developer, Virtuozzo.<br>
</div>
</span></font></div>
</body>
</html>