On Mon, Sep 09, 2019 at 07:38:53AM +1000, Dave Chinner wrote: > > In file included from include/trace/events/iomap.h:15, > > from <command-line>: > > >> include/trace/events/iomap.h:49:39: warning: 'struct page' declared inside parameter list will not be visible outside of this definition or declaration > > TP_PROTO(struct inode *inode, struct page *page, unsigned long off, \ > > The only file that includes trace/events/iomap.h most definitely > has already defined struct page, and > > > > include/trace/events/iomap.h:49:18: warning: 'struct inode' declared inside parameter list will not be visible outside of this definition or declaration > > TP_PROTO(struct inode *inode, struct page *page, unsigned long off, \ > > ^~~~~ > > struct inode as well. > > So I'm not sure where the error is actually coming from, nor why it > might only be generated by an obscure architecture (I've never heard > of nds32 until now). This looks like the magic code that ensures every header can be compiled standalone. Which so far hasn't helped anything but caused tons of pointless warnings. That being said adding a couple struct forward declarations seems like and easy way to shut it up here.