#include #include #include #include #include #include #include #include #define BLKCOPY _IO(0x12,129) int main(int argc, char *argv[]) { int h, r; uint64_t arg[4]; if (argc < 5) fprintf(stderr, "argc\n"), exit(1); h = open(argv[1], O_RDWR); if (h < 0) perror("open"), exit(1); arg[0] = strtoll(argv[2], NULL, 10); arg[1] = strtoll(argv[3], NULL, 10); arg[2] = strtoll(argv[4], NULL, 10); arg[3] = 0; r = ioctl(h, BLKCOPY, &arg); if (r) fprintf(stderr, "ioctl: %d, %s, %llx\n", r, strerror(errno), (unsigned long long)arg[3]), exit(1); if (arg[2] != arg[3]) { printf("short copy: %llx != %llx\n", (unsigned long long)arg[2], (unsigned long long)arg[3]); exit(1); } close(h); return 0; }