Hi Stephan:

Am 30.06.12 21:16 schrieb(en) Stephan Gatzka:
I have a problem running jffs2 on an MPC5200b board. I run kernel 3.4, but 
older kernels like 3.1.5 are also affected. Every time I mount jffs2, 
previously written content gets garbled.

The problem was nailed down to memcpy(&fd->name, rd->name, checkedlen); in 
jffs2_scan_dirent_node in fs/jffs2/scan.c.
[snip]
2. use memcpy_fromio in the jffs2 code. memcpy_fromio behaves exactly in the 
way I described above. This could be also a good solution because flash access 
via LocalPlus bus is clearly IO.

I don't recall who proposed this patch, but exactly this solution is around for 
a longer time (mayby you search archives...).  On my board, I have a flash chip 
attached to the LocalBus in 16-bit mode.  Based on 3.2.16, the patch is:

---8<----------------------------------------------------------------------------
--- linux-3.2.16-orig/fs/jffs2/scan.c   2012-04-23 00:31:32.000000000 +0200
+++ linux-3.2.16/fs/jffs2/scan.c        2012-04-27 13:23:06.000000000 +0200
@@ -509,7 +509,11 @@
                                        sumptr = kmalloc(sumlen, GFP_KERNEL);
                                        if (!sumptr)
                                                return -ENOMEM;
+#ifdef CONFIG_PPC_MPC52xx
+                                       memcpy_fromio(sumptr + sumlen - 
buf_len, buf + buf_size - buf_len, buf_len);
+#else
                                        memcpy(sumptr + sumlen - buf_len, buf + 
buf_size - buf_len, buf_len);
+#endif
                                }
                                if (buf_len < sumlen) {
                                        /* Need to read more so that the entire 
summary node is present */
@@ -1039,7 +1043,11 @@
        if (!fd) {
                return -ENOMEM;
        }
+#ifdef CONFIG_PPC_MPC52xx
+       memcpy_fromio(&fd->name, rd->name, checkedlen);
+#else
        memcpy(&fd->name, rd->name, checkedlen);
+#endif
        fd->name[checkedlen] = 0;

        crc = crc32(0, fd->name, rd->nsize);
---8<----------------------------------------------------------------------------

Works perfectly with it...

Hope this helps,
Albrecht.

Attachment: pgpGSw8l7RNeH.pgp
Description: PGP signature

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to