I meant for Zam to describe it in more detail, sorry about that. :-/
Hans
Alec H. Peterson wrote:
> Hi Hans,
>
> On Feb 28, 2006, at 12:11, Hans Reiser wrote:
>
>> Please describe it in more detail.
>
>
> Well, the error I'm getting is this:
>
> Feb 21 13:10:22 ecbuild-10 kernel: WARNING: Flushing like mad: 16384
>
> The C program I'm running to do the test is this:
>
> main(int argc, char **argv)
> {
> char buf[1024];
> char dir[1024];
> int i,j,k;
> int ret;
> int fd;
> int *sequence;
> struct timeval start, unlinktime, end;
>
> if(argc != 2)
> {
> fprintf(stderr, "Usage: %s <base directory>\n", argv[0]);
> exit(1);
> }
>
> strncpy(dir, argv[1], 1024);
>
> if(chdir(dir))
> {
> perror("chdir");
> exit(1);
> }
>
> for(i = 0; i < 256; i++)
> {
> snprintf(buf, 1024, "%d", i);
> ret = mkdir(buf, S_IRWXU);
> if(ret && (errno != EEXIST))
> {
> perror("mkdir");
> exit(1);
> }
> }
>
>
> {
> sequence = sequence20000;
> gettimeofday(&start, NULL);
> fprintf(stderr, "Starting %d run %d.%d.\n",
> 256 * 20000, start.tv_sec, start.tv_usec);
>
> for(i = 0; i < 256; i++)
> {
> for(j = 0; j < 20000; j++)
> {
> snprintf(buf, 1024, "%d/%d", i, j);
> fd = open(buf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
> if(fd == -1)
> {
> perror("open");
> exit(1);
> }
> close(fd);
> }
> fprintf(stderr, "Done %d\n", i);
> }
>
> gettimeofday(&unlinktime, NULL);
> fprintf(stderr, "Starting %d unlink %d.%d, elapsed time was %d.\n",
> 256 * 20000, unlinktime.tv_sec, unlinktime.tv_usec,
> unlinktime.tv_sec - start.tv_sec);
>
> for(i = 0; i < 20000; i++)
> {
> for(j = 0; j < 256; j++)
> {
> snprintf(buf, 1024, "%d/%d", j, sequence[i]);
> unlink(buf);
> if(fd == -1)
> {
> perror("unlink");
> exit(1);
> }
> }
> fprintf(stderr, "Done %d\n", i);
> }
>
> gettimeofday(&end, NULL);
> fprintf(stderr, "Done with %d unlink %d.%d, elapsed time was %d. \n",
> 20000 * 256, end.tv_sec, end.tv_usec,
> end.tv_sec - unlinktime.tv_sec);
> }
>
> exit(0);
> }
>
> sequence20000 is an array which contains a sequence from 1 to 20000
> randomly ordered.
>
> Alec
>
>
>