#endif
#ifdef CONFIG_YAFFS_XATTR
-int yaffs_setxattr(struct dentry *dentry, const char *name,
+static int yaffs_setxattr(struct dentry *dentry, const char *name,
const void *value, size_t size, int flags);
-ssize_t yaffs_getxattr(struct dentry *dentry, const char *name, void *buff,
+static ssize_t yaffs_getxattr(struct dentry *dentry, const char *name, void *buff,
size_t size);
-int yaffs_removexattr(struct dentry *dentry, const char *name);
-ssize_t yaffs_listxattr(struct dentry *dentry, char *buff, size_t size);
+static int yaffs_removexattr(struct dentry *dentry, const char *name);
+static ssize_t yaffs_listxattr(struct dentry *dentry, char *buff, size_t size);
#endif
#if (YAFFS_USE_WRITE_BEGIN_END != 0)
static void yaffs_touch_super(struct yaffs_dev *dev);
-static loff_t yaffs_dir_llseek(struct file *file, loff_t offset, int origin);
-
static int yaffs_vfs_setattr(struct inode *, struct iattr *);
static struct address_space_operations yaffs_file_address_operations = {
.read = generic_read_dir,
.readdir = yaffs_readdir,
.fsync = yaffs_sync_object,
- .llseek = yaffs_dir_llseek,
+ .llseek = generic_file_llseek,
};
static const struct super_operations yaffs_super_ops = {
{
struct yaffs_dev *dev = dir->my_dev;
struct yaffs_search_context *sc =
- YMALLOC(sizeof(struct yaffs_search_context));
+ kmalloc(sizeof(struct yaffs_search_context), GFP_NOFS);
if (sc) {
sc->dir_obj = dir;
sc->dev = dev;
{
if (sc) {
list_del(&sc->others);
- YFREE(sc);
+ kfree(sc);
}
}
yaffs_gross_unlock(dev);
}
-static loff_t yaffs_dir_llseek(struct file *file, loff_t offset, int origin)
-{
- long long retval;
-
- lock_kernel();
-
- switch (origin) {
- case 2:
- offset += i_size_read(file->f_path.dentry->d_inode);
- break;
- case 1:
- offset += file->f_pos;
- }
- retval = -EINVAL;
-
- if (offset >= 0) {
- if (offset != file->f_pos)
- file->f_pos = offset;
-
- retval = offset;
- }
- unlock_kernel();
- return retval;
-}
-
static int yaffs_readdir(struct file *f, void *dirent, filldir_t filldir)
{
struct yaffs_obj *obj;
}
#ifdef CONFIG_YAFFS_XATTR
-int yaffs_setxattr(struct dentry *dentry, const char *name,
+static int yaffs_setxattr(struct dentry *dentry, const char *name,
const void *value, size_t size, int flags)
{
struct inode *inode = dentry->d_inode;
return error;
}
-ssize_t yaffs_getxattr(struct dentry * dentry, const char *name, void *buff,
+static ssize_t yaffs_getxattr(struct dentry * dentry, const char *name, void *buff,
size_t size)
{
struct inode *inode = dentry->d_inode;
return error;
}
-int yaffs_removexattr(struct dentry *dentry, const char *name)
+static int yaffs_removexattr(struct dentry *dentry, const char *name)
{
struct inode *inode = dentry->d_inode;
int error = 0;
return error;
}
-ssize_t yaffs_listxattr(struct dentry * dentry, char *buff, size_t size)
+static ssize_t yaffs_listxattr(struct dentry * dentry, char *buff, size_t size)
{
struct inode *inode = dentry->d_inode;
int error = 0;
mutex_unlock(&yaffs_context_lock);
if (yaffs_dev_to_lc(dev)->spare_buffer) {
- YFREE(yaffs_dev_to_lc(dev)->spare_buffer);
+ kfree(yaffs_dev_to_lc(dev)->spare_buffer);
yaffs_dev_to_lc(dev)->spare_buffer = NULL;
}
param->read_chunk_tags_fn = nandmtd2_read_chunk_tags;
param->bad_block_fn = nandmtd2_mark_block_bad;
param->query_block_fn = nandmtd2_query_block;
- yaffs_dev_to_lc(dev)->spare_buffer = YMALLOC(mtd->oobsize);
+ yaffs_dev_to_lc(dev)->spare_buffer =
+ kmalloc(mtd->oobsize, GFP_NOFS);
param->is_yaffs2 = 1;
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 17))
param->total_bytes_per_chunk = mtd->writesize;
#endif /* CONFIG_YAFFS_YAFFS2 */
static struct proc_dir_entry *my_proc_entry;
-static struct proc_dir_entry *debug_proc_entry;
static char *yaffs_dump_dev_part0(char *buf, struct yaffs_dev *dev)
{
return buf - page < count ? buf - page : count;
}
-static int yaffs_stats_proc_read(char *page,
- char **start,
- off_t offset, int count, int *eof, void *data)
-{
- struct list_head *item;
- char *buf = page;
- int n = 0;
-
- mutex_lock(&yaffs_context_lock);
-
- /* Locate and print the Nth entry. Order N-squared but N is small. */
- list_for_each(item, &yaffs_context_list) {
- struct yaffs_linux_context *dc =
- list_entry(item, struct yaffs_linux_context, context_list);
- struct yaffs_dev *dev = dc->dev;
-
- int erased_chunks;
-
- erased_chunks =
- dev->n_erased_blocks * dev->param.chunks_per_block;
-
- buf += sprintf(buf, "%d, %d, %d, %u, %u, %u, %u\n",
- n, dev->n_free_chunks, erased_chunks,
- dev->bg_gcs, dev->oldest_dirty_gc_count,
- dev->n_obj, dev->n_tnodes);
- }
- mutex_unlock(&yaffs_context_lock);
-
- return buf - page < count ? buf - page : count;
-}
-
/**
* Set the verbosity of the warnings and error messages.
*
return -ENOMEM;
}
- debug_proc_entry = create_proc_entry("yaffs_stats",
- S_IRUGO | S_IFREG, YPROC_ROOT);
-
- if (debug_proc_entry) {
- debug_proc_entry->write_proc = NULL;
- debug_proc_entry->read_proc = yaffs_stats_proc_read;
- debug_proc_entry->data = NULL;
- } else {
- return -ENOMEM;
- }
-
/* Now add the file system entries */
fsinst = fs_to_install;
(TSTR("yaffs built " __DATE__ " " __TIME__ " removing. \n")));
remove_proc_entry("yaffs", YPROC_ROOT);
- remove_proc_entry("yaffs_stats", YPROC_ROOT);
fsinst = fs_to_install;