From 56d563e97dae70f726f0f6df67cc0fc8c33cc149 Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Fri, 19 Feb 2016 18:05:49 +0300 Subject: [PATCH] pie: restore madvise flags after aio rings have been created AIO rings internally are memory mappings, so they may have restorable madvise bits on them. Create the mappings before restoring their properties. Signed-off-by: Ivan Shapovalov Signed-off-by: Pavel Emelyanov --- criu/pie/restorer.c | 54 ++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/criu/pie/restorer.c b/criu/pie/restorer.c index 5bcae4f49..f7bde7540 100644 --- a/criu/pie/restorer.c +++ b/criu/pie/restorer.c @@ -995,33 +995,6 @@ long __export_restore_task(struct task_restore_args *args) vma_entry->prot); } - /* - * Finally restore madivse() bits - */ - for (i = 0; i < args->vmas_n; i++) { - unsigned long m; - - vma_entry = args->vmas + i; - if (!vma_entry->has_madv || !vma_entry->madv) - continue; - - for (m = 0; m < sizeof(vma_entry->madv) * 8; m++) { - if (vma_entry->madv & (1ul << m)) { - ret = sys_madvise(vma_entry->start, - vma_entry_len(vma_entry), - m); - if (ret) { - pr_err("madvise(%"PRIx64", %"PRIu64", %ld) " - "failed with %ld\n", - vma_entry->start, - vma_entry_len(vma_entry), - m, ret); - goto core_restore_end; - } - } - } - } - /* * Now when all VMAs are in their places time to set * up AIO rings. @@ -1076,6 +1049,33 @@ long __export_restore_task(struct task_restore_args *args) } } + /* + * Finally restore madivse() bits + */ + for (i = 0; i < args->vmas_n; i++) { + unsigned long m; + + vma_entry = args->vmas + i; + if (!vma_entry->has_madv || !vma_entry->madv) + continue; + + for (m = 0; m < sizeof(vma_entry->madv) * 8; m++) { + if (vma_entry->madv & (1ul << m)) { + ret = sys_madvise(vma_entry->start, + vma_entry_len(vma_entry), + m); + if (ret) { + pr_err("madvise(%"PRIx64", %"PRIu64", %ld) " + "failed with %ld\n", + vma_entry->start, + vma_entry_len(vma_entry), + m, ret); + goto core_restore_end; + } + } + } + } + ret = 0; /*