Linux 4.20 compat: wrapper function for iov_iter type access
An iov_iter_type() function to access the "type" member of the struct iov_iter was added at one point. Move the conditional logic to decide which method to use for accessing it into a macro and simplify the zpl_uio_init code. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Brian Atkinson <batkinson@lanl.gov> Signed-off-by: Coleman Kane <ckane@colemankane.org> Closes #15100
This commit is contained in:
parent
325505e5c4
commit
6751634d77
|
@ -179,4 +179,10 @@ zfs_uio_iov_iter_init(zfs_uio_t *uio, struct iov_iter *iter, offset_t offset,
|
||||||
#define zfs_uio_iter_iov(iter) (iter)->iov
|
#define zfs_uio_iter_iov(iter) (iter)->iov
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_IOV_ITER_TYPE)
|
||||||
|
#define zfs_uio_iov_iter_type(iter) iov_iter_type((iter))
|
||||||
|
#else
|
||||||
|
#define zfs_uio_iov_iter_type(iter) (iter)->type
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* SPL_UIO_H */
|
#endif /* SPL_UIO_H */
|
||||||
|
|
|
@ -300,13 +300,10 @@ zpl_uio_init(zfs_uio_t *uio, struct kiocb *kiocb, struct iov_iter *to,
|
||||||
{
|
{
|
||||||
#if defined(HAVE_VFS_IOV_ITER)
|
#if defined(HAVE_VFS_IOV_ITER)
|
||||||
zfs_uio_iov_iter_init(uio, to, pos, count, skip);
|
zfs_uio_iov_iter_init(uio, to, pos, count, skip);
|
||||||
#elif defined(HAVE_IOV_ITER_TYPE)
|
|
||||||
zfs_uio_iovec_init(uio, zfs_uio_iter_iov(to), to->nr_segs, pos,
|
|
||||||
iov_iter_type(to) & ITER_KVEC ? UIO_SYSSPACE : UIO_USERSPACE,
|
|
||||||
count, skip);
|
|
||||||
#else
|
#else
|
||||||
zfs_uio_iovec_init(uio, zfs_uio_iter_iov(to), to->nr_segs, pos,
|
zfs_uio_iovec_init(uio, zfs_uio_iter_iov(to), to->nr_segs, pos,
|
||||||
to->type & ITER_KVEC ? UIO_SYSSPACE : UIO_USERSPACE,
|
zfs_uio_iov_iter_type(to) & ITER_KVEC ?
|
||||||
|
UIO_SYSSPACE : UIO_USERSPACE,
|
||||||
count, skip);
|
count, skip);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue