On 09/04/2019 13:03, Christoph Hellwig wrote:
On Tue, Apr 09, 2019 at 10:41:53AM +0100, Andrew Price wrote:
Give gfs2-utils its own copy of gfs2_ondisk.h which uses userspace
types. This allows us to always support the latest ondisk structures and
obsoletes a lot of #ifdef GFS2_HAS_<FEATURE> blocks and configure.ac
checks.
gfs2_ondisk.h was changed simply by search-and-replace of the kernel int
types with the uintN_t, i.e.:
:%s/__u\(8\|16\|32\|64\)/uint\1_t/g
:%s/__be\(64\|32\|16\|8\)/uint\1_t/g
and the linux/types.h include replaced with stdint.h
Why?
Because I'd like to be able to build gfs2-utils on FreeBSD one day. Plus
we get the handy stuff in inttypes.h to use, Linux doesn't have that.
At least the be types give you really useful type checking with
sparse, which can be trivially wired up in userspace as well.
If you mean the bitwise annotations that only sparse checks, we're
fairly safe in gfs2-utils in that anything represented by a struct is
going to have been parsed through one of the libgfs2/ondisk.c functions
so will be the right endianness. I run sparse over this code very rarely
anyway.
Also
keeping the file 1:1 the same is going to make your life much easier
in the future..
It's really no difficulty to run the above substitutions the next time
the file changes, but gfs2_ondisk.h changes once in a blue moon anyway
so the maintenance overhead is going to be tiny.
Andy