From dc405cdb7b4e4d4bb3fc50b3e7f44e8795c0218e Mon Sep 17 00:00:00 2001 From: Robert Morris Date: Tue, 23 Aug 2022 08:23:12 -0400 Subject: don't panic if out of disk space when extending a directory. --- user/usertests.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'user') diff --git a/user/usertests.c b/user/usertests.c index 4ab34da..968034a 100644 --- a/user/usertests.c +++ b/user/usertests.c @@ -2738,6 +2738,36 @@ diskfull(char *s) close(fd); } + // now that there are no free blocks, test that dirlink() + // merely fails (doesn't panic) if it can't extend + // directory content. + int nzz = 128; + for(int i = 0; i < nzz; i++){ + char name[32]; + name[0] = 'z'; + name[1] = 'z'; + name[2] = '0' + (i / 32); + name[3] = '0' + (i % 32); + name[4] = '\0'; + unlink(name); + int fd = open(name, O_CREATE|O_RDWR|O_TRUNC); + if(fd < 0){ + printf("%s: could not create file %s\n", s, name); + break; + } + close(fd); + } + + for(int i = 0; i < nzz; i++){ + char name[32]; + name[0] = 'z'; + name[1] = 'z'; + name[2] = '0' + (i / 32); + name[3] = '0' + (i % 32); + name[4] = '\0'; + unlink(name); + } + for(int i = 0; i < fi; i++){ char name[32]; name[0] = 'b'; -- cgit v1.2.3