From 778aa3bf626b36f68fcdcc29f5f0f084ad591dde Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 19 Nov 2009 16:19:59 +0000 Subject: [PATCH] transfer_io_request_data(): There was some confusion about the isWrite parameter and request->IsWrite(). The parameter means whether we want to write to the request's I/O buffer (therefore renamed it to writeToRequest), while request->IsWrite() indicates whether the request is a write request. One can only write to a read request's buffer and vice versa. IOBuffer::LockMemory() also wants to know whether the request is a write request, not whether we want to write to the memory. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34135 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/device_manager/io_requests.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/system/kernel/device_manager/io_requests.cpp b/src/system/kernel/device_manager/io_requests.cpp index 322b788b05..e8853dcfc0 100644 --- a/src/system/kernel/device_manager/io_requests.cpp +++ b/src/system/kernel/device_manager/io_requests.cpp @@ -13,22 +13,24 @@ static status_t transfer_io_request_data(io_request* request, void* buffer, size_t size, - bool isWrite) + bool writeToRequest) { - if (isWrite != request->IsWrite() || request->RemainingBytes() < size) + if (writeToRequest == request->IsWrite() + || request->RemainingBytes() < size) { return B_BAD_VALUE; + } // lock the request buffer memory, if it is user memory IOBuffer* ioBuffer = request->Buffer(); if (ioBuffer->IsUser() && !ioBuffer->IsMemoryLocked()) { - status_t error = ioBuffer->LockMemory(request->Team(), isWrite); + status_t error = ioBuffer->LockMemory(request->Team(), !writeToRequest); if (error != B_OK) return error; } // read/write off_t offset = request->Offset() + request->TransferredBytes(); - status_t error = isWrite + status_t error = writeToRequest ? request->CopyData(buffer, offset, size) : request->CopyData(offset, buffer, size); if (error != B_OK)