Messages in this thread Patch in this message |  | | Date | Mon, 7 Jan 2013 20:24:12 +0800 | Subject | Re: oops in copy_page_rep() | From | Hillf Danton <> |
| |
Hello Hugh
On Mon, Jan 7, 2013 at 3:06 AM, Hugh Dickins <hughd@google.com> wrote: > I don't entirely like your patch (or the original code): shouldn't > there be a wait_split_huge_page(), rather than hammering back with > repeated faults until the split has completed? > I take another try with waiting added, take a look please.
Hillf --- --- a/mm/memory.c Sun Jan 6 19:49:50 2013 +++ b/mm/memory.c Mon Jan 7 20:16:14 2013 @@ -3710,6 +3710,11 @@ retry: return do_huge_pmd_numa_page(mm, vma, address, orig_pmd, pmd);
+ /* Check if pmd is stable */ + if (pmd_trans_splitting(orig_pmd)) { + wait_split_huge_page(vma->anon_vma, pmd); + goto retry; + } if (dirty && !pmd_write(orig_pmd)) { ret = do_huge_pmd_wp_page(mm, vma, address, pmd, orig_pmd); --
|  |