Commit f9510f67 authored by Pavel Emelyanov's avatar Pavel Emelyanov Committed by Andrei Vagin

pagemap: Remove seek_pagemap_page

The page_read.seek_pagemap already tunes the pages offset,
so the separate call for skip_pagemap_pages in the routine
in question is always no-op.
Acked-by: 's avatarMike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent a33b747f
...@@ -74,8 +74,6 @@ static int punch_hole(struct page_read *pr, unsigned long off, ...@@ -74,8 +74,6 @@ static int punch_hole(struct page_read *pr, unsigned long off,
return 0; return 0;
} }
static int seek_pagemap_page(struct page_read *pr, unsigned long vaddr);
int dedup_one_iovec(struct page_read *pr, unsigned long off, unsigned long len) int dedup_one_iovec(struct page_read *pr, unsigned long off, unsigned long len)
{ {
unsigned long iov_end; unsigned long iov_end;
...@@ -86,7 +84,7 @@ int dedup_one_iovec(struct page_read *pr, unsigned long off, unsigned long len) ...@@ -86,7 +84,7 @@ int dedup_one_iovec(struct page_read *pr, unsigned long off, unsigned long len)
unsigned long piov_end; unsigned long piov_end;
struct page_read * prp; struct page_read * prp;
ret = seek_pagemap_page(pr, off); ret = pr->seek_pagemap(pr, off);
if (ret == 0) { if (ret == 0) {
pr_warn("Missing %lx in parent pagemap\n", off); pr_warn("Missing %lx in parent pagemap\n", off);
if (off < pr->cvaddr && pr->cvaddr < iov_end) if (off < pr->cvaddr && pr->cvaddr < iov_end)
...@@ -159,7 +157,7 @@ static int seek_pagemap(struct page_read *pr, unsigned long vaddr) ...@@ -159,7 +157,7 @@ static int seek_pagemap(struct page_read *pr, unsigned long vaddr)
break; break;
if (vaddr >= start && vaddr < end) { if (vaddr >= start && vaddr < end) {
skip_pagemap_pages(pr, start - pr->cvaddr); skip_pagemap_pages(pr, vaddr - pr->cvaddr);
return 1; return 1;
} }
...@@ -172,16 +170,6 @@ adv: ...@@ -172,16 +170,6 @@ adv:
return 0; return 0;
} }
static int seek_pagemap_page(struct page_read *pr, unsigned long vaddr)
{
if (seek_pagemap(pr, vaddr)) {
skip_pagemap_pages(pr, vaddr - pr->cvaddr);
return 1;
}
return 0;
}
static inline void pagemap_bound_check(PagemapEntry *pe, unsigned long vaddr, int nr) static inline void pagemap_bound_check(PagemapEntry *pe, unsigned long vaddr, int nr)
{ {
if (vaddr < pe->vaddr || (vaddr - pe->vaddr) / PAGE_SIZE + nr > pe->nr_pages) { if (vaddr < pe->vaddr || (vaddr - pe->vaddr) / PAGE_SIZE + nr > pe->nr_pages) {
...@@ -214,7 +202,7 @@ static int read_parent_page(struct page_read *pr, unsigned long vaddr, ...@@ -214,7 +202,7 @@ static int read_parent_page(struct page_read *pr, unsigned long vaddr,
int p_nr; int p_nr;
pr_debug("\tpr%d-%u Read from parent\n", pr->pid, pr->id); pr_debug("\tpr%d-%u Read from parent\n", pr->pid, pr->id);
ret = seek_pagemap_page(ppr, vaddr); ret = ppr->seek_pagemap(ppr, vaddr);
if (ret <= 0) { if (ret <= 0) {
pr_err("Missing %lx in parent pagemap\n", vaddr); pr_err("Missing %lx in parent pagemap\n", vaddr);
return -1; return -1;
......
...@@ -787,11 +787,9 @@ static int uffd_seek_pages(struct lazy_pages_info *lpi, __u64 address, int nr) ...@@ -787,11 +787,9 @@ static int uffd_seek_pages(struct lazy_pages_info *lpi, __u64 address, int nr)
ret = lpi->pr.seek_pagemap(&lpi->pr, address); ret = lpi->pr.seek_pagemap(&lpi->pr, address);
if (!ret) { if (!ret) {
lp_err(lpi, "no pagemap covers %llx\n", address); lp_err(lpi, "no pagemap covers %llx\n", address);
return ret; return -1;
} }
lpi->pr.skip_pages(&lpi->pr, address - lpi->pr.pe->vaddr);
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment