int fd,
off64_t offset,
ssize_t count,
- ssize_t buffer_size)
+ ssize_t buffer_size,
+ int pwritev2_flags)
{
int vecs = 0;
ssize_t oldlen = 0;
} else {
vecs = vectors;
}
+#ifdef HAVE_PWRITEV2
+ if (pwritev2_flags)
+ bytes = pwritev2(fd, iov, vectors, offset, pwritev2_flags);
+ else
+ bytes = pwritev(fd, iov, vectors, offset);
+#else
bytes = pwritev(fd, iov, vectors, offset);
+#endif
/* restore trimmed iov */
if (oldlen)
int fd,
off64_t offset,
ssize_t count,
- ssize_t buffer_size)
+ ssize_t buffer_size,
+ int pwritev2_flags)
{
if (!vectors)
return pwrite(fd, buffer, min(count, buffer_size), offset);
- return do_pwritev(fd, offset, count, buffer_size);
+ return do_pwritev(fd, offset, count, buffer_size, pwritev2_flags);
}
static int
off64_t offset,
long long count,
unsigned int seed,
- long long *total)
+ long long *total,
+ int pwritev2_flags)
{
off64_t off, range;
ssize_t bytes;
buffersize;
else
off = offset;
- bytes = do_pwrite(file->fd, off, buffersize, buffersize);
+ bytes = do_pwrite(file->fd, off, buffersize, buffersize,
+ pwritev2_flags);
if (bytes == 0)
break;
if (bytes < 0) {
write_backward(
off64_t offset,
long long *count,
- long long *total)
+ long long *total,
+ int pwritev2_flags)
{
off64_t end, off = offset;
ssize_t bytes = 0, bytes_requested;
if ((bytes_requested = (off % buffersize))) {
bytes_requested = min(cnt, bytes_requested);
off -= bytes_requested;
- bytes = do_pwrite(file->fd, off, bytes_requested, buffersize);
+ bytes = do_pwrite(file->fd, off, bytes_requested, buffersize,
+ pwritev2_flags);
if (bytes == 0)
return ops;
if (bytes < 0) {
while (cnt > end) {
bytes_requested = min(cnt, buffersize);
off -= bytes_requested;
- bytes = do_pwrite(file->fd, off, cnt, buffersize);
+ bytes = do_pwrite(file->fd, off, cnt, buffersize,
+ pwritev2_flags);
if (bytes == 0)
break;
if (bytes < 0) {
size_t bs,
int fd,
off64_t skip,
- long long *total)
+ long long *total,
+ int pwritev2_flags)
{
ssize_t bytes;
long long bar = min(bs, count);
if (read_buffer(fd, skip + *total, bs, &bar, 0, 1) < 0)
break;
}
- bytes = do_pwrite(file->fd, offset, count, bar);
+ bytes = do_pwrite(file->fd, offset, count, bar, pwritev2_flags);
if (bytes == 0)
break;
if (bytes < 0) {
int Cflag, qflag, uflag, dflag, wflag, Wflag;
int direction = IO_FORWARD;
int c, fd = -1;
+ int pwritev2_flags = 0;
Cflag = qflag = uflag = dflag = wflag = Wflag = 0;
init_cvtnum(&fsblocksize, &fssectsize);
case IO_RANDOM:
if (!zeed) /* srandom seed */
zeed = time(NULL);
- c = write_random(offset, count, zeed, &total);
+ c = write_random(offset, count, zeed, &total, pwritev2_flags);
break;
case IO_FORWARD:
- c = write_buffer(offset, count, bsize, fd, skip, &total);
+ c = write_buffer(offset, count, bsize, fd, skip, &total,
+ pwritev2_flags);
break;
case IO_BACKWARD:
- c = write_backward(offset, &count, &total);
+ c = write_backward(offset, &count, &total, pwritev2_flags);
break;
default:
total = 0;