logo       

Re: write operation returns incorrect value in case device is out of space: msg#00079

linux.file-systems.yaffs

Subject: Re: write operation returns incorrect value in case device is out of space

Mikhail Ryleev wrote:

It also fixes a problem with partially written data that actually should return the amount of data written.

May be OK, most callers will simply treat as an error, but various other commit_write implementations don't do this. What code expects a partial count return?

2. device is out of space while creating new object. In this case current code returns ENOMEM error code which is also misleading. Unfortunatly, I do not see a simple fix here, the structure of code is such that it is hard to diffirenciate out-of-memory vs. out-of-space situation here but I think ENOSPC would be better here because it is more likely to happen.
...
@@ -785,7 +784,7 @@
}
yaffs_GrossUnlock(dev);
- return nWritten != n ? -ENOSPC : nWritten;
+ return ( nWritten == n || nWritten > 0 ) ? nWritten : -ENOSPC;

Can't match the code change to the description above, how was ENOMEM returned before?

Is a check for nWritten < 0 (-ENOMEM) appropriate? Or else ( nWritten == n || nWritten > 0 ) can simply be nWritten > 0 .

--
Todd


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise