vfio/mlx5: Fix the report of dirty_bytes upon pre-copy
Fix the report of dirty_bytes upon pre-copy to include both the existing
data on the migration file and the device extra bytes.
This gives a better close estimation to what can be passed any more as
part of pre-copy.
Fixes: 0dce165b1a
("vfio/mlx5: Introduce vfio precopy ioctl implementation")
Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
Link: https://lore.kernel.org/r/20230308155723.108218-1-yishaih@nvidia.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
parent
eeac8ede17
commit
4928f67bc9
|
@ -442,16 +442,10 @@ static long mlx5vf_precopy_ioctl(struct file *filp, unsigned int cmd,
|
|||
if (migf->pre_copy_initial_bytes > *pos) {
|
||||
info.initial_bytes = migf->pre_copy_initial_bytes - *pos;
|
||||
} else {
|
||||
buf = mlx5vf_get_data_buff_from_pos(migf, *pos, &end_of_data);
|
||||
if (buf) {
|
||||
info.dirty_bytes = buf->start_pos + buf->length - *pos;
|
||||
} else {
|
||||
if (!end_of_data) {
|
||||
ret = -EINVAL;
|
||||
goto err_migf_unlock;
|
||||
}
|
||||
info.dirty_bytes = inc_length;
|
||||
}
|
||||
info.dirty_bytes = migf->max_pos - *pos;
|
||||
if (!info.dirty_bytes)
|
||||
end_of_data = true;
|
||||
info.dirty_bytes += inc_length;
|
||||
}
|
||||
|
||||
if (!end_of_data || !inc_length) {
|
||||
|
|
Loading…
Reference in New Issue