Re: [PATCH 0/2] make VM_SOFTDIRTY a sticky VMA flag
Anshuman Khandual <[email protected]> Mon, 17 Nov 2025 10:07:22 +0530
| Newsgroups | dev.linux.lists.criu,org.kernel.vger.linux-kernel,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On 17/11/25 6:23 AM, Andrei Vagin wrote: > On Fri, Nov 14, 2025 at 9:59 AM Lorenzo Stoakes > <[email protected]> wrote: >> >> Currently we set VM_SOFTDIRTY when a new mapping is set up (whether by >> establishing a new VMA, or via merge) as implemented in __mmap_complete() >> and do_brk_flags(). >> >> However, when performing a merge of existing mappings such as when >> performing mprotect(), we may lose the VM_SOFTDIRTY flag. > > Losing VM_SOFTDIRTY is definitely a bug, thank you for fixing it. > > A separate concern is whether merging two VMAs should be permitted when > one has the VM_SOFTDIRTY flag set and another does not. I think the > merging operation should be disallowed.The issue is that If merging VM_SOFTDIRTY and non-VM_SOFTDIRTY VMAs would not be allowed then what is the point for moving VM_SOFTDIRTY as VM_STICKY ? > PAGE_IS_SOFT_DIRTY will be reported for every page in the resulting VMA. > Consider a scenario where a large VMA has only a small number of pages > marked SOFT_DIRTY. If we merge it with a smaller VMA that does have > VM_SOFTDIRTY, all pages in the originally large VMA will subsequently be > reported as SOFT_DIRTY. As a result, CRIU will needlessly dump all of > these pages again, even though the vast majority of them were unchanged > since the prior checkpoint iteration. > > Thanks, > Andrei > >> >> >> Lorenzo Stoakes (2): >> mm: propagate VM_SOFTDIRTY on merge >> testing/selftests/mm: add soft-dirty merge self-test >> >> include/linux/mm.h | 23 ++++++----- >> tools/testing/selftests/mm/soft-dirty.c | 51 ++++++++++++++++++++++++- >> tools/testing/vma/vma_internal.h | 23 ++++++----- >> 3 files changed, 72 insertions(+), 25 deletions(-) >> >> -- >> 2.51.0 >> >