<br><br>
<div><span class="gmail_quote">On 12/22/05, <b class="gmail_sendername">Todd Poynor</b> &lt;<a href="mailto:tpoynor@mvista.com">tpoynor@mvista.com</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Mikhail Ryleev wrote:<br><br>&gt; It also fixes a problem with partially written data that actually should
<br>&gt; return the amount of data written.<br><br>May be OK, most callers will simply treat as an error, but various other<br>commit_write implementations don't do this.&nbsp;&nbsp;What code expects a partial<br>count return?</blockquote>

<div>&nbsp;</div>
<div>For example&nbsp;it is&nbsp;called by generic_file_write routine which is an implementation of &quot;write&quot; call.&nbsp;</div>
<div>Since it is that generic, we have to be extremely careful what we return here.&nbsp;</div>
<div>As for partial&nbsp;count return,&nbsp;&nbsp;if we&nbsp;change the state of the file, advance file pointer or&nbsp;change the size of the file, </div>
<div>we have to let the caller know that that happened. An alternative would be to completely discard changes, </div>
<div>probably&nbsp;it is much better but far more complex.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div>&nbsp;</div><br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">&gt; 2. device is out of space while creating new object. In this case<br>&gt; current code returns ENOMEM error code which is also misleading.
<br>&gt; Unfortunatly, I do not see a simple fix here,&nbsp;&nbsp;the structure of code is<br>&gt; such that it is hard to diffirenciate out-of-memory vs. out-of-space<br>&gt; situation here but I think ENOSPC would be better here because it is
<br>&gt; more likely to happen.<br>&gt;<br>&gt;...<br>&gt; @@ -785,7 +784,7 @@<br>&gt;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp; yaffs_GrossUnlock(dev);<br>&gt;<br>&gt; - return nWritten != n ? -ENOSPC : nWritten;<br>&gt; +&nbsp;&nbsp; return ( nWritten == n || nWritten &gt; 0 ) ? nWritten : -ENOSPC;
<br><br>Can't match the code change to the description above, how was ENOMEM<br>returned before?</blockquote>
<div>&nbsp;</div>
<div>ENOMEM is returned by yaffs_mknod call in case it failed to create new object for whatever reason&nbsp;and not in that patch. </div>
<div>I do not have&nbsp;simple solution for that, other then replace it with ENOSPC which is arguably not much better. &nbsp;</div>
<div>&nbsp;</div><br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Is a check for nWritten &lt; 0 (-ENOMEM) appropriate?&nbsp;&nbsp;Or else ( nWritten<br>== n || nWritten &gt; 0 ) can simply be nWritten &gt; 0 .
<br><br>--<br>Todd<br></blockquote></div><br>