Re: [Yaffs] write operation returns incorrect value in case …

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Todd Poynor
Date:  
To: Mikhail Ryleev
CC: yaffs
Subject: Re: [Yaffs] write operation returns incorrect value in case device isout 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