diff --git a/fs/jffs2/jffs2.patch b/fs/jffs2/jffs2.patch index 073aa696d0deb5327ed2640bd73f8decd70d2487..46f32dfe2d7b29386fdc22b6865457c96fafbc3c 100644 --- a/fs/jffs2/jffs2.patch +++ b/fs/jffs2/jffs2.patch @@ -2311,12 +2311,11 @@ diff -Nupr old/fs/jffs2/erase.c new/fs/jffs2/erase.c diff -Nupr old/fs/jffs2/file.c new/fs/jffs2/file.c --- old/fs/jffs2/file.c 2022-05-09 17:22:53.000000000 +0800 +++ new/fs/jffs2/file.c 2022-05-10 09:43:14.250000000 +0800 -@@ -9,335 +9,30 @@ +@@ -9,334 +9,30 @@ * For licensing information, see the file 'LICENCE' in this directory. * */ -+#include "los_vm_common.h" - +- -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - -#include @@ -2326,6 +2325,7 @@ diff -Nupr old/fs/jffs2/file.c new/fs/jffs2/file.c -#include -#include -#include ++#include "los_vm_common.h" #include "nodelist.h" +#include "vfs_jffs2.h" @@ -2348,7 +2348,7 @@ diff -Nupr old/fs/jffs2/file.c new/fs/jffs2/file.c - struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb); + /* FIXME: This works only with one file system mounted at a time */ int ret; -- + - ret = file_write_and_wait_range(filp, start, end); + ret = jffs2_read_inode_range(c, f, gc_buffer, + offset & ~(PAGE_SIZE-1), PAGE_SIZE); @@ -2459,19 +2459,18 @@ diff -Nupr old/fs/jffs2/file.c new/fs/jffs2/file.c - struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); - struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb); - pgoff_t index = pos >> PAGE_SHIFT; -- uint32_t pageofs = index << PAGE_SHIFT; - int ret = 0; - - jffs2_dbg(1, "%s()\n", __func__); - -- if (pageofs > inode->i_size) { -- /* Make new hole frag from old EOF to new page */ +- if (pos > inode->i_size) { +- /* Make new hole frag from old EOF to new position */ - struct jffs2_raw_inode ri; - struct jffs2_full_dnode *fn; - uint32_t alloc_len; - -- jffs2_dbg(1, "Writing new hole frag 0x%x-0x%x between current EOF and new page\n", -- (unsigned int)inode->i_size, pageofs); +- jffs2_dbg(1, "Writing new hole frag 0x%x-0x%x between current EOF and new position\n", +- (unsigned int)inode->i_size, (uint32_t)pos); - - ret = jffs2_reserve_space(c, sizeof(ri), &alloc_len, - ALLOC_NORMAL, JFFS2_SUMMARY_INODE_SIZE); @@ -2491,10 +2490,10 @@ diff -Nupr old/fs/jffs2/file.c new/fs/jffs2/file.c - ri.mode = cpu_to_jemode(inode->i_mode); - ri.uid = cpu_to_je16(i_uid_read(inode)); - ri.gid = cpu_to_je16(i_gid_read(inode)); -- ri.isize = cpu_to_je32(max((uint32_t)inode->i_size, pageofs)); +- ri.isize = cpu_to_je32((uint32_t)pos); - ri.atime = ri.ctime = ri.mtime = cpu_to_je32(JFFS2_NOW()); - ri.offset = cpu_to_je32(inode->i_size); -- ri.dsize = cpu_to_je32(pageofs - inode->i_size); +- ri.dsize = cpu_to_je32((uint32_t)pos - inode->i_size); - ri.csize = cpu_to_je32(0); - ri.compr = JFFS2_COMPR_ZERO; - ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8)); @@ -2524,7 +2523,7 @@ diff -Nupr old/fs/jffs2/file.c new/fs/jffs2/file.c - goto out_err; - } - jffs2_complete_reservation(c); -- inode->i_size = pageofs; +- inode->i_size = pos; - mutex_unlock(&f->sem); - } -