Message ID | 20210315163450.254396-7-sgarzare@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vdpa: add vdpa simulator for block device | expand |
On 15/03/2021 17:34, Stefano Garzarella wrote: > This new helper returns the total number of bytes covered by > a vringh_kiov. > > Suggested-by: Jason Wang <jasowang@redhat.com> > Acked-by: Jason Wang <jasowang@redhat.com> > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> > --- > include/linux/vringh.h | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/include/linux/vringh.h b/include/linux/vringh.h > index 755211ebd195..84db7b8f912f 100644 > --- a/include/linux/vringh.h > +++ b/include/linux/vringh.h > @@ -199,6 +199,17 @@ static inline void vringh_kiov_cleanup(struct vringh_kiov *kiov) > kiov->iov = NULL; > } > > +static inline size_t vringh_kiov_length(struct vringh_kiov *kiov) > +{ > + size_t len = 0; > + int i; > + > + for (i = kiov->i; i < kiov->used; i++) > + len += kiov->iov[i].iov_len; > + > + return len; > +} Do we really need an helper? For instance, we can use: len = iov_length((struct iovec *)kiov->iov, kiov->used); Or do we want to avoid the cast? Thanks, Laurent
On Mon, Mar 15, 2021 at 05:51:30PM +0100, Laurent Vivier wrote: >On 15/03/2021 17:34, Stefano Garzarella wrote: >> This new helper returns the total number of bytes covered by >> a vringh_kiov. >> >> Suggested-by: Jason Wang <jasowang@redhat.com> >> Acked-by: Jason Wang <jasowang@redhat.com> >> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> >> --- >> include/linux/vringh.h | 11 +++++++++++ >> 1 file changed, 11 insertions(+) >> >> diff --git a/include/linux/vringh.h b/include/linux/vringh.h >> index 755211ebd195..84db7b8f912f 100644 >> --- a/include/linux/vringh.h >> +++ b/include/linux/vringh.h >> @@ -199,6 +199,17 @@ static inline void vringh_kiov_cleanup(struct vringh_kiov *kiov) >> kiov->iov = NULL; >> } >> >> +static inline size_t vringh_kiov_length(struct vringh_kiov *kiov) >> +{ >> + size_t len = 0; >> + int i; >> + >> + for (i = kiov->i; i < kiov->used; i++) >> + len += kiov->iov[i].iov_len; >> + >> + return len; >> +} > >Do we really need an helper? > >For instance, we can use: > >len = iov_length((struct iovec *)kiov->iov, kiov->used); > >Or do we want to avoid the cast? Yes, that should be fine. If we want, I can remove the helper and use iov_length() directly. I thought vringh wanted to hide iovec from users though. Anyway talking to Jason, as a long term solution we should reconsider vringh and support iov_iter. Thanks, Stefano
diff --git a/include/linux/vringh.h b/include/linux/vringh.h index 755211ebd195..84db7b8f912f 100644 --- a/include/linux/vringh.h +++ b/include/linux/vringh.h @@ -199,6 +199,17 @@ static inline void vringh_kiov_cleanup(struct vringh_kiov *kiov) kiov->iov = NULL; } +static inline size_t vringh_kiov_length(struct vringh_kiov *kiov) +{ + size_t len = 0; + int i; + + for (i = kiov->i; i < kiov->used; i++) + len += kiov->iov[i].iov_len; + + return len; +} + void vringh_kiov_advance(struct vringh_kiov *kiov, size_t len); int vringh_getdesc_kern(struct vringh *vrh,