if(batchmode &&
mode == MT_WRITE &&
end >= This->FileSize) {
+ /* In batch mode, when writing at end of file, "pad"
+ * to nearest cluster boundary so that we don't have
+ * to read that data back from disk. */
*len += ROUND_UP(end, clus_size) - end;
}
/* Error occured */
return ret;
if((uint32_t)ret > requestedLen)
+ /* More data than requested may be written to lower
+ * levels if batch mode is active, in order to "pad"
+ * the last cluster of a file, so that we don't have
+ * to read that back from disk */
bytesWritten = requestedLen;
else
- bytesWritten = requestedLen;
+ bytesWritten = (uint32_t)ret;
if (where + bytesWritten > This->FileSize )
This->FileSize = where + bytesWritten;
recalcPreallocSize(This);
- return ret;
+ return (ssize_t)bytesWritten;
}