]> Zhao Yanbai Git Server - minix.git/commitdiff
VM: allocate cache pages in mmap region 54/3154/1
authorDavid van Moolenbroek <david@minix3.org>
Sun, 6 Sep 2015 14:56:30 +0000 (16:56 +0200)
committerDavid van Moolenbroek <david@minix3.org>
Thu, 17 Sep 2015 14:09:06 +0000 (14:09 +0000)
That way, these pages are transferred during live update, as they
should.  This resolves a mfs crash after a number of live updates.

Change-Id: Ia53bec2692b2114c29b96a453beb0f915f56453a

minix/servers/vm/mem_cache.c

index 56c596dac7e4009060f11681d20f8241a6dcec6b..a702bb9fbc08e8659ec4d106b5da84ff78c97df2 100644 (file)
@@ -121,10 +121,13 @@ do_mapcache(message *msg)
         * in case instrumentation needs to allocate in-band metadata later.
         * This does effectively halve the usable part of the caller's address
         * space, though, so only do this if we are instrumenting at all.
+        * Also make sure it falls within the mmap range, so that it is
+        * transferred upon live update.  This again cuts the usable part of
+        * the address space for caching purposes in half.
         */
        alloc_bytes += VM_PAGE_SIZE;
 #endif
-       if (!(vr = map_page_region(caller, VM_PAGE_SIZE, VM_DATATOP,
+       if (!(vr = map_page_region(caller, VM_MMAPBASE, VM_MMAPTOP,
            alloc_bytes, VR_ANON | VR_WRITABLE, 0, &mem_type_cache))) {
                printf("VM: map_page_region failed\n");
                return ENOMEM;