+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);
statfs: yaffs_statfs,
read_inode: yaffs_read_inode,
put_inode: yaffs_put_inode,
+ put_super: yaffs_put_super,
// read_inode:
// remount_fs:
// clear_inode:
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
}
+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;
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);
dev->readChunkFromNAND = nandemul_ReadChunkFromNAND;
dev->eraseBlockInNAND = nandemul_EraseBlockInNAND;
dev->initialiseNAND = nandemul_InitialiseNAND;
+
#endif
}
dev->eraseBlockInNAND = nandmtd_EraseBlockInNAND;
dev->initialiseNAND = nandmtd_InitialiseNAND;
+ dev->putSuperFunc = yaffs_MTDPutSuper;
#endif
}