diff options
Diffstat (limited to 'sys/contrib/openzfs/tests/zfs-tests/cmd/mmap_seek.c')
| -rw-r--r-- | sys/contrib/openzfs/tests/zfs-tests/cmd/mmap_seek.c | 35 | 
1 files changed, 22 insertions, 13 deletions
| diff --git a/sys/contrib/openzfs/tests/zfs-tests/cmd/mmap_seek.c b/sys/contrib/openzfs/tests/zfs-tests/cmd/mmap_seek.c index 45ba17e36c35..f46980cad111 100644 --- a/sys/contrib/openzfs/tests/zfs-tests/cmd/mmap_seek.c +++ b/sys/contrib/openzfs/tests/zfs-tests/cmd/mmap_seek.c @@ -47,25 +47,34 @@  #endif  static void +seek_expect(int fd, off_t offset, int whence, off_t expect_offset) +{ +	errno = 0; +	off_t seek_offset = lseek(fd, offset, whence); +	if (seek_offset == expect_offset) +		return; + +	int err = errno; +	fprintf(stderr, "lseek(fd, %ld, SEEK_%s) = %ld (expected %ld)", +	    offset, (whence == SEEK_DATA ? "DATA" : "HOLE"), +	    seek_offset, expect_offset); +	if (err != 0) +		fprintf(stderr, " (errno %d [%s])\n", err, strerror(err)); +	else +		fputc('\n', stderr); +	exit(2); +} + +static inline void  seek_data(int fd, off_t offset, off_t expected)  { -	off_t data_offset = lseek(fd, offset, SEEK_DATA); -	if (data_offset != expected) { -		fprintf(stderr, "lseek(fd, %d, SEEK_DATA) = %d (expected %d)\n", -		    (int)offset, (int)data_offset, (int)expected); -		exit(2); -	} +	seek_expect(fd, offset, SEEK_DATA, expected);  } -static void +static inline void  seek_hole(int fd, off_t offset, off_t expected)  { -	off_t hole_offset = lseek(fd, offset, SEEK_HOLE); -	if (hole_offset != expected) { -		fprintf(stderr, "lseek(fd, %d, SEEK_HOLE) = %d (expected %d)\n", -		    (int)offset, (int)hole_offset, (int)expected); -		exit(2); -	} +	seek_expect(fd, offset, SEEK_HOLE, expected);  }  int | 
