AC_CHECK_LINUX_FUNC([svc_addr_in],
[#include <linux/sunrpc/svc.h>],
[svc_addr_in(NULL);])
- AC_CHECK_LINUX_FUNC([vfs_llseek],
- [#include <linux/fs.h>],
- [vfs_llseek(NULL, 0, 0);])
AC_CHECK_LINUX_FUNC([zero_user_segments],
[#include <linux/highmem.h>],
[zero_user_segments(NULL, 0, 0, 0, 0);])
}
#endif
-#ifndef HAVE_LINUX_VFS_LLSEEK
-static inline loff_t
-vfs_llseek(struct file *filp, loff_t offset, int origin) {
- if (filp->f_op->llseek)
- return filp->f_op->llseek(filp, offset, origin);
- return default_llseek(filp, offset, origin);
-}
-#endif
-
#ifndef HAVE_LINUX_KERNEL_SETSOCKOPT
/* Available from 2.6.19 */
set_fs(get_ds());
}
- /* seek to the desired position. Return -1 on error. */
- if (vfs_llseek(filp, (loff_t) uiop->uio_offset, 0) != uiop->uio_offset) {
- code = -1;
- goto out;
- }
-
while (code == 0 && uiop->uio_resid > 0 && uiop->uio_iovcnt > 0) {
iov = uiop->uio_iov;
count = iov->iov_len;
continue;
}
- pos = filp->f_pos;
+ pos = uiop->uio_offset;
if (rw == UIO_READ)
code = filp->f_op->read(filp, iov->iov_base, count, &pos);
else
code = filp->f_op->write(filp, iov->iov_base, count, &pos);
- filp->f_pos = pos;
if (code < 0) {
code = -code;