<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 10, 2015 at 12:35 PM, Pavel Emelyanov <span dir="ltr">&lt;<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 08/10/2015 06:00 PM, Hui Kang wrote:<br>
&gt; The process to be restored may not have certain cgroup dir, e.g<br>
&gt; cpu/[PID]/cpu.shares. Currently restoring  will fail in closing<br>
&gt; the file. If this is the case, the fileno is -1 and we can ignore<br>
&gt; this and let the restore proceed.<br>
<br>
</span>If the file is missing then the fopen() itself should return -1.<br></blockquote><div>Hi, Pavel<br></div><div>The file is not missing in the destination, e.g., cpu/cpu.shares. The open and write are successful, e.g., fileno returning 5. Only fclose return error. But if you check fileno(f) after fclose, it returns -1. That&#39;s why I added the additional check for this.<br><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br>
&gt; Signed-off-by: Hui Kang &lt;<a href="mailto:hkang.sunysb@gmail.com">hkang.sunysb@gmail.com</a>&gt;<br>
&gt; ---<br>
&gt;  cgroup.c | 2 +-<br>
&gt;  1 file changed, 1 insertion(+), 1 deletion(-)<br>
&gt;<br>
&gt; diff --git a/cgroup.c b/cgroup.c<br>
&gt; index a4e0146..f4e49b3 100644<br>
&gt; --- a/cgroup.c<br>
&gt; +++ b/cgroup.c<br>
&gt; @@ -974,7 +974,7 @@ static int restore_cgroup_prop(const CgroupPropEntry * cg_prop_entry_p,<br>
&gt;               return -1;<br>
&gt;       }<br>
&gt;<br>
&gt; -     if (fclose(f) != 0) {<br>
&gt; +     if ((fclose(f) != 0) &amp;&amp; (fileno(f) &gt;= 0)) {<br>
&gt;               pr_perror(&quot;Failed closing %s&quot;, path);<br>
&gt;               return -1;<br>
&gt;       }<br>
&gt;<br>
<br>
</div></div></blockquote></div><br></div></div>