Use 'MAP_NORESERVE' for empty memory ranges allocation.
authorshort <>
Wed, 17 Sep 2003 12:53:08 +0000 (12:53 +0000)
committershort <>
Wed, 17 Sep 2003 12:53:08 +0000 (12:53 +0000)
src/install/acquire/cabinet.c
src/libcaptive/cc/sharedcachemap.c

index d9ba35c..0e9a790 100644 (file)
@@ -175,7 +175,13 @@ struct acquire_cabinet *r;
        
        captive_new(r);
        if (MAP_FAILED==(r->base=mmap(
-                       NULL,CAPTIVE_ROUND_UP64(file_info->size,getpagesize()),PROT_READ|PROT_WRITE,MAP_ANONYMOUS|MAP_PRIVATE,-1,0))) {
+                       NULL,   /* start */
+                       CAPTIVE_ROUND_UP64(file_info->size,getpagesize()),      /* length */
+                       PROT_READ|PROT_WRITE,
+                       MAP_ANONYMOUS|MAP_PRIVATE       /* flags */
+                                       |MAP_NORESERVE, /* We will not probably not read the whole cabinet. */
+                       -1,     /* fd; ignored due to MAP_ANONYMOUS */
+                       0))) {  /* offset; ignored due to MAP_ANONYMOUS */
                g_free(r);
                g_return_val_if_reached(NULL);
                }
index 1cb6541..8b68ac7 100644 (file)
@@ -196,7 +196,8 @@ int errint;
                                        NULL,   /* start */
                                        PAGE_SIZE+size_new+PAGE_SIZE,   /* length; leading and trailing boundary check pages */
                                        PROT_READ|PROT_WRITE,   /* prot; read/write must be possible although write is not guaranteed to be flushed yet */
-                                       MAP_PRIVATE|MAP_ANONYMOUS,      /* flags */
+                                       MAP_PRIVATE|MAP_ANONYMOUS       /* flags */
+                                                       |MAP_NORESERVE, /* At least ext2fsd maps the whole disk. */
                                        -1,     /* fd; ignored due to MAP_ANONYMOUS */
                                        0);     /* offset; ignored due to MAP_ANONYMOUS */
                        if (base==MAP_FAILED)