diff --git a/fsimageplugin/filesystem.cpp b/fsimageplugin/filesystem.cpp index 9e79ca14..46fd69d4 100644 --- a/fsimageplugin/filesystem.cpp +++ b/fsimageplugin/filesystem.cpp @@ -383,9 +383,10 @@ void Filesystem::overlappedIoCompletion(SNextBlock * block, DWORD dwErrorCode, D for(size_t i=0;in_buffers;++i) block->buffers[i].state = ENextBlockState_Error; } - else if (dwNumberOfBytesTransfered != getBlocksize()) + else if (dwNumberOfBytesTransfered != block->n_buffers*getBlocksize()) { - Server->Log("Reading from device at position " + convert(offset) + " failed. OS returned only "+convert((int64)dwNumberOfBytesTransfered)+" bytes", LL_ERROR); + Server->Log("Reading from device at position " + convert(offset) + " failed. OS returned only "+convert((int64)dwNumberOfBytesTransfered)+" bytes" + ". Expected "+convert(block->n_buffers*getBlocksize())+" bytes", LL_ERROR); has_error = true; for(size_t i=0;in_buffers;++i) block->buffers[i].state = ENextBlockState_Error; @@ -563,6 +564,7 @@ void Filesystem::initReadahead(IFSImageFactory::EReadaheadMode read_ahead, bool } next_blocks[i].buffers[0].state = ENextBlockState_Queued; next_blocks[i].fs = this; + next_blocks[i].buffers[0].block = &next_blocks[i]; for(size_t j=1;jnextBlock(overlapped_next_block); if (Server->getTimeMS() - queue_starttime > 500) {