From b1bd85c40eb5d22253fcc09c441abb50308ecd40 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 15 Aug 2015 17:16:03 +0000 Subject: kernel: yaffs2: update to version from 2015-06-02 In addition to the update this also fixes compile problems with kernel 4.1. This closes #20323. Signed-off-by: Hauke Mehrtens SVN-Revision: 46609 --- .../501-yaffs-add-missing-flush-arguments.patch | 38 --------- .../503-yaffs-add-tags-9bytes-mount-option.patch | 12 +-- .../patches-4.1/504-yaffs-3.16-new-fops.patch | 6 +- .../505-yaffs-3.19-f_dentry-remove.patch | 95 ++++++++++++++++++++++ 4 files changed, 106 insertions(+), 45 deletions(-) delete mode 100644 target/linux/generic/patches-4.1/501-yaffs-add-missing-flush-arguments.patch create mode 100644 target/linux/generic/patches-4.1/505-yaffs-3.19-f_dentry-remove.patch (limited to 'target/linux/generic/patches-4.1') diff --git a/target/linux/generic/patches-4.1/501-yaffs-add-missing-flush-arguments.patch b/target/linux/generic/patches-4.1/501-yaffs-add-missing-flush-arguments.patch deleted file mode 100644 index d5ccc3e81e..0000000000 --- a/target/linux/generic/patches-4.1/501-yaffs-add-missing-flush-arguments.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- a/fs/yaffs2/yaffs_vfs.c -+++ b/fs/yaffs2/yaffs_vfs.c -@@ -738,7 +738,7 @@ static int yaffs_file_flush(struct file - - yaffs_gross_lock(dev); - -- yaffs_flush_file(obj, 1, 0); -+ yaffs_flush_file(obj, 1, 0, 1); - - yaffs_gross_unlock(dev); - -@@ -768,7 +768,7 @@ static int yaffs_sync_object(struct file - yaffs_trace(YAFFS_TRACE_OS | YAFFS_TRACE_SYNC, - "yaffs_sync_object"); - yaffs_gross_lock(dev); -- yaffs_flush_file(obj, 1, datasync); -+ yaffs_flush_file(obj, 1, datasync, 1); - yaffs_gross_unlock(dev); - return 0; - } -@@ -2187,7 +2187,7 @@ static void yaffs_flush_inodes(struct su - yaffs_trace(YAFFS_TRACE_OS, - "flushing obj %d", - obj->obj_id); -- yaffs_flush_file(obj, 1, 0); -+ yaffs_flush_file(obj, 1, 0, 1); - } - } - } -@@ -2200,7 +2200,7 @@ static void yaffs_flush_super(struct sup - - yaffs_flush_inodes(sb); - yaffs_update_dirty_dirs(dev); -- yaffs_flush_whole_cache(dev); -+ yaffs_flush_whole_cache(dev, 1); - if (do_checkpoint) - yaffs_checkpoint_save(dev); - } diff --git a/target/linux/generic/patches-4.1/503-yaffs-add-tags-9bytes-mount-option.patch b/target/linux/generic/patches-4.1/503-yaffs-add-tags-9bytes-mount-option.patch index 9ecaa72832..3f51bafc11 100644 --- a/target/linux/generic/patches-4.1/503-yaffs-add-tags-9bytes-mount-option.patch +++ b/target/linux/generic/patches-4.1/503-yaffs-add-tags-9bytes-mount-option.patch @@ -4,7 +4,7 @@ Signed-off-by: Gabor Juhos --- --- a/fs/yaffs2/yaffs_vfs.c +++ b/fs/yaffs2/yaffs_vfs.c -@@ -2605,6 +2605,7 @@ static const struct super_operations yaf +@@ -2644,6 +2644,7 @@ static const struct super_operations yaf struct yaffs_options { int inband_tags; @@ -12,7 +12,7 @@ Signed-off-by: Gabor Juhos int skip_checkpoint_read; int skip_checkpoint_write; int no_cache; -@@ -2644,6 +2645,8 @@ static int yaffs_parse_options(struct ya +@@ -2683,6 +2684,8 @@ static int yaffs_parse_options(struct ya if (!strcmp(cur_opt, "inband-tags")) { options->inband_tags = 1; @@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos } else if (!strcmp(cur_opt, "tags-ecc-off")) { options->tags_ecc_on = 0; options->tags_ecc_overridden = 1; -@@ -2717,7 +2720,6 @@ static struct super_block *yaffs_interna +@@ -2756,7 +2759,6 @@ static struct super_block *yaffs_interna struct yaffs_param *param; int read_only = 0; @@ -29,7 +29,7 @@ Signed-off-by: Gabor Juhos struct yaffs_options options; -@@ -2757,6 +2759,9 @@ static struct super_block *yaffs_interna +@@ -2796,6 +2798,9 @@ static struct super_block *yaffs_interna memset(&options, 0, sizeof(options)); @@ -39,7 +39,7 @@ Signed-off-by: Gabor Juhos if (yaffs_parse_options(&options, data_str)) { /* Option parsing failed */ return NULL; -@@ -2790,17 +2795,22 @@ static struct super_block *yaffs_interna +@@ -2829,17 +2834,22 @@ static struct super_block *yaffs_interna } /* Added NCB 26/5/2006 for completeness */ @@ -68,7 +68,7 @@ Signed-off-by: Gabor Juhos return NULL; /* OK, so if we got here, we have an MTD that's NAND and looks -@@ -2857,7 +2867,8 @@ static struct super_block *yaffs_interna +@@ -2896,7 +2906,8 @@ static struct super_block *yaffs_interna param->n_reserved_blocks = 5; param->n_caches = (options.no_cache) ? 0 : 10; diff --git a/target/linux/generic/patches-4.1/504-yaffs-3.16-new-fops.patch b/target/linux/generic/patches-4.1/504-yaffs-3.16-new-fops.patch index 11c6da0516..32b4fdfa39 100644 --- a/target/linux/generic/patches-4.1/504-yaffs-3.16-new-fops.patch +++ b/target/linux/generic/patches-4.1/504-yaffs-3.16-new-fops.patch @@ -1,15 +1,19 @@ --- a/fs/yaffs2/yaffs_vfs.c +++ b/fs/yaffs2/yaffs_vfs.c -@@ -774,7 +774,21 @@ static int yaffs_sync_object(struct file +@@ -774,7 +774,25 @@ static int yaffs_sync_object(struct file } -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 22)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)) +static const struct file_operations yaffs_file_operations = { ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) + .read = new_sync_read, ++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0) */ + .read_iter = generic_file_read_iter, ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) + .write = new_sync_write, ++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0) */ + .write_iter = generic_file_write_iter, + .mmap = generic_file_mmap, + .flush = yaffs_file_flush, diff --git a/target/linux/generic/patches-4.1/505-yaffs-3.19-f_dentry-remove.patch b/target/linux/generic/patches-4.1/505-yaffs-3.19-f_dentry-remove.patch new file mode 100644 index 0000000000..0d4b6bf04f --- /dev/null +++ b/target/linux/generic/patches-4.1/505-yaffs-3.19-f_dentry-remove.patch @@ -0,0 +1,95 @@ +--- a/fs/yaffs2/yaffs_vfs.c ++++ b/fs/yaffs2/yaffs_vfs.c +@@ -283,7 +283,7 @@ static int yaffs_readpage_nolock(struct + (long long)pos, + (unsigned)PAGE_CACHE_SIZE); + +- obj = yaffs_dentry_to_obj(f->f_dentry); ++ obj = yaffs_dentry_to_obj(f->f_path.dentry); + + dev = obj->my_dev; + +@@ -481,7 +481,7 @@ static ssize_t yaffs_hold_space(struct f + + int n_free_chunks; + +- obj = yaffs_dentry_to_obj(f->f_dentry); ++ obj = yaffs_dentry_to_obj(f->f_path.dentry); + + dev = obj->my_dev; + +@@ -499,7 +499,7 @@ static void yaffs_release_space(struct f + struct yaffs_obj *obj; + struct yaffs_dev *dev; + +- obj = yaffs_dentry_to_obj(f->f_dentry); ++ obj = yaffs_dentry_to_obj(f->f_path.dentry); + + dev = obj->my_dev; + +@@ -591,7 +591,7 @@ static ssize_t yaffs_file_write(struct f + struct inode *inode; + struct yaffs_dev *dev; + +- obj = yaffs_dentry_to_obj(f->f_dentry); ++ obj = yaffs_dentry_to_obj(f->f_path.dentry); + + if (!obj) { + yaffs_trace(YAFFS_TRACE_OS, +@@ -603,7 +603,7 @@ static ssize_t yaffs_file_write(struct f + + yaffs_gross_lock(dev); + +- inode = f->f_dentry->d_inode; ++ inode = f->f_path.dentry->d_inode; + + if (!S_ISBLK(inode->i_mode) && f->f_flags & O_APPEND) + ipos = inode->i_size; +@@ -727,7 +727,7 @@ static int yaffs_file_flush(struct file + static int yaffs_file_flush(struct file *file) + #endif + { +- struct yaffs_obj *obj = yaffs_dentry_to_obj(file->f_dentry); ++ struct yaffs_obj *obj = yaffs_dentry_to_obj(file->f_path.dentry); + + struct yaffs_dev *dev = obj->my_dev; + +@@ -1734,7 +1734,7 @@ static int yaffs_iterate(struct file *f, + + char name[YAFFS_MAX_NAME_LENGTH + 1]; + +- obj = yaffs_dentry_to_obj(f->f_dentry); ++ obj = yaffs_dentry_to_obj(f->f_path.dentry); + dev = obj->my_dev; + + yaffs_gross_lock(dev); +@@ -1798,14 +1798,14 @@ static int yaffs_readdir(struct file *f, + struct yaffs_obj *obj; + struct yaffs_dev *dev; + struct yaffs_search_context *sc; +- struct inode *inode = f->f_dentry->d_inode; ++ struct inode *inode = f->f_path.dentry->d_inode; + unsigned long offset, curoffs; + struct yaffs_obj *l; + int ret_val = 0; + + char name[YAFFS_MAX_NAME_LENGTH + 1]; + +- obj = yaffs_dentry_to_obj(f->f_dentry); ++ obj = yaffs_dentry_to_obj(f->f_path.dentry); + dev = obj->my_dev; + + yaffs_gross_lock(dev); +@@ -1839,10 +1839,10 @@ static int yaffs_readdir(struct file *f, + if (offset == 1) { + yaffs_trace(YAFFS_TRACE_OS, + "yaffs_readdir: entry .. ino %d", +- (int)f->f_dentry->d_parent->d_inode->i_ino); ++ (int)f->f_path.dentry->d_parent->d_inode->i_ino); + yaffs_gross_unlock(dev); + if (filldir(dirent, "..", 2, offset, +- f->f_dentry->d_parent->d_inode->i_ino, ++ f->f_path.dentry->d_parent->d_inode->i_ino, + DT_DIR) < 0) { + yaffs_gross_lock(dev); + goto out; -- cgit v1.2.3