Fixes elf panic
[akaros.git] / kern / src / kfs.c
index 1875d47..4584312 100644 (file)
@@ -139,6 +139,7 @@ int kfs_readpage(struct page_map *pm, struct page *page)
        struct buffer_head *bh = kmem_cache_alloc(bh_kcache, 0);
        if (!bh)
                return -1;                      /* untested, un-thought-through */
+       atomic_or(&page->pg_flags, PG_BUFFER);
        /* KFS does a 1:1 BH to page mapping */
        bh->bh_page = page;                                                             /* weak ref */
        bh->bh_buffer = page2kva(page);
@@ -155,6 +156,11 @@ int kfs_readpage(struct page_map *pm, struct page *page)
        return 0;
 }
 
+int kfs_writepage(struct page_map *pm, struct page *page)
+{
+       return -1;
+}
+
 /* Super Operations */
 
 /* Creates and initializes a new inode.  FS specific, yet inode-generic fields
@@ -438,7 +444,7 @@ int kfs_rmdir(struct inode *dir, struct dentry *dentry)
        if (!empty)
                return -ENOTEMPTY;
        kref_put(&dentry->d_kref);                              /* unpin the dentry, KFS-style */
-       printk("DENTRY %s REFCNT %d\n", dentry->d_name.name, kref_refcnt(&dentry->d_kref));
+       printd("DENTRY %s REFCNT %d\n", dentry->d_name.name, kref_refcnt(&dentry->d_kref));
        return 0;
 }
 
@@ -688,6 +694,7 @@ int kfs_check_flags(int flags)
 /* Redeclaration and initialization of the FS ops structures */
 struct page_map_operations kfs_pm_op = {
        kfs_readpage,
+       kfs_writepage,
 };
 
 struct super_operations kfs_s_op = {