Message ID | 20230109205336.3665937-18-surenb@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Per-VMA locks | expand |
On Mon 09-01-23 12:53:12, Suren Baghdasaryan wrote: > Move VMA flag modification (which now implies VMA locking) before > anon_vma_lock_write to match the locking order of page fault handler. Does this changelog assumes per vma locking in the #PF?
On Tue, Jan 17, 2023 at 7:16 AM Michal Hocko <mhocko@suse.com> wrote: > > On Mon 09-01-23 12:53:12, Suren Baghdasaryan wrote: > > Move VMA flag modification (which now implies VMA locking) before > > anon_vma_lock_write to match the locking order of page fault handler. > > Does this changelog assumes per vma locking in the #PF? Hmm, you are right. Page fault handlers do not use per-vma locks yet but the changelog already talks about that. Maybe I should change it to simply: ``` Move VMA flag modification (which now implies VMA locking) before vma_adjust_trans_huge() to ensure the modifications are done after VMA has been locked. ``` Is that better? > > -- > Michal Hocko > SUSE Labs
On Tue 17-01-23 18:01:01, Suren Baghdasaryan wrote: > On Tue, Jan 17, 2023 at 7:16 AM Michal Hocko <mhocko@suse.com> wrote: > > > > On Mon 09-01-23 12:53:12, Suren Baghdasaryan wrote: > > > Move VMA flag modification (which now implies VMA locking) before > > > anon_vma_lock_write to match the locking order of page fault handler. > > > > Does this changelog assumes per vma locking in the #PF? > > Hmm, you are right. Page fault handlers do not use per-vma locks yet > but the changelog already talks about that. Maybe I should change it > to simply: > ``` > Move VMA flag modification (which now implies VMA locking) before > vma_adjust_trans_huge() to ensure the modifications are done after VMA > has been locked. Because .... Withtout that additional reasonaning it is not really clear why that is needed and seems arbitrary.
On Wed, Jan 18, 2023 at 1:23 AM Michal Hocko <mhocko@suse.com> wrote: > > On Tue 17-01-23 18:01:01, Suren Baghdasaryan wrote: > > On Tue, Jan 17, 2023 at 7:16 AM Michal Hocko <mhocko@suse.com> wrote: > > > > > > On Mon 09-01-23 12:53:12, Suren Baghdasaryan wrote: > > > > Move VMA flag modification (which now implies VMA locking) before > > > > anon_vma_lock_write to match the locking order of page fault handler. > > > > > > Does this changelog assumes per vma locking in the #PF? > > > > Hmm, you are right. Page fault handlers do not use per-vma locks yet > > but the changelog already talks about that. Maybe I should change it > > to simply: > > ``` > > Move VMA flag modification (which now implies VMA locking) before > > vma_adjust_trans_huge() to ensure the modifications are done after VMA > > has been locked. > > Because .... because vma_adjust_trans_huge() modifies the VMA and such modifications should be done under VMA write-lock protection. > > Withtout that additional reasonaning it is not really clear why that is > needed and seems arbitrary. Would the above be a good reasoning? > > -- > Michal Hocko > SUSE Labs
On Wed 18-01-23 10:09:29, Suren Baghdasaryan wrote: > On Wed, Jan 18, 2023 at 1:23 AM Michal Hocko <mhocko@suse.com> wrote: > > > > On Tue 17-01-23 18:01:01, Suren Baghdasaryan wrote: > > > On Tue, Jan 17, 2023 at 7:16 AM Michal Hocko <mhocko@suse.com> wrote: > > > > > > > > On Mon 09-01-23 12:53:12, Suren Baghdasaryan wrote: > > > > > Move VMA flag modification (which now implies VMA locking) before > > > > > anon_vma_lock_write to match the locking order of page fault handler. > > > > > > > > Does this changelog assumes per vma locking in the #PF? > > > > > > Hmm, you are right. Page fault handlers do not use per-vma locks yet > > > but the changelog already talks about that. Maybe I should change it > > > to simply: > > > ``` > > > Move VMA flag modification (which now implies VMA locking) before > > > vma_adjust_trans_huge() to ensure the modifications are done after VMA > > > has been locked. > > > > Because .... > > because vma_adjust_trans_huge() modifies the VMA and such > modifications should be done under VMA write-lock protection. So it will become: Move VMA flag modification (which now implies VMA locking) before vma_adjust_trans_huge() to ensure the modifications are done after VMA has been locked. Because vma_adjust_trans_huge() modifies the VMA and such modifications should be done under VMA write-lock protection. which is effectivelly saying vma_adjust_trans_huge() modifies the VMA and such modifications should be done under VMA write-lock protection so move VMA flag modifications before so all of them are covered by the same write protection. right?
On Wed, Jan 18, 2023 at 1:33 PM Michal Hocko <mhocko@suse.com> wrote: > > On Wed 18-01-23 10:09:29, Suren Baghdasaryan wrote: > > On Wed, Jan 18, 2023 at 1:23 AM Michal Hocko <mhocko@suse.com> wrote: > > > > > > On Tue 17-01-23 18:01:01, Suren Baghdasaryan wrote: > > > > On Tue, Jan 17, 2023 at 7:16 AM Michal Hocko <mhocko@suse.com> wrote: > > > > > > > > > > On Mon 09-01-23 12:53:12, Suren Baghdasaryan wrote: > > > > > > Move VMA flag modification (which now implies VMA locking) before > > > > > > anon_vma_lock_write to match the locking order of page fault handler. > > > > > > > > > > Does this changelog assumes per vma locking in the #PF? > > > > > > > > Hmm, you are right. Page fault handlers do not use per-vma locks yet > > > > but the changelog already talks about that. Maybe I should change it > > > > to simply: > > > > ``` > > > > Move VMA flag modification (which now implies VMA locking) before > > > > vma_adjust_trans_huge() to ensure the modifications are done after VMA > > > > has been locked. > > > > > > Because .... > > > > because vma_adjust_trans_huge() modifies the VMA and such > > modifications should be done under VMA write-lock protection. > > So it will become: > Move VMA flag modification (which now implies VMA locking) before > vma_adjust_trans_huge() to ensure the modifications are done after VMA > has been locked. Because vma_adjust_trans_huge() modifies the VMA and such > modifications should be done under VMA write-lock protection. > > which is effectivelly saying > vma_adjust_trans_huge() modifies the VMA and such modifications should > be done under VMA write-lock protection so move VMA flag modifications > before so all of them are covered by the same write protection. > > right? Yes, and the wording in the latter version is simpler to understand IMO, so I would like to adopt it. Do you agree? > -- > Michal Hocko > SUSE Labs
On Wed 18-01-23 13:48:13, Suren Baghdasaryan wrote: > On Wed, Jan 18, 2023 at 1:33 PM Michal Hocko <mhocko@suse.com> wrote: [...] > > So it will become: > > Move VMA flag modification (which now implies VMA locking) before > > vma_adjust_trans_huge() to ensure the modifications are done after VMA > > has been locked. Because vma_adjust_trans_huge() modifies the VMA and such > > modifications should be done under VMA write-lock protection. > > > > which is effectivelly saying > > vma_adjust_trans_huge() modifies the VMA and such modifications should > > be done under VMA write-lock protection so move VMA flag modifications > > before so all of them are covered by the same write protection. > > > > right? > > Yes, and the wording in the latter version is simpler to understand > IMO, so I would like to adopt it. Do you agree? of course.
On Thu, Jan 19, 2023 at 1:31 AM Michal Hocko <mhocko@suse.com> wrote: > > On Wed 18-01-23 13:48:13, Suren Baghdasaryan wrote: > > On Wed, Jan 18, 2023 at 1:33 PM Michal Hocko <mhocko@suse.com> wrote: > [...] > > > So it will become: > > > Move VMA flag modification (which now implies VMA locking) before > > > vma_adjust_trans_huge() to ensure the modifications are done after VMA > > > has been locked. Because vma_adjust_trans_huge() modifies the VMA and such > > > modifications should be done under VMA write-lock protection. > > > > > > which is effectivelly saying > > > vma_adjust_trans_huge() modifies the VMA and such modifications should > > > be done under VMA write-lock protection so move VMA flag modifications > > > before so all of them are covered by the same write protection. > > > > > > right? > > > > Yes, and the wording in the latter version is simpler to understand > > IMO, so I would like to adopt it. Do you agree? > > of course. Will update in the next respin. Thanks! > -- > Michal Hocko > SUSE Labs
diff --git a/mm/mmap.c b/mm/mmap.c index fa994ae903d9..53d885e70a54 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2953,13 +2953,13 @@ static int do_brk_flags(struct ma_state *mas, struct vm_area_struct *vma, if (mas_preallocate(mas, vma, GFP_KERNEL)) goto unacct_fail; + set_vm_flags(vma, VM_SOFTDIRTY); vma_adjust_trans_huge(vma, vma->vm_start, addr + len, 0); if (vma->anon_vma) { anon_vma_lock_write(vma->anon_vma); anon_vma_interval_tree_pre_update_vma(vma); } vma->vm_end = addr + len; - set_vm_flags(vma, VM_SOFTDIRTY); mas_store_prealloc(mas, vma); if (vma->anon_vma) {
Move VMA flag modification (which now implies VMA locking) before anon_vma_lock_write to match the locking order of page fault handler. Signed-off-by: Suren Baghdasaryan <surenb@google.com> --- mm/mmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)