mirror of
https://review.haiku-os.org/haiku
synced 2025-01-18 12:38:51 +01:00
kernel/vm: Add "unmergeable" flag to VMCache.
ramfs needs to create caches that are both temporary and unmergeable, so add another flag to make this state possible. Otherwise, mmap'ed files from ramfs might wind up in VMCache trying to merge the caches when the last one is closed, which we don't want.
This commit is contained in:
parent
1f1be52007
commit
a8877df135
@ -198,6 +198,7 @@ public:
|
||||
// TODO: Remove!
|
||||
uint32 page_count;
|
||||
uint32 temporary : 1;
|
||||
uint32 unmergeable : 1;
|
||||
uint32 type : 6;
|
||||
|
||||
#if DEBUG_CACHE_LIST
|
||||
|
@ -255,6 +255,7 @@ DataContainer::_SwitchToCacheMode()
|
||||
return error;
|
||||
|
||||
fCache->temporary = 1;
|
||||
fCache->unmergeable = 1;
|
||||
fCache->virtual_end = fSize;
|
||||
|
||||
error = fCache->Commit(fSize, VM_PRIORITY_USER);
|
||||
|
@ -627,8 +627,8 @@ VMCacheRef::VMCacheRef(VMCache* cache)
|
||||
bool
|
||||
VMCache::_IsMergeable() const
|
||||
{
|
||||
return areas == NULL && temporary && !consumers.IsEmpty()
|
||||
&& consumers.Head() == consumers.Tail();
|
||||
return areas == NULL && temporary && !unmergeable
|
||||
&& !consumers.IsEmpty() && consumers.Head() == consumers.Tail();
|
||||
}
|
||||
|
||||
|
||||
@ -657,6 +657,7 @@ VMCache::Init(uint32 cacheType, uint32 allocationFlags)
|
||||
virtual_end = 0;
|
||||
committed_size = 0;
|
||||
temporary = 0;
|
||||
unmergeable = 0;
|
||||
page_count = 0;
|
||||
fWiredPagesCount = 0;
|
||||
type = cacheType;
|
||||
|
Loading…
Reference in New Issue
Block a user