ext3 incompatability between linux 2.4/ppc and linux 2.6/x86

Andreas Dilger adilger at clusterfs.com
Tue Sep 20 13:26:18 UTC 2005

On Sep 20, 2005  12:47 +0100, Cam wrote:
> Looking at the versions, on the 2.4 desktop I have e2fsprogs-1.32-6, on 
> embedded I have e2fsprogs-1.27-1. On the 2.6 desktop it's e2fsprogs-1.35-12.
> I built e2fsprogs-1.38 for the desktop and the result was the same.
> I used dumpe2fs on the working and non-working filesystems and found 
> that the newer FS has different features:
> < Filesystem features:      has_journal filetype sparse_super
> > Filesystem features:      has_journal resize_inode filetype sparse_super

The resize_inode feature is relatively new, but _should_ be harmless for
a kernel that doesn't understand it (it is just a file in the filesystem).
That said, it is quite unlikely that you will ever need this for embedded
systems, so you can turn it off at mke2fs time or afterward with tune2fs
with "-O ^resize_inode".

> After writing to a new FS on the desktop a further feature is added,
> < Filesystem features:      has_journal resize_inode filetype sparse_super
> > Filesystem features:      has_journal ext_attr resize_inode filetype 
> sparse_super

The ext_attr feature is probably from selinux.  This can be a problem
for older kernels (quite sadly, as there is a "feature" which slipped
in under the radar).  The problem is that selinux added support for
EAs on symlinks, but this confuses older kernels into thinking that a
fast symlink (stored in the inode) has an external block and is (wrongly)
considered a slow symlink.  The older kernel then tries to decode the
EA as a symlink.  I don't know if this is causing your problem though.

I'm not sure if there is some way to prevent selinux from tagging all
of the files in the filesystem or not (e.g. mount option or other).

There is a trivial change to the ext3 code to fix this for your embedded
platform - add ext3_inode_is_fast_symlink() to check for i_file_acl and
change ext3_read_inode() to use this instead of just checking i_blocks).

> I'm not convinced the features are relevant though because if I mkfs 
> with -O to restrict the features, the result is the same. I wonder if it 
> could be an endianness issue?

Note that in newer e2fsprogs you need to use "mke2fs -O none -O {features}"
to clear the default feature set.  Also, it isn't clear whether this will
prevent selinux from enabling the ext_attr feature.

I would initially suspect an endian issue, but none of the values printed
in the error messages appear to be byte-swapped values.  They instead look
like ASCII values (e.g. "md-2" and "bash").

Cheers, Andreas
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.

More information about the Ext3-users mailing list