* 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:
Stephan Aßmus 2009-04-28 08:03:39 +00:00
parent 34d49541b0
commit aff0fbbe57

View File

@ -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;
}