Message ID | 20230308155723.108218-1-yishaih@nvidia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [vfio] vfio/mlx5: Fix the report of dirty_bytes upon pre-copy | expand |
On Wed, 8 Mar 2023 17:57:23 +0200 Yishai Hadas <yishaih@nvidia.com> wrote: > 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: 0dce165b1adf ("vfio/mlx5: Introduce vfio precopy ioctl implementation") > Signed-off-by: Yishai Hadas <yishaih@nvidia.com> > --- > drivers/vfio/pci/mlx5/main.c | 14 ++++---------- > 1 file changed, 4 insertions(+), 10 deletions(-) > > diff --git a/drivers/vfio/pci/mlx5/main.c b/drivers/vfio/pci/mlx5/main.c > index e897537a9e8a..d95fd382814c 100644 > --- a/drivers/vfio/pci/mlx5/main.c > +++ b/drivers/vfio/pci/mlx5/main.c > @@ -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) { This is intended for v6.3, correct? Thanks, Alex
On 08/03/2023 22:56, Alex Williamson wrote: > On Wed, 8 Mar 2023 17:57:23 +0200 > Yishai Hadas <yishaih@nvidia.com> wrote: > >> 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: 0dce165b1adf ("vfio/mlx5: Introduce vfio precopy ioctl implementation") >> Signed-off-by: Yishai Hadas <yishaih@nvidia.com> >> --- >> drivers/vfio/pci/mlx5/main.c | 14 ++++---------- >> 1 file changed, 4 insertions(+), 10 deletions(-) >> >> diff --git a/drivers/vfio/pci/mlx5/main.c b/drivers/vfio/pci/mlx5/main.c >> index e897537a9e8a..d95fd382814c 100644 >> --- a/drivers/vfio/pci/mlx5/main.c >> +++ b/drivers/vfio/pci/mlx5/main.c >> @@ -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) { > This is intended for v6.3, correct? Thanks, Yes, thanks. Yishai
On 09/03/2023 10:08, Yishai Hadas wrote: > On 08/03/2023 22:56, Alex Williamson wrote: >> On Wed, 8 Mar 2023 17:57:23 +0200 >> Yishai Hadas <yishaih@nvidia.com> wrote: >> >>> 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: 0dce165b1adf ("vfio/mlx5: Introduce vfio precopy ioctl >>> implementation") >>> Signed-off-by: Yishai Hadas <yishaih@nvidia.com> >>> --- >>> drivers/vfio/pci/mlx5/main.c | 14 ++++---------- >>> 1 file changed, 4 insertions(+), 10 deletions(-) >>> >>> diff --git a/drivers/vfio/pci/mlx5/main.c >>> b/drivers/vfio/pci/mlx5/main.c >>> index e897537a9e8a..d95fd382814c 100644 >>> --- a/drivers/vfio/pci/mlx5/main.c >>> +++ b/drivers/vfio/pci/mlx5/main.c >>> @@ -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) { >> This is intended for v6.3, correct? Thanks, > > Yes, thanks. > > Yishai > Alex, Are we fine to proceed here ? Thanks, Yishai
On Sun, 19 Mar 2023 13:59:31 +0200 Yishai Hadas <yishaih@nvidia.com> wrote: > On 09/03/2023 10:08, Yishai Hadas wrote: > > On 08/03/2023 22:56, Alex Williamson wrote: > >> On Wed, 8 Mar 2023 17:57:23 +0200 > >> Yishai Hadas <yishaih@nvidia.com> wrote: > >> > >>> 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: 0dce165b1adf ("vfio/mlx5: Introduce vfio precopy ioctl > >>> implementation") > >>> Signed-off-by: Yishai Hadas <yishaih@nvidia.com> > >>> --- > >>> drivers/vfio/pci/mlx5/main.c | 14 ++++---------- > >>> 1 file changed, 4 insertions(+), 10 deletions(-) > >>> > >>> diff --git a/drivers/vfio/pci/mlx5/main.c > >>> b/drivers/vfio/pci/mlx5/main.c > >>> index e897537a9e8a..d95fd382814c 100644 > >>> --- a/drivers/vfio/pci/mlx5/main.c > >>> +++ b/drivers/vfio/pci/mlx5/main.c > >>> @@ -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) { > >> This is intended for v6.3, correct? Thanks, > > > > Yes, thanks. > > > > Yishai > > > Alex, > > Are we fine to proceed here ? Yes, I have this in the vfio for-linus branch, so it should already be in linux-next. I'll send a pull request for it this week. Thanks, Alex
diff --git a/drivers/vfio/pci/mlx5/main.c b/drivers/vfio/pci/mlx5/main.c index e897537a9e8a..d95fd382814c 100644 --- a/drivers/vfio/pci/mlx5/main.c +++ b/drivers/vfio/pci/mlx5/main.c @@ -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) {
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: 0dce165b1adf ("vfio/mlx5: Introduce vfio precopy ioctl implementation") Signed-off-by: Yishai Hadas <yishaih@nvidia.com> --- drivers/vfio/pci/mlx5/main.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-)