Skip to content

Commit

Permalink
Add the test we used in lecture to creash the IDE system when the
Browse files Browse the repository at this point in the history
locks were moved around.
  • Loading branch information
Austin Clements committed Nov 23, 2009
1 parent d6cd7d0 commit f4c12f1
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ UPROGS=\
_mkdir\
_rm\
_sh\
_stressfs\
_usertests\
_wc\
_zombie\
Expand Down
38 changes: 38 additions & 0 deletions stressfs.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Demonstrate that moving the "acquire" in iderw after the loop that
// appends to the idequeue results in a race.

// For this to work, you should also add a spin within iderw's
// idequeue traversal loop. Spinning 40000 times demonstrated the bug
// after about 5 runs of stressfs in QEMU on a 2.1GHz CPU.

#include "types.h"
#include "stat.h"
#include "user.h"
#include "fs.h"
#include "fcntl.h"

int
main(int argc, char *argv[])
{
int i;
printf(1, "stressfs starting\n");

for (i = 0; i < 4; i++) {
if (fork() > 0) {
break;
}
}

printf(1, "%d\n", i);

char path[] = "stressfs0";
path[8] += i;
int fd = open(path, O_CREATE | O_RDWR);
for (i = 0; i < 100; i++)
printf(fd, "%d\n", i);
close(fd);

wait();

exit();
}

0 comments on commit f4c12f1

Please sign in to comment.