Half-assed file truncation
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 5 Nov 2013 01:50:43 +0000 (17:50 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jan 2014 19:30:42 +0000 (11:30 -0800)
Need to do something with the page cache, but hopefully we won't mess
with it at all.

kern/src/vfs.c

index fd3342b..95ade65 100644 (file)
@@ -1348,8 +1348,10 @@ struct file *do_file_open(char *path, int flags, int mode)
 open_the_file:
        /* now open the file (freshly created or if it already existed).  At this
         * point, file_d is a refcnt'd dentry, regardless of which branch we took.*/
-       if (flags & O_TRUNC)
-               warn("File truncation not supported yet.");
+       if (flags & O_TRUNC) {
+               file_d->d_inode->i_size = 0;
+               /* TODO: probably should remove the garbage pages from the page map */
+       }
        file = dentry_open(file_d, flags);                              /* sets errno */
        /* Note the fall through to the exit paths.  File is 0 by default and if
         * dentry_open fails. */