#define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #define FILE_COUNT 100 #define FILE_SIZE 4194304 #define STRING "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" #define BTRFS_IOCTL_MAGIC 0x94 #define BTRFS_IOC_SYNC _IO(BTRFS_IOCTL_MAGIC, 8) int main(int argc, char *argv[]) { char *imgname = argv[1]; char *tempname; int fd[FILE_COUNT]; int ilen, i; ilen = strlen(imgname); tempname = malloc(ilen + 8); for(i=0; i < FILE_COUNT; i++) { snprintf(tempname, ilen + 8, "%s.%i", imgname, i); fd[i] = open(tempname, O_CREAT|O_RDWR); } i=0; while(1) { int start = rand() % FILE_SIZE; int file = rand() % FILE_COUNT; putc('.', stderr); lseek(fd[file], start, SEEK_SET); write(fd[file], STRING, 100); sync_file_range(fd[file], start, 100, 0x2); usleep(25000); i++; if (i == 100) { i=0; ioctl(fd[file], BTRFS_IOC_SYNC); } } }