On Thu, 2018-11-01 at 15:56 -0700, Nikunj Kela wrote: > CAUTION: This email originated from outside of the organization. Do not click > links or open attachments unless you recognize the sender and know the > content is safe. > > > This patch allows the endianness of the JFSS2 filesystem to be > specified by config options. > > It defaults to native-endian (the previously hard-coded option). > > Some architectures benefit from having a single known endianness > of JFFS2 filesystem (for data, not executables) independent of the > endianness of the processor (ARM processors can be switched to either > endianness at run-time).
I like this too. I have on several occasions needed to mount a JFFS2 BE on my PC. This saves me from having to hack the src. Jocke > > This patch is taken from: > http://www.infradead.org/pipermail/linux-mtd/2006-January/014717.html > > Cc: xe-linux-exter...@cisco.com > Signed-off-by: Rod Whitby <r...@whitby.id.au> > Signed-off-by: Nikunj Kela <nk...@cisco.com> > --- > fs/jffs2/Kconfig | 25 +++++++++++++++++++++++++ > fs/jffs2/nodelist.h | 8 +++----- > 2 files changed, 28 insertions(+), 5 deletions(-) > > diff --git a/fs/jffs2/Kconfig b/fs/jffs2/Kconfig > index ad850c5bf2ca..86e93fbc9d74 100644 > --- a/fs/jffs2/Kconfig > +++ b/fs/jffs2/Kconfig > @@ -182,3 +182,28 @@ config JFFS2_CMODE_FAVOURLZO > decompression) at the expense of size. > > endchoice > + > +choice > + prompt "JFFS2 endianness" > + default JFFS2_NATIVE_ENDIAN > + depends on JFFS2_FS > + help > + You can set here the default endianness of JFFS2 from > + the available options. Do not touch if unsure. > + > +config JFFS2_NATIVE_ENDIAN > + bool "native endian" > + help > + Uses a native endian bytestream. > + > +config JFFS2_BIG_ENDIAN > + bool "big endian" > + help > + Uses a big endian bytestream. > + > +config JFFS2_LITTLE_ENDIAN > + bool "little endian" > + help > + Uses a little endian bytestream. > + > +endchoice > diff --git a/fs/jffs2/nodelist.h b/fs/jffs2/nodelist.h > index 0637271f3770..a1ebf04f217c 100644 > --- a/fs/jffs2/nodelist.h > +++ b/fs/jffs2/nodelist.h > @@ -27,12 +27,10 @@ > #include "os-linux.h" > #endif > > -#define JFFS2_NATIVE_ENDIAN > - > /* Note we handle mode bits conversion from JFFS2 (i.e. Linux) to/from > whatever OS we're actually running on here too. */ > > -#if defined(JFFS2_NATIVE_ENDIAN) > +#if defined(CONFIG_JFFS2_NATIVE_ENDIAN) > #define cpu_to_je16(x) ((jint16_t){x}) > #define cpu_to_je32(x) ((jint32_t){x}) > #define cpu_to_jemode(x) ((jmode_t){os_to_jffs2_mode(x)}) > @@ -43,7 +41,7 @@ > #define je16_to_cpu(x) ((x).v16) > #define je32_to_cpu(x) ((x).v32) > #define jemode_to_cpu(x) (jffs2_to_os_mode((x).m)) > -#elif defined(JFFS2_BIG_ENDIAN) > +#elif defined(CONFIG_JFFS2_BIG_ENDIAN) > #define cpu_to_je16(x) ((jint16_t){cpu_to_be16(x)}) > #define cpu_to_je32(x) ((jint32_t){cpu_to_be32(x)}) > #define cpu_to_jemode(x) ((jmode_t){cpu_to_be32(os_to_jffs2_mode(x))}) > @@ -54,7 +52,7 @@ > #define je16_to_cpu(x) (be16_to_cpu(x.v16)) > #define je32_to_cpu(x) (be32_to_cpu(x.v32)) > #define jemode_to_cpu(x) (be32_to_cpu(jffs2_to_os_mode((x).m))) > -#elif defined(JFFS2_LITTLE_ENDIAN) > +#elif defined(CONFIG_JFFS2_LITTLE_ENDIAN) > #define cpu_to_je16(x) ((jint16_t){cpu_to_le16(x)}) > #define cpu_to_je32(x) ((jint32_t){cpu_to_le32(x)}) > #define cpu_to_jemode(x) ((jmode_t){cpu_to_le32(os_to_jffs2_mode(x))}) > -- > 2.19.1 > > > ______________________________________________________ > Linux MTD discussion mailing list > http://lists.infradead.org/mailman/listinfo/linux-mtd/