Open the underlying file (or device) with O_NOCACHE. This works around a

potential page writer deadlock.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37587 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2010-07-19 11:57:57 +00:00
parent e2cc7215e8
commit 284f17739e

View File

@ -311,7 +311,12 @@ struct RawDevice : Device, DoublyLinkedListLinkImpl<RawDevice> {
status_t Init(const char* fileName)
{
// open and stat file
fFD = open(fileName, O_RDWR);
fFD = open(fileName, O_RDWR | O_NOCACHE);
// TODO: The O_NOCACHE is a work-around for a page writer problem.
// Since it collects pages for writing back without regard for
// which caches and file systems they belong to, a deadlock can
// result when pages from both the underlying file system and the
// one using the checksum device are collected in one run.
if (fFD < 0)
return errno;