preadv and pwritev have been supported since Linux 2.6.30.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
AC_PACKAGE_NEED_RCU_INIT
AC_HAVE_PWRITEV2
-AC_HAVE_PREADV
AC_HAVE_COPY_FILE_RANGE
AC_HAVE_FSETXATTR
AC_HAVE_MREMAP
HAVE_ZIPPED_MANPAGES = @have_zipped_manpages@
-HAVE_PREADV = @have_preadv@
HAVE_PWRITEV2 = @have_pwritev2@
HAVE_COPY_FILE_RANGE = @have_copy_file_range@
HAVE_FSETXATTR = @have_fsetxattr@
LLDLIBS += $(LIBEDITLINE) $(LIBTERMCAP)
endif
-# Also implies PWRITEV
-ifeq ($(HAVE_PREADV),yes)
-LCFLAGS += -DHAVE_PREADV -DHAVE_PWRITEV
-endif
-
ifeq ($(HAVE_PWRITEV2),yes)
LCFLAGS += -DHAVE_PWRITEV2
endif
" -R -- read at random offsets in the range of bytes\n"
" -Z N -- zeed the random number generator (used when reading randomly)\n"
" (heh, zorry, the -s/-S arguments were already in use in pwrite)\n"
-#ifdef HAVE_PREADV
" -V N -- use vectored IO with N iovecs of blocksize each (preadv)\n"
-#endif
"\n"
" When in \"random\" mode, the number of read operations will equal the\n"
" number required to do a complete forward/backward scan of the range.\n"
}
}
-#ifdef HAVE_PREADV
static ssize_t
do_preadv(
int fd,
return bytes;
}
-#else
-#define do_preadv(fd, offset, count) (0)
-#endif
static ssize_t
do_pread(
case 'v':
vflag = 1;
break;
-#ifdef HAVE_PREADV
case 'V':
vectors = strtoul(optarg, &sp, 0);
if (!sp || sp == optarg) {
return 0;
}
break;
-#endif
case 'Z':
zeed = strtoul(optarg, &sp, 0);
if (!sp || sp == optarg) {
" -R -- write at random offsets in the specified range of bytes\n"
" -Z N -- zeed the random number generator (used when writing randomly)\n"
" (heh, zorry, the -s/-S arguments were already in use in pwrite)\n"
-#ifdef HAVE_PWRITEV
" -V N -- use vectored IO with N iovecs of blocksize each (pwritev)\n"
-#endif
#ifdef HAVE_PWRITEV2
" -N -- Perform the pwritev2() with RWF_NOWAIT\n"
" -D -- Perform the pwritev2() with RWF_DSYNC\n"
"\n"));
}
-#ifdef HAVE_PWRITEV
static ssize_t
do_pwritev(
int fd,
return bytes;
}
-#else
-#define do_pwritev(fd, offset, count, pwritev2_flags) (0)
-#endif
static ssize_t
do_pwrite(
case 'u':
uflag = 1;
break;
-#ifdef HAVE_PWRITEV
case 'V':
vectors = strtoul(optarg, &sp, 0);
if (!sp || sp == optarg) {
return 0;
}
break;
-#endif
case 'w':
wflag = 1;
break;
-#
-# Check if we have a preadv libc call (Linux)
-#
-AC_DEFUN([AC_HAVE_PREADV],
- [ AC_MSG_CHECKING([for preadv])
- AC_LINK_IFELSE(
- [ AC_LANG_PROGRAM([[
-#define _BSD_SOURCE
-#define _DEFAULT_SOURCE
-#include <sys/uio.h>
- ]], [[
-preadv(0, 0, 0, 0);
- ]])
- ], have_preadv=yes
- AC_MSG_RESULT(yes),
- AC_MSG_RESULT(no))
- AC_SUBST(have_preadv)
- ])
-
#
# Check if we have a pwritev2 libc call (Linux)
#