Re: [PATCH] gfs2 endianness bug: be16 assigned to be32 field

From: Linus Torvalds
Date: Sat Oct 14 2006 - 14:34:29 EST




On Sat, 14 Oct 2006, Al Viro wrote:
>
> - leaf->lf_dirent_format = cpu_to_be16(GFS2_FORMAT_DE);
> + leaf->lf_dirent_format = cpu_to_be32(GFS2_FORMAT_DE);

Hmm. Doesn't this change the on-disk format on a LE machine (eg x86)?

In other words, this change makes me nervous. A quick grep seems to
indicate that nothing actually _uses_ this field, so maybe we don't really
care, but I think we should double-check that this is what the GFS2 people
really want.

If we don't want to change the format on a LE machine, then maybe the
gfs2_leaf structure should be changed to be

..
__be16 lf_dirent_format;
__be16 lf_unused;
..

which should keep the bits in the same position on LE.

Regardless, the old code was clearly wrong, since it gives different
on-disk format for a big-endian and a little-endian machine. Al's fix is
proper, but perhaps people would prefer something that breaks the BE
format rather than the LE format. Hmm?

Steven?

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/