diff options
author | Frans Kaashoek <[email protected]> | 2011-08-21 21:14:42 -0400 |
---|---|---|
committer | Frans Kaashoek <[email protected]> | 2011-08-21 21:14:42 -0400 |
commit | 39f8cc56d30bd1aaf097f17de0c410424c59a3f0 (patch) | |
tree | 0629c1a738eece4633655315df3af3de37c119e4 /usertests.c | |
parent | 3682474f779c02419623ae16de49a12da8d23af7 (diff) | |
parent | 327cc21fba38359c5b7fd4c9f39b1dc00fb4f182 (diff) | |
download | xv6-labs-39f8cc56d30bd1aaf097f17de0c410424c59a3f0.tar.gz xv6-labs-39f8cc56d30bd1aaf097f17de0c410424c59a3f0.tar.bz2 xv6-labs-39f8cc56d30bd1aaf097f17de0c410424c59a3f0.zip |
Merge branch 'master' of git+ssh://amsterdam.csail.mit.edu/home/am0/6.828/xv6
Diffstat (limited to 'usertests.c')
-rw-r--r-- | usertests.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/usertests.c b/usertests.c index 8db8385..455e68a 100644 --- a/usertests.c +++ b/usertests.c @@ -1529,6 +1529,59 @@ bigargtest(void) wait(); } +// what happens when the file system runs out of blocks? +// answer: balloc panics, so this test is not useful. +void +fsfull() +{ + int nfiles; + int fsblocks = 0; + + printf(1, "fsfull test\n"); + + for(nfiles = 0; ; nfiles++){ + char name[64]; + name[0] = 'f'; + name[1] = '0' + nfiles / 1000; + name[2] = '0' + (nfiles % 1000) / 100; + name[3] = '0' + (nfiles % 100) / 10; + name[4] = '0' + (nfiles % 10); + name[5] = '\0'; + printf(1, "writing %s\n", name); + int fd = open(name, O_CREATE|O_RDWR); + if(fd < 0){ + printf(1, "open %s failed\n", name); + break; + } + int total = 0; + while(1){ + int cc = write(fd, buf, 512); + if(cc < 512) + break; + total += cc; + fsblocks++; + } + printf(1, "wrote %d bytes\n", total); + close(fd); + if(total == 0) + break; + } + + while(nfiles >= 0){ + char name[64]; + name[0] = 'f'; + name[1] = '0' + nfiles / 1000; + name[2] = '0' + (nfiles % 1000) / 100; + name[3] = '0' + (nfiles % 100) / 10; + name[4] = '0' + (nfiles % 10); + name[5] = '\0'; + unlink(name); + nfiles--; + } + + printf(1, "fsfull test finished\n"); +} + int main(int argc, char *argv[]) { |