Fix wrap issue with 64-bit pwritev2/preadv2
[fio.git] / os / os-linux.h
index 911f7e7c8710719d5c6d2d9b094efb096077f0c5..695e9dad0fc04204b20f94901be68801581c3904 100644 (file)
@@ -314,9 +314,15 @@ static inline int fio_set_sched_idle(void)
 static inline void make_pos_h_l(unsigned long *pos_h, unsigned long *pos_l,
                                off_t offset)
 {
+#if BITS_PER_LONG == 64
+#warning 64
+       *pos_l = offset;
+       *pos_h = 0;
+#else
+#warning 32
        *pos_l = offset & 0xffffffff;
        *pos_h = ((uint64_t) offset) >> 32;
-
+#endif
 }
 static inline ssize_t preadv2(int fd, const struct iovec *iov, int iovcnt,
                              off_t offset, unsigned int flags)