From patchwork Wed Nov 16 09:40:03 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [7/7] uffd: Unify local and remote PF handlers From: Pavel Emelyanov X-Patchwork-Id: 2718 Message-Id: <582C2973.1000402@virtuozzo.com> To: CRIU , Mike Rapoport , Adrian Reber Date: Wed, 16 Nov 2016 12:40:03 +0300 Finally, page_fault_local and page_fault_remote are absolutely identical, so we can just merge them. Signed-off-by: Pavel Emelyanov Acked-by: Mike Rapoport --- criu/uffd.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/criu/uffd.c b/criu/uffd.c index 2464588..09cb218 100644 --- a/criu/uffd.c +++ b/criu/uffd.c @@ -692,8 +692,7 @@ static int handle_remaining_pages(struct lazy_pages_info *lpi) return 0; } -static int page_fault_common(struct lazy_pages_info *lpi, __u64 address, int nr, - int pr_flags) +static int handle_page_fault(struct lazy_pages_info *lpi, __u64 address, int nr) { int ret; @@ -701,7 +700,7 @@ static int page_fault_common(struct lazy_pages_info *lpi, __u64 address, int nr, if (ret <= 0) return ret; - ret = lpi->pr.read_pages(&lpi->pr, address, nr, lpi->buf, pr_flags); + ret = lpi->pr.read_pages(&lpi->pr, address, nr, lpi->buf, PR_ASYNC | PR_ASAP); if (ret <= 0) { pr_err("%d: failed reading pages at %llx\n", lpi->pid, address); return ret; @@ -710,18 +709,6 @@ static int page_fault_common(struct lazy_pages_info *lpi, __u64 address, int nr, return 0; } -static int page_fault_local(struct lazy_pages_info *lpi, __u64 address, int nr) -{ - return page_fault_common(lpi, address, nr, PR_ASYNC | PR_ASAP); -} - -static int page_fault_remote(struct lazy_pages_info *lpi, __u64 address, int nr) -{ - return page_fault_common(lpi, address, nr, PR_ASYNC | PR_ASAP); -} - -static int (*pf_handler)(struct lazy_pages_info *lpi, __u64 address, int nr); - static int handle_user_fault(struct lazy_pages_fd *lpfd) { struct lazy_pages_info *lpi; @@ -758,7 +745,7 @@ static int handle_user_fault(struct lazy_pages_fd *lpfd) flags = msg.arg.pagefault.flags; pr_debug("msg.arg.pagefault.flags 0x%llx\n", flags); - ret = pf_handler(lpi, address, 1); + ret = handle_page_fault(lpi, address, 1); if (ret < 0) { pr_err("Error during regular page copy\n"); return -1; @@ -1053,9 +1040,6 @@ int cr_lazy_pages(bool daemon) if (opts.use_page_server) { if (prepare_page_server_socket(epollfd)) return -1; - pf_handler = page_fault_remote; - } else { - pf_handler = page_fault_local; } ret = handle_requests(epollfd, events);