mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
selftests/mm: khugepaged: initialize file contents via mmap
file_setup_area() currently allocates anonymous memory, fills it, and writes it into the backing file used for collapse testing. Instead of copying data through write(), resize the file with ftruncate(), map it directly with MAP_SHARED, and initialize the mapped area in place. This simplifies the setup path and avoids the need for explicit partial write handling. Link: https://lore.kernel.org/20260429115816.98824-1-agarwal.vineet2006@gmail.com Signed-off-by: Vineet Agarwal <agarwal.vineet2006@gmail.com> Reviewed-by: Zi Yan <ziy@nvidia.com> Tested-by: Zi Yan <ziy@nvidia.com> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Barry Song <baohua@kernel.org> Cc: Dev Jain <dev.jain@arm.com> Cc: Lance Yang <lance.yang@linux.dev> Cc: Liam R. Howlett <liam@infradead.org> Cc: Lorenzo Stoakes <ljs@kernel.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Nico Pache <npache@redhat.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Shuah Khan <shuah@kernel.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
77289dcfa9
commit
9f7ff45e99
|
|
@ -373,7 +373,7 @@ static void *file_setup_area(int nr_hpages)
|
|||
unlink(finfo.path); /* Cleanup from previous failed tests */
|
||||
printf("Creating %s for collapse%s...", finfo.path,
|
||||
finfo.type == VMA_SHMEM ? " (tmpfs)" : "");
|
||||
fd = open(finfo.path, O_DSYNC | O_CREAT | O_RDWR | O_TRUNC | O_EXCL,
|
||||
fd = open(finfo.path, O_CREAT | O_RDWR | O_TRUNC | O_EXCL,
|
||||
777);
|
||||
if (fd < 0) {
|
||||
perror("open()");
|
||||
|
|
@ -381,9 +381,21 @@ static void *file_setup_area(int nr_hpages)
|
|||
}
|
||||
|
||||
size = nr_hpages * hpage_pmd_size;
|
||||
p = alloc_mapping(nr_hpages);
|
||||
if (ftruncate(fd, size)) {
|
||||
perror("ftruncate()");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
p = mmap(BASE_ADDR, size, PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED, fd, 0);
|
||||
if (p != BASE_ADDR) {
|
||||
perror("mmap()");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
fill_memory(p, 0, size);
|
||||
write(fd, p, size);
|
||||
if (msync(p, size, MS_SYNC)) {
|
||||
perror("msync()");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
close(fd);
|
||||
munmap(p, size);
|
||||
success("OK");
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user