index: mm: Add flag to open call to populate buffer
diff --git a/libkmod/libkmod-index.c b/libkmod/libkmod-index.c
index bfabd10..ce4ad6a 100644
--- a/libkmod/libkmod-index.c
+++ b/libkmod/libkmod-index.c
@@ -654,9 +654,11 @@
free(node);
}
-struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename)
+struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename,
+ bool populate)
{
int fd;
+ int flags;
struct stat st;
struct index_mm *idx;
struct {
@@ -681,9 +683,12 @@
goto fail;
}
- if ((idx->mm = mmap(0, st.st_size, PROT_READ,
- MAP_PRIVATE | MAP_POPULATE,
- fd, 0)) == MAP_FAILED) {
+ flags = MAP_PRIVATE;
+ if (populate)
+ flags |= MAP_POPULATE;
+
+ if ((idx->mm = mmap(0, st.st_size, PROT_READ, flags, fd, 0))
+ == MAP_FAILED) {
ERR(ctx, "%m\n");
goto fail;
}