CPU state tracking
[akaros.git] / kern / src / kfs.c
index e5bfc53..3d9c457 100644 (file)
@@ -158,6 +158,7 @@ int kfs_readpage(struct page_map *pm, struct page *page)
 
 int kfs_writepage(struct page_map *pm, struct page *page)
 {
+       warn_once("KFS writepage does not save file contents!\n");
        return -1;
 }
 
@@ -495,6 +496,11 @@ char *kfs_readlink(struct dentry *dentry)
 /* Modifies the size of the file of inode to whatever its i_size is set to */
 void kfs_truncate(struct inode *inode)
 {
+       struct kfs_i_info *k_i_info = (struct kfs_i_info*)inode->i_fs_info;
+       /* init_size tracks how much of the file KFS has.  everything else is 0s.
+        * we only need to update it if we are dropping data.  as with other data
+        * beyond init_size, KFS will not save it during a write page! */
+       k_i_info->init_size = MIN(k_i_info->init_size, inode->i_size);
 }
 
 /* Checks whether the the access mode is allowed for the file belonging to the
@@ -513,12 +519,6 @@ int kfs_d_revalidate(struct dentry *dir, struct nameidata *nd)
        return -1;
 }
 
-/* Produces the hash to lookup this dentry from the dcache */
-int kfs_d_hash(struct dentry *dentry, struct qstr *name)
-{
-       return -1;
-}
-
 /* Compares name1 and name2.  name1 should be a member of dir. */
 int kfs_d_compare(struct dentry *dir, struct qstr *name1, struct qstr *name2)
 { // default, string comp (case sensitive)
@@ -545,8 +545,7 @@ void kfs_d_iput(struct dentry *dentry, struct inode *inode)
 
 /* file_operations */
 
-/* Updates the file pointer.  KFS doesn't let you go past the end of a file
- * yet, so it won't let you seek past either.  TODO: think about locking. */
+/* Updates the file pointer.  TODO: think about locking. */
 int kfs_llseek(struct file *file, off64_t offset, off64_t *ret, int whence)
 {
        off64_t temp_off = 0;
@@ -742,7 +741,7 @@ struct inode_operations kfs_i_op = {
 
 struct dentry_operations kfs_d_op = {
        kfs_d_revalidate,
-       kfs_d_hash,
+       generic_dentry_hash,
        kfs_d_compare,
        kfs_d_delete,
        kfs_d_release,