diff options
author | Robert Morris <[email protected]> | 2022-08-23 08:23:12 -0400 |
---|---|---|
committer | Robert Morris <[email protected]> | 2022-08-23 08:23:12 -0400 |
commit | dc405cdb7b4e4d4bb3fc50b3e7f44e8795c0218e (patch) | |
tree | eaedc212d1383b65009dd6f6ea8a63fcf82daedc /kernel/sysfile.c | |
parent | cd6207a972cf7692dceb837f460234eae9df5052 (diff) | |
download | xv6-labs-dc405cdb7b4e4d4bb3fc50b3e7f44e8795c0218e.tar.gz xv6-labs-dc405cdb7b4e4d4bb3fc50b3e7f44e8795c0218e.tar.bz2 xv6-labs-dc405cdb7b4e4d4bb3fc50b3e7f44e8795c0218e.zip |
don't panic if out of disk space when extending a directory.
Diffstat (limited to 'kernel/sysfile.c')
-rw-r--r-- | kernel/sysfile.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/sysfile.c b/kernel/sysfile.c index 970a72a..4c0470e 100644 --- a/kernel/sysfile.c +++ b/kernel/sysfile.c @@ -279,8 +279,13 @@ create(char *path, short type, short major, short minor) panic("create dots"); } - if(dirlink(dp, name, ip->inum) < 0) - panic("create: dirlink"); + if(dirlink(dp, name, ip->inum) < 0){ + // oops. we don't need ip after all. + ip->nlink = 0; + iupdate(ip); + iunlockput(ip); + ip = 0; + } iunlockput(dp); |