mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-22 01:51:51 +00:00
iov: Add iovec2pagemap() helper
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
cd34724092
commit
3b995f1aef
@ -71,6 +71,7 @@ struct page_read {
|
||||
extern int open_page_read(int pid, struct page_read *, int flags, bool shmem);
|
||||
extern int open_page_read_at(int dfd, int pid, struct page_read *pr, int flags, bool shmem);
|
||||
extern void pagemap2iovec(PagemapEntry *pe, struct iovec *iov);
|
||||
extern void iovec2pagemap(struct iovec *iov, PagemapEntry *pe);
|
||||
extern int seek_pagemap_page(struct page_read *pr, unsigned long vaddr, bool warn);
|
||||
|
||||
extern int dedup_one_iovec(struct page_read *pr, struct iovec *iov);
|
||||
|
@ -49,6 +49,12 @@ void pagemap2iovec(PagemapEntry *pe, struct iovec *iov)
|
||||
iov->iov_len = pe->nr_pages * PAGE_SIZE;
|
||||
}
|
||||
|
||||
void iovec2pagemap(struct iovec *iov, PagemapEntry *pe)
|
||||
{
|
||||
pe->vaddr = encode_pointer(iov->iov_base);
|
||||
pe->nr_pages = iov->iov_len / PAGE_SIZE;
|
||||
}
|
||||
|
||||
static int get_pagemap(struct page_read *pr, struct iovec *iov)
|
||||
{
|
||||
int ret;
|
||||
|
@ -457,9 +457,7 @@ static int write_pagemap_loc(struct page_xfer *xfer,
|
||||
int ret;
|
||||
PagemapEntry pe = PAGEMAP_ENTRY__INIT;
|
||||
|
||||
pe.vaddr = encode_pointer(iov->iov_base);
|
||||
pe.nr_pages = iov->iov_len / PAGE_SIZE;
|
||||
|
||||
iovec2pagemap(iov, &pe);
|
||||
if (opts.auto_dedup && xfer->parent != NULL) {
|
||||
ret = dedup_one_iovec(xfer->parent, iov);
|
||||
if (ret == -1) {
|
||||
@ -544,8 +542,7 @@ static int write_pagehole_loc(struct page_xfer *xfer, struct iovec *iov)
|
||||
}
|
||||
}
|
||||
|
||||
pe.vaddr = encode_pointer(iov->iov_base);
|
||||
pe.nr_pages = iov->iov_len / PAGE_SIZE;
|
||||
iovec2pagemap(iov, &pe);
|
||||
pe.has_in_parent = true;
|
||||
pe.in_parent = true;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user