Lines Matching defs:request

62 	mutex_init(&fSerializationLock, "I/O cache request serialization");
158 IOCache::ScheduleRequest(IORequest* request)
160 TRACE("%p->IOCache::ScheduleRequest(%p)\n", this, request);
162 // lock the request's memory
164 IOBuffer* buffer = request->Buffer();
166 error = buffer->LockMemory(request->TeamID(), request->IsWrite());
168 request->SetStatusAndNotify(error);
176 error = _DoRequest(request, bytesTransferred);
181 buffer->UnlockMemory(request->TeamID(), request->IsWrite());
185 request->SetTransferredBytes(bytesTransferred < request->Length(),
187 request->SetStatusAndNotify(B_OK);
189 request->SetStatusAndNotify(error);
196 IOCache::AbortRequest(IORequest* request, status_t status)
226 IOCache::_DoRequest(IORequest* request, generic_size_t& _bytesTransferred)
228 off_t offset = request->Offset();
229 generic_size_t length = request->Length();
232 ", length: %" B_PRIuSIZE "\n", this, request, offset, length);
237 // truncate the request to the device capacity
247 // intersection of request and cache line
253 status_t error = _TransferRequestLine(request, lineOffset,
268 IOCache::_TransferRequestLine(IORequest* request, off_t lineOffset,
272 ", %" B_PRIdOFF ", %" B_PRIuSIZE ")\n", this, request, lineOffset,
319 bool isVIP = (request->Flags() & B_VIP_IO_REQUEST) != 0;
322 // TODO: If this is a read request and the missing pages range doesn't intersect
323 // with the request, just satisfy the request and don't read anything at all.
334 return _TransferRequestLineUncached(request, lineOffset,
376 // Read in the missing pages, if this is a read request or a write
377 // request that doesn't cover the complete missing range.
378 if (request->IsRead()
395 return _TransferRequestLineUncached(request, lineOffset,
401 if (request->IsRead()) {
402 // copy data to request
403 status_t error = _CopyPages(request, requestOffset - lineOffset,
409 // copy data from request
410 status_t error = _CopyPages(request, requestOffset - lineOffset,
434 IOCache::_TransferRequestLineUncached(IORequest* request, off_t lineOffset,
438 ", %" B_PRIdOFF ", %" B_PRIuSIZE ")\n", this, request, lineOffset,
441 // Advance the request to the interesting offset, so the DMAResource can
444 = request->Offset() + request->Length() - request->RemainingBytes();
448 request, actualRequestOffset, requestOffset);
453 request->Advance(requestOffset - actualRequestOffset);
455 generic_size_t requestRemaining = request->RemainingBytes() - requestLength;
457 // Process single operations until the specified part of the request is
462 while (request->RemainingBytes() > requestRemaining
463 && request->Status() > 0) {
464 status_t error = fDMAResource->TranslateNext(request, &operation,
465 request->RemainingBytes() - requestRemaining);
471 request->OperationFinished(&operation);
472 request->SetUnfinished();
473 // Keep the request in unfinished state. ScheduleRequest() will set
555 // create a request for the transfer
556 IORequest request;
557 status_t error = request.Init(firstPageOffset, fVecs, vecCount,
563 // Process single operations until the complete request is finished or
568 while (request.RemainingBytes() > 0 && request.Status() > 0) {
569 error = fDMAResource->TranslateNext(&request, &operation,
576 request.RemoveOperation(&operation);
650 /*! Copies the contents of pages in \c fPages to \a request, or vice versa.
651 \param request The request.
654 \param requestOffset The request offset where to start copying.
657 \a request, otherwise the other way around.
661 IOCache::_CopyPages(IORequest* request, size_t pagesRelativeOffset,
665 ", %" B_PRIuSIZE ", %d)\n", this, request, pagesRelativeOffset,
694 error = request->CopyData((uint8*)(address + inPageOffset),
697 error = request->CopyData(requestOffset,
718 error = request->CopyData((uint8*)fAreaBase + pagesRelativeOffset,
721 error = request->CopyData(requestOffset,