On 02/11/2014 05:00 PM, Juan Quintela wrote: > fwrite() returns the number of items written. But when there is one > error, it can return a short write. > > In the particular bug that I was tracking, I did a migration to a > read-only filesystem. And it was able to finish the migration > correctly. fwrite() never returned a negative error code, the 1st > time it returns 0, after that it returns 4096. (migration writes > chunks of about 14000 bytes). And it was able to "complete" the > migration with success (yes, reading the file was a bit more > difficult). On the 1st fwrite() for the read-only filesystem, > it returns an errno of -EPIPE, that is exactly what has failed. > > To add insult to injury, if your amount of memory was big enough (12GB > on my case), it overwrote some important structure, and from them, > malloc failed. This check makes the problem go away. > > Signed-off-by: Juan Quintela <[email protected]> > --- > > v2: a.k.a Paolo was right > > On the first call to fwrite() it returns 0, and errno is setup to > EPIPE, exactly what we wanted. > > Once here, improve the commit message.
Reviewed-by: Eric Blake <[email protected]> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
