X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_vfs_multi.c;h=8aa3fd4c2b55d6a0e7a935869426e6824ed40498;hp=9e4e31a8c78597ad1e4095f4ca420803dbb86f96;hb=a0be6e4dc3e5f1a775b408a8fdc83ca3252fd595;hpb=5409719091c79983abc45bcc3070bce6786c8278 diff --git a/yaffs_vfs_multi.c b/yaffs_vfs_multi.c index 9e4e31a..8aa3fd4 100644 --- a/yaffs_vfs_multi.c +++ b/yaffs_vfs_multi.c @@ -307,12 +307,12 @@ static int yaffs_writepage(struct page *page); #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) @@ -341,8 +341,6 @@ static int yaffs_follow_link(struct dentry *dentry, struct nameidata *nd); 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 = { @@ -456,7 +454,7 @@ static const struct file_operations yaffs_dir_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 = { @@ -1529,31 +1527,6 @@ static void yaffs_release_space(struct file *f) 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; @@ -2012,7 +1985,7 @@ static int yaffs_setattr(struct dentry *dentry, struct iattr *attr) } #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; @@ -2039,7 +2012,7 @@ int yaffs_setxattr(struct dentry *dentry, const char *name, 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; @@ -2062,7 +2035,7 @@ ssize_t yaffs_getxattr(struct dentry * dentry, const char *name, void *buff, 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; @@ -2090,7 +2063,7 @@ int yaffs_removexattr(struct dentry *dentry, const char *name) 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; @@ -2334,11 +2307,13 @@ static int yaffs_bg_thread_fn(void *data) next_gc = now + HZ / 10 + 1; else next_gc = now + HZ * 2; - } else /* + } else { + /* * gc not running so set to next_dir_update * to cut down on wake ups */ next_gc = next_dir_update; + } } yaffs_gross_unlock(dev); #if 1 @@ -2605,9 +2580,9 @@ static int yaffs_parse_options(struct yaffs_options *options, options_str++; } - if (!strcmp(cur_opt, "inband-tags")) + if (!strcmp(cur_opt, "inband-tags")) { options->inband_tags = 1; - else if (!strcmp(cur_opt, "tags-ecc-off")) { + } else if (!strcmp(cur_opt, "tags-ecc-off")) { options->tags_ecc_on = 0; options->tags_ecc_overridden = 1; } else if (!strcmp(cur_opt, "tags-ecc-on")) { @@ -2625,13 +2600,13 @@ static int yaffs_parse_options(struct yaffs_options *options, } else if (!strcmp(cur_opt, "empty-lost-and-found-on")) { options->empty_lost_and_found = 1; options->empty_lost_and_found_overridden = 1; - } else if (!strcmp(cur_opt, "no-cache")) + } else if (!strcmp(cur_opt, "no-cache")) { options->no_cache = 1; - else if (!strcmp(cur_opt, "no-checkpoint-read")) + } else if (!strcmp(cur_opt, "no-checkpoint-read")) { options->skip_checkpoint_read = 1; - else if (!strcmp(cur_opt, "no-checkpoint-write")) + } else if (!strcmp(cur_opt, "no-checkpoint-write")) { options->skip_checkpoint_write = 1; - else if (!strcmp(cur_opt, "no-checkpoint")) { + } else if (!strcmp(cur_opt, "no-checkpoint")) { options->skip_checkpoint_read = 1; options->skip_checkpoint_write = 1; } else { @@ -3136,7 +3111,6 @@ static DECLARE_FSTYPE(yaffs2_fs_type, "yaffs2", yaffs2_read_super, #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) { @@ -3268,8 +3242,9 @@ static int yaffs_proc_read(char *page, sprintf(buf, "\nDevice %d \"%s\"\n", n, dev->param.name); buf = yaffs_dump_dev_part0(buf, dev); - } else + } else { buf = yaffs_dump_dev_part1(buf, dev); + } break; } @@ -3279,37 +3254,6 @@ static int yaffs_proc_read(char *page, 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. * @@ -3320,35 +3264,36 @@ static struct { char *mask_name; unsigned mask_bitfield; } mask_flags[] = { - { - "allocate", YAFFS_TRACE_ALLOCATE}, { - "always", YAFFS_TRACE_ALWAYS}, { - "background", YAFFS_TRACE_BACKGROUND}, { - "bad_blocks", YAFFS_TRACE_BAD_BLOCKS}, { - "buffers", YAFFS_TRACE_BUFFERS}, { - "bug", YAFFS_TRACE_BUG}, { - "checkpt", YAFFS_TRACE_CHECKPOINT}, { - "deletion", YAFFS_TRACE_DELETION}, { - "erase", YAFFS_TRACE_ERASE}, { - "error", YAFFS_TRACE_ERROR}, { - "gc_detail", YAFFS_TRACE_GC_DETAIL}, { - "gc", YAFFS_TRACE_GC}, { - "lock", YAFFS_TRACE_LOCK}, { - "mtd", YAFFS_TRACE_MTD}, { - "nandaccess", YAFFS_TRACE_NANDACCESS}, { - "os", YAFFS_TRACE_OS}, { - "scan_debug", YAFFS_TRACE_SCAN_DEBUG}, { - "scan", YAFFS_TRACE_SCAN}, { - "tracing", YAFFS_TRACE_TRACING}, { - "sync", YAFFS_TRACE_SYNC}, { - "write", YAFFS_TRACE_WRITE}, { - "verify", YAFFS_TRACE_VERIFY}, { - "verify_nand", YAFFS_TRACE_VERIFY_NAND}, { - "verify_full", YAFFS_TRACE_VERIFY_FULL}, { - "verify_all", YAFFS_TRACE_VERIFY_ALL}, { - "all", 0xffffffff}, { - "none", 0}, { -NULL, 0},}; + {"allocate", YAFFS_TRACE_ALLOCATE}, + {"always", YAFFS_TRACE_ALWAYS}, + {"background", YAFFS_TRACE_BACKGROUND}, + {"bad_blocks", YAFFS_TRACE_BAD_BLOCKS}, + {"buffers", YAFFS_TRACE_BUFFERS}, + {"bug", YAFFS_TRACE_BUG}, + {"checkpt", YAFFS_TRACE_CHECKPOINT}, + {"deletion", YAFFS_TRACE_DELETION}, + {"erase", YAFFS_TRACE_ERASE}, + {"error", YAFFS_TRACE_ERROR}, + {"gc_detail", YAFFS_TRACE_GC_DETAIL}, + {"gc", YAFFS_TRACE_GC}, + {"lock", YAFFS_TRACE_LOCK}, + {"mtd", YAFFS_TRACE_MTD}, + {"nandaccess", YAFFS_TRACE_NANDACCESS}, + {"os", YAFFS_TRACE_OS}, + {"scan_debug", YAFFS_TRACE_SCAN_DEBUG}, + {"scan", YAFFS_TRACE_SCAN}, + {"mount", YAFFS_TRACE_MOUNT}, + {"tracing", YAFFS_TRACE_TRACING}, + {"sync", YAFFS_TRACE_SYNC}, + {"write", YAFFS_TRACE_WRITE}, + {"verify", YAFFS_TRACE_VERIFY}, + {"verify_nand", YAFFS_TRACE_VERIFY_NAND}, + {"verify_full", YAFFS_TRACE_VERIFY_FULL}, + {"verify_all", YAFFS_TRACE_VERIFY_ALL}, + {"all", 0xffffffff}, + {"none", 0}, + {NULL, 0}, +}; #define MAX_MASK_NAME_LENGTH 40 static int yaffs_proc_write_trace_options(struct file *file, const char *buf, @@ -3489,18 +3434,9 @@ static int __init init_yaffs_fs(void) my_proc_entry->write_proc = yaffs_proc_write; my_proc_entry->read_proc = yaffs_proc_read; my_proc_entry->data = NULL; - } else - 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 + } else { return -ENOMEM; + } /* Now add the file system entries */ @@ -3538,7 +3474,6 @@ static void __exit exit_yaffs_fs(void) (TSTR("yaffs built " __DATE__ " " __TIME__ " removing. \n"))); remove_proc_entry("yaffs", YPROC_ROOT); - remove_proc_entry("yaffs_stats", YPROC_ROOT); fsinst = fs_to_install;