From aa06eeb1b9efd779485e025e9292ae548d7d26f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 1 Feb 2011 18:03:28 +0000 Subject: [PATCH] * If retrieving the cache line failed, try again using an uncached access. That should help with the remaining I/O errors with (older) CDs that I see only on Haiku. Not yet tested, though. * Added a bit of debug output to see when/if it's triggered. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40344 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/device_manager/IOCache.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/device_manager/IOCache.cpp b/src/system/kernel/device_manager/IOCache.cpp index d4eb97d189..fc2e71068f 100644 --- a/src/system/kernel/device_manager/IOCache.cpp +++ b/src/system/kernel/device_manager/IOCache.cpp @@ -381,7 +381,14 @@ IOCache::_TransferRequestLine(IORequest* request, off_t lineOffset, missingPages, false, isVIP); if (error != B_OK) { _DiscardPages(firstMissing - firstPageOffset, missingPages); - return error; + + dprintf("IOCache: falling back to uncached transfer, offset %" + B_PRIiOFF ", length %" B_PRIuSIZE "\n", requestOffset, + requestLength); + + // Try again using an uncached transfer + return _TransferRequestLineUncached(request, lineOffset, + requestOffset, requestLength); } } }