I'm using gcc to compile plan9 code from some time (4.7/4.8) and that option are masking real behaviour. Do not warns or put out an error about "anonymous structs", but you will have a conflict if to structs in the same source are including a, for example, "Lock;" element, and ld could not assign right the values if declarations are not specified ansi style (variable initialization it's made by ld, not by the compiler): you will get some dragons in some cases.
Look at LP49 source code and you will see that authors used your second way.

Álvaro Jurado Cuevas
colmenar.biz.tm

2014-10-07 17:58 GMT+02:00 Carsten Kunze <carsten.kunze@arcor.de>:
> Otherwise, your change is fine, but "hdr" would probably be
> a better name than "Biobufhdr". Also, don't forget to update
> your code to use b->hdr.fid instead of b->fid, and so on.

Thanks for all answers!

(They also helped to find a short documentation in /sys/doc/compiler)

   Carsten