removing test file
[yaffs/.git] / yaffs_fs.c
index de71211a985bd43d4c61ce7abaeeae511326bfa3..c3f57d7723bc2757030bdd3ef993fc47e9fd37b7 100644 (file)
@@ -60,6 +60,8 @@
 
 
 
+static void yaffs_put_super(struct super_block *sb);
+
 static ssize_t yaffs_file_read(struct file *f, char *buf, size_t n, loff_t *pos);
 static ssize_t yaffs_file_write(struct file *f, const char *buf, size_t n, loff_t *pos);
 
@@ -128,6 +130,7 @@ static struct super_operations yaffs_super_ops = {
        statfs:                 yaffs_statfs,
        read_inode:             yaffs_read_inode,
        put_inode:              yaffs_put_inode,
+       put_super:              yaffs_put_super,
 //     read_inode:
 //     remount_fs:
 //     clear_inode:
@@ -177,6 +180,9 @@ static struct dentry * yaffs_lookup(struct inode *dir, struct dentry *dentry)
 static void yaffs_put_inode(struct inode *inode)
 {
        T(("yaffs_put_inode: ino %d, count %d\n",(int)inode->i_ino, atomic_read(&inode->i_count)));
+       
+       yaffs_FlushFile(yaffs_InodeToObject(inode));
+       
 }
 
 #ifdef YAFFS_ADDRESS_OPS
@@ -626,6 +632,34 @@ static void yaffs_read_inode (struct inode *inode)
 }
 
 
+static void yaffs_put_super(struct super_block *sb)
+{
+       yaffs_Device *dev = yaffs_SuperToDevice(sb);
+       
+       if(dev->putSuperFunc)
+       {
+                dev->putSuperFunc(sb);
+       }
+}
+
+
+#ifdef YAFFS_MTD_ENABLED
+
+static void  yaffs_MTDPutSuper(struct super_block *sb)
+{
+       
+       struct mtd_info *mtd = yaffs_SuperToDevice(sb)->genericDevice;
+       
+       if(mtd->sync)
+       {
+               mtd->sync(mtd);
+       }
+       
+       put_mtd_device(mtd);
+}
+
+#endif
+
 static struct super_block *yaffs_internal_read_super(int useRam, struct super_block * sb, void * data, int silent)
 {
        struct inode * inode;
@@ -653,7 +687,7 @@ static struct super_block *yaffs_internal_read_super(int useRam, struct super_bl
        if(useRam)
        {
 
-#if YAFFS_RAM_ENABLED
+#ifdef YAFFS_RAM_ENABLED
                // Set the yaffs_Device up for ram emulation
 
                sb->u.generic_sbp =     dev = kmalloc(sizeof(yaffs_Device),GFP_KERNEL);
@@ -675,6 +709,7 @@ static struct super_block *yaffs_internal_read_super(int useRam, struct super_bl
                dev->readChunkFromNAND = nandemul_ReadChunkFromNAND;
                dev->eraseBlockInNAND = nandemul_EraseBlockInNAND;
                dev->initialiseNAND = nandemul_InitialiseNAND;
+               
 #endif
 
        }
@@ -755,6 +790,7 @@ static struct super_block *yaffs_internal_read_super(int useRam, struct super_bl
                dev->eraseBlockInNAND = nandmtd_EraseBlockInNAND;
                dev->initialiseNAND = nandmtd_InitialiseNAND;
                
+               dev->putSuperFunc = yaffs_MTDPutSuper;
 #endif
        }