Alan> On Fri, 2002-07-12 at 21:39, David Mosberger wrote:
>> Is there a good reason why the MAP_NORESERVE flag is ignored when
>> MAP_SHARED is specified? (Hint: it's the call to vm_enough_memory()
>> in shmem_file_setup() that's causing MAP_NORESERVE to be ignored.)
Alan> In no overcommit mode MAP_NORESERVE is never honoured. In conventional
Alan> overcommit mode I may have broken something between base and -ac. Which
Alan> bit of the code are you looking at ?
2.4.18, though as far as I looked, the latest 2.5 has the same behavior.
Specifically, in do_mmap_pgoff() we have:
/* Private writable mapping? Check memory availability.. */
if ((vm_flags & (VM_SHARED | VM_WRITE)) == VM_WRITE &&
!(flags & MAP_NORESERVE) &&
!vm_enough_memory(len >> PAGE_SHIFT))
return -ENOMEM;
and in shmem_file_setup() we have:
if (!vm_enough_memory((size) >> PAGE_CACHE_SHIFT))
return ERR_PTR(-ENOMEM);
So, if we don't have MAP_SHARED (first case), MAP_NORESERVE is
honored, whereas with MAP_SHARED (second case), MAP_NORESERVE is
ignored.
--david
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/