X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=linux-tests%2Fwritebigsparse.c;h=aeb2535551b379ee96dd5e0dcf4a5c3892bcbc44;hp=0d701285d4356bd794877927437f6cc1371a6b50;hb=a7cb3a35b2bc81f1e8107b6a147d7c86681f0b84;hpb=20de150d680c2a84c4a2e0d5f0f354274c7ff9ab diff --git a/linux-tests/writebigsparse.c b/linux-tests/writebigsparse.c index 0d70128..aeb2535 100644 --- a/linux-tests/writebigsparse.c +++ b/linux-tests/writebigsparse.c @@ -6,75 +6,72 @@ #include #include -int handle; -#define N_WRITES 8000 -#define STRIDE 1000 +#define N_WRITES 16 +#define STRIDE 250000 -#define BUFFER_N 2000 -unsigned buffer[BUFFER_N]; +#define BUFFER_N 1100 +unsigned xxbuffer[BUFFER_N]; void set_buffer(int n) { int i; for(i = 0; i < BUFFER_N; i++) - buffer[i] = i + n; + xxbuffer[i] = i + n; } void write_big_sparse_file(int h) { int i; - off64_t offset = 0; - off64_t pos; - int n = sizeof(buffer); + loff_t offset = 0; + loff_t pos; + int n = sizeof(xxbuffer); int wrote; - - for(i = 0; i < 4000; i++) { + + for(i = 0; i < N_WRITES; i++) { + printf("writing at %lld\n", offset); set_buffer(i); pos = lseek64(h, offset, SEEK_SET); if(pos != offset) { printf("mismatched seek pos %lld offset %lld\n", pos, offset); + perror("lseek64"); exit(1); } - wrote = write(h, buffer, n); - + wrote = write(h, xxbuffer, n); + if(wrote != n) { printf("mismatched write wrote %d n %d\n", wrote, n); exit(1); } - - offset += (STRIDE * sizeof(buffer)); - } -} - + offset += (STRIDE * sizeof(xxbuffer)); + } + ftruncate(h, offset); -void verify_big_sparse_file(int h) -{ } + int main(int argc, char *argv[]) { + int handle; if(argc < 2) { printf("Gimme a file name!\n"); exit(1); } - + handle = open(argv[1], O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE); - + if(handle < 0) { perror("opening file"); exit(1); } - + write_big_sparse_file(handle); - system("sudo echo 3 > /proc/sys/vm/drop_caches"); - verify_big_sparse_file(handle); - + printf("Job done\n"); return 0; }