Messages in this thread | | | Subject | Re: [PATCH RFC 0/3] block,ext4: Introduce REQ_OP_ASSIGN_RANGE to reflect extents allocation in block device internals | From | Kirill Tkhai <> | Date | Wed, 11 Dec 2019 11:50:52 +0300 |
| |
On 11.12.2019 10:42, Chaitanya Kulkarni wrote: >> Here is a simple test I did: >> https://gist.github.com/tkhai/5b788651cdb74c1dbff3500745878856 >> > > Somehow I'm not able to open this link, can you please share results > in plain text on the email ?
#define _GNU_SOURCE #include <sys/types.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <errno.h>
#define BLOCK_SIZE 4096 #define STEP (BLOCK_SIZE * 16) #define SIZE (4ULL * 1024 * 1024 * 1024)
int main(int argc) { int fd, step, ret = 0; unsigned long i; void *buf;
if (posix_memalign(&buf, BLOCK_SIZE, SIZE)) { perror("alloc"); exit(1); }
fd = open("file2.img", O_RDWR|O_CREAT|O_DIRECT); if (fd < 0) { perror("open"); exit(1); }
if (ftruncate(fd, SIZE)) { perror("ftruncate"); exit(1); }
ret = fallocate(fd, 0, 0, SIZE); if (ret) { perror("fallocate"); exit(1); } for (step = STEP - BLOCK_SIZE; step >= 0; step -= BLOCK_SIZE) { printf("step=%u\n", step); for (i = step; i < SIZE; i += STEP) { errno = 0; if (pwrite(fd, buf, BLOCK_SIZE, i) != BLOCK_SIZE) { perror("pwrite"); exit(1); } }
if (fsync(fd)) { perror("fsync"); exit(1); } }
return 0; }
| |