We have added new functionality to mremap() in Linux 6.17, permitting the
move of multiple VMAs when performing a move alone (that is - providing
MREMAP_MAYMOVE | MREMAP_FIXED flags and specifying old_size == new_size).
We document this new feature.
Additionally, we document previously undocumented behaviour around
shrinking of input VMA ranges which permits the input range to span
multiple VMAs.
v5:
* Reword point about 'old_address' needing to be in a mapped range more clearly
as per Alejandro.
* Update wording accordingly around this, e.g. referencing unmapped areas
between mappings to be consistent.
* Minor wording fixup stating that the MREMAP_DONTUNMAP flag may _also_ be
specified.
* Separated out adding a section on 'pure' moves and describing the new
behaviour, as per Alejandro.
* Update the commit message of 2/3 to reflect the above.
* Removed erroneously introduced blank line in 2/3 as per Alejandro.
v4:
* Update description of newly discovered mremap() behaviour to highlight the
fact that, if in-place, [old_address, old_address + new_length) may span
multiple VMAs also.
* Fix up commit message for 2/2 to correct typo on specified range.
* Added code sample to 1/2 as per Alejandro.
https://lore.kernel.org/all/cover.1754414738.git.lorenzo.stoakes@oracle.com/
v3:
* Use more precise language around mremap() move description as per Jann.
* Fix some typos in commit messages.
https://lore.kernel.org/all/cover.1753795807.git.lorenzo.stoakes@oracle.com/
v2:
* Split out the two man page changes as requested by Alejandro.
https://lore.kernel.org/all/cover.1753711160.git.lorenzo.stoakes@oracle.com/
v1:
https://lore.kernel.org/all/20250723174634.75054-1-lorenzo.stoakes@oracle.com/
Lorenzo Stoakes (3):
man/man2/mremap.2: explicitly document the simple move operation
man/man2/mremap.2: describe multiple mapping move
man/man2/mremap.2: describe previously undocumented shrink behaviour
man/man2/mremap.2 | 109 +++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 98 insertions(+), 11 deletions(-)
--
2.50.1