Commit d8e5f617 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Pavel Emelyanov

mem: Don't shrink the number of IOVs needed for page transferring

In a worst scenario we need one IOV for every page we're transferring
from the parasite, thus don't divide by two here.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 85d366e8
...@@ -59,14 +59,10 @@ int do_task_reset_dirty_track(int pid) ...@@ -59,14 +59,10 @@ int do_task_reset_dirty_track(int pid)
unsigned int dump_pages_args_size(struct vm_area_list *vmas) unsigned int dump_pages_args_size(struct vm_area_list *vmas)
{ {
/* /* In the worst case I need one iovec for each page */
* In the worst case I need one iovec for half of the
* pages (e.g. every odd/even)
*/
return sizeof(struct parasite_dump_pages_args) + return sizeof(struct parasite_dump_pages_args) +
vmas->nr * sizeof(struct parasite_vma_entry) + vmas->nr * sizeof(struct parasite_vma_entry) +
(vmas->priv_size + 1) * sizeof(struct iovec) / 2; (vmas->priv_size + 1) * sizeof(struct iovec);
} }
static inline bool should_dump_page(VmaEntry *vmae, u64 pme) static inline bool should_dump_page(VmaEntry *vmae, u64 pme)
...@@ -256,8 +252,8 @@ static int __parasite_dump_pages_seized(struct parasite_ctl *ctl, ...@@ -256,8 +252,8 @@ static int __parasite_dump_pages_seized(struct parasite_ctl *ctl,
return -1; return -1;
ret = -1; ret = -1;
pp = create_page_pipe(vma_area_list->priv_size / 2, pp = create_page_pipe(vma_area_list->priv_size,
pargs_iovs(args), pp_ret == NULL); pargs_iovs(args), pp_ret == NULL);
if (!pp) if (!pp)
goto out; goto out;
......
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