axeld:
* vfs_read_pages_async() must not be called with locked cache, since it cannot be guaranteed that the operation will be performed asynchronously. (The ISO9660 FS for example does not implement the new IO hooks... yet.) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30476 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
34d49541b0
commit
aff0fbbe57
14
src/system/kernel/cache/file_cache.cpp
vendored
14
src/system/kernel/cache/file_cache.cpp
vendored
@ -154,7 +154,9 @@ PrecacheIO::Init()
|
||||
}
|
||||
|
||||
|
||||
//! Cache has to be locked when calling this method.
|
||||
/*! Cache has to be locked when calling this method, but it will be temporarily
|
||||
unlocked during execution.
|
||||
*/
|
||||
status_t
|
||||
PrecacheIO::Start()
|
||||
{
|
||||
@ -185,8 +187,14 @@ PrecacheIO::Start()
|
||||
return B_NO_MEMORY;
|
||||
}
|
||||
|
||||
return vfs_asynchronous_read_pages(fRef->vnode, NULL, fOffset, fVecs,
|
||||
vecCount, fSize, B_PHYSICAL_IO_REQUEST, this);
|
||||
fCache->Unlock();
|
||||
|
||||
status_t status = vfs_asynchronous_read_pages(fRef->vnode, NULL, fOffset,
|
||||
fVecs, vecCount, fSize, B_PHYSICAL_IO_REQUEST, this);
|
||||
|
||||
fCache->Lock();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user