* The IOCache always needs a DMAResource; it was sometimes checked, and

sometimes not.
* This fixes CIDs 1755-1756, and 1505-1506.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38460 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2010-08-30 20:06:52 +00:00
parent b7f609650b
commit 73b1cb8240

View File

@ -49,6 +49,7 @@ IOCache::IOCache(DMAResource* resource, size_t cacheLineSize)
fPages(NULL),
fVecs(NULL)
{
ASSERT(resource != NULL);
TRACE("%p->IOCache::IOCache(%p, %" B_PRIuSIZE ")\n", this, resource,
cacheLineSize);
@ -461,8 +462,7 @@ IOCache::_TransferRequestLineUncached(IORequest* request, off_t lineOffset,
// Keep the request in unfinished state. ScheduleRequest() will set
// the final status and notify.
if (fDMAResource != NULL)
fDMAResource->RecycleBuffer(operation.Buffer());
fDMAResource->RecycleBuffer(operation.Buffer());
if (error != B_OK) {
TRACE("%p->IOCache::_TransferRequestLineUncached(): operation at "
@ -558,8 +558,7 @@ IOCache::_TransferPages(size_t firstPage, size_t pageCount, bool isWrite,
request.RemoveOperation(&operation);
if (fDMAResource != NULL)
fDMAResource->RecycleBuffer(operation.Buffer());
fDMAResource->RecycleBuffer(operation.Buffer());
if (error != B_OK) {
TRACE("%p->IOCache::_TransferLine(): operation at %" B_PRIdOFF