Thread (15 messages) 15 messages, 3 authors, 2021-08-09

Re: [PATCH 3/5] xfs: automatic resource cleanup of for_each_perag*

From: Christoph Hellwig <hch@infradead.org>
Date: 2021-08-09 15:08:26
Also in: lkml

+# Required for for_each_perag*
+ccflags-y += -std=gnu99
I don't think it is up to an individual subsystem to pick a specific C
dialect.

I think the most important reason why the kernel sticks with gnu89 is
to avoid the misfeature of variable declarations in the middle of
blocks, and this change would lose it.
+	xfs_agnumber_t		last_agno = 0;
 	int			saved_error = 0;
 	int			error = 0;
 	LIST_HEAD		(buffer_list);
 
 	/* update secondary superblocks. */
-	for_each_perag_from(mp, agno, pag) {
+	for_each_perag_from(mp, iter, 1) {
 		struct xfs_buf		*bp;
 
+		last_agno = iter.pag->pag_agno;
This is a really horrible API as it magically injects a local variable
in a macro.  It also leads to worse code generation and a small but
noticable increase in .text sie:

hch@brick:~/work/xfs$ size xfs.o.*
   text	   data	    bss	    dec	    hex	filename
1521421	 301161	   1880	1824462	 1bd6ce	xfs.o.old
1521516	 301161	   1880	1824557	 1bd72d	xfs.o.new
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help