#include #include #include #include #include #define BRANCH_OUT 25 #define FILES_PER_DIR 25 char *buf; int bufsize; int filesize; int num_levels; int num_files; int files; int total_data; char root_dir[128]; void init() { char s[128]; sprintf(s,"%s/tree",root_dir); if (access(s,0777) == -1) mkdir(s,0777); chdir(s); } void create_files(levels) int levels; { int i,j; int fd; char filename[128], dirname[128]; if (files==0) return; for (i=0; (ibufsize; j-=bufsize) write(fd,buf,bufsize); if (j>0) write(fd,buf,j); close(fd); } files -= i; if (levels>1) for (i=0; ibufsize; j-=bufsize) read(fd,buf,bufsize); if (j>0) read(fd,buf,j); close(fd); } files -= i; if (levels>1) for (i=0; ibufsize; j-=bufsize) write(fd,buf,bufsize); if (j>0) write(fd,buf,j); close(fd); } files -= i; if (levels>1) for (i=0; ibufsize; j-=bufsize) write(fd,buf,bufsize); if (j>0) write(fd,buf,j); fsync(fd); close(fd); } files -= i; if (levels>1) for (i=0; i1) for (i=0; i0; num_levels++) temp /= BRANCH_OUT; if (filesize<4*1024*1024) bufsize = filesize; else bufsize = 4*1024*1024; buf = (char *) malloc(bufsize); init(); files = num_files; rw(atoi(argv[4])); }