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 = {
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;
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,