*/
const char *yaffs_fs_c_version =
- "$Id: yaffs_fs.c,v 1.67 2008-07-03 20:06:05 charles Exp $";
+ "$Id: yaffs_fs.c,v 1.69 2008-08-28 02:42:11 charles Exp $";
extern const char *yaffs_guts_c_version;
#include <linux/version.h>
#endif
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26))
+#define YPROC_ROOT &proc_root
+#else
+#define YPROC_ROOT NULL
+#endif
+
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
#define WRITE_SIZE_STR "writesize"
#define WRITE_SIZE(mtd) (mtd)->writesize
static int yaffs_statfs(struct super_block *sb, struct statfs *buf);
#endif
+#ifdef YAFFS_HAS_PUT_INODE
static void yaffs_put_inode(struct inode *inode);
+#endif
+
static void yaffs_delete_inode(struct inode *);
static void yaffs_clear_inode(struct inode *);
#ifndef YAFFS_USE_OWN_IGET
.read_inode = yaffs_read_inode,
#endif
+#ifdef YAFFS_HAS_PUT_INODE
.put_inode = yaffs_put_inode,
+#endif
.put_super = yaffs_put_super,
.delete_inode = yaffs_delete_inode,
.clear_inode = yaffs_clear_inode,
}
+
+#ifdef YAFFS_HAS_PUT_INODE
+
/* For now put inode is just for debugging
* Put inode is called when the inode **structure** is put.
*/
atomic_read(&inode->i_count)));
}
+#endif
/* clear is called to tell the fs to release any per-inode data it holds */
static void yaffs_clear_inode(struct inode *inode)
unsigned to)
{
- void *addr = page_address(pg) + offset;
+ void *addr, *kva;
+
loff_t pos = (((loff_t) pg->index) << PAGE_CACHE_SHIFT) + offset;
int nBytes = to - offset;
int nWritten;
unsigned spos = pos;
unsigned saddr = (unsigned)addr;
+
+ kva=kmap(pg);
+ addr = kva + offset;
T(YAFFS_TRACE_OS,
(KERN_DEBUG "yaffs_commit_write addr %x pos %x nBytes %d\n", saddr,
SetPageUptodate(pg);
}
+ kunmap(pg);
+
T(YAFFS_TRACE_OS,
(KERN_DEBUG "yaffs_commit_write returning %d\n",
nWritten == nBytes ? 0 : nWritten));
/* Install the proc_fs entry */
my_proc_entry = create_proc_entry("yaffs",
S_IRUGO | S_IFREG,
- &proc_root);
+ YPROC_ROOT);
if (my_proc_entry) {
my_proc_entry->write_proc = yaffs_proc_write;
T(YAFFS_TRACE_ALWAYS, ("yaffs " __DATE__ " " __TIME__
" removing. \n"));
- remove_proc_entry("yaffs", &proc_root);
+ remove_proc_entry("yaffs", YPROC_ROOT);
fsinst = fs_to_install;