Re: [PATCH] bcachefs: Fix format specifiers in bch2_btree_key_cache_to_text()

2024-04-23 Thread Kent Overstreet
On Tue, Apr 23, 2024 at 01:12:27PM -0700, Nathan Chancellor wrote:
> When building for a 32-bit target, for which 'size_t' is 'unsigned int',
> there are two warnings around mismatched format specifiers and argument
> types:

Thanks! Applied.



[PATCH] bcachefs: Fix format specifiers in bch2_btree_key_cache_to_text()

2024-04-23 Thread Nathan Chancellor
When building for a 32-bit target, for which 'size_t' is 'unsigned int',
there are two warnings around mismatched format specifiers and argument
types:

  In file included from fs/bcachefs/vstructs.h:5,
   from fs/bcachefs/bcachefs_format.h:79,
   from fs/bcachefs/bcachefs.h:207,
   from fs/bcachefs/btree_key_cache.c:3:
  fs/bcachefs/btree_key_cache.c: In function 'bch2_btree_key_cache_to_text':
  fs/bcachefs/btree_key_cache.c:1046:25: error: format '%lu' expects argument 
of type 'long unsigned int', but argument 3 has type 'size_t' {aka 'unsigned 
int'} [-Werror=format=]
   1046 | prt_printf(out, "nonpcpu freelist:\t%lu\r\n",   
bc->nr_freed_nonpcpu);
| ^~~~

|   |
|   size_t {aka 
unsigned int}
  fs/bcachefs/util.h:192:63: note: in definition of macro 'prt_printf'
192 | #define prt_printf(_out, ...)   bch2_prt_printf(_out, 
__VA_ARGS__)
|   
^~~
  fs/bcachefs/btree_key_cache.c:1046:47: note: format string is defined here
   1046 | prt_printf(out, "nonpcpu freelist:\t%lu\r\n",   
bc->nr_freed_nonpcpu);
| ~~^
|   |
|   long unsigned int
| %u
  fs/bcachefs/btree_key_cache.c:1047:25: error: format '%lu' expects argument 
of type 'long unsigned int', but argument 3 has type 'size_t' {aka 'unsigned 
int'} [-Werror=format=]
   1047 | prt_printf(out, "pcpu freelist:\t%lu\r\n",  
bc->nr_freed_pcpu);
| ^   
~
|   |
|   size_t {aka 
unsigned int}
  fs/bcachefs/util.h:192:63: note: in definition of macro 'prt_printf'
192 | #define prt_printf(_out, ...)   bch2_prt_printf(_out, 
__VA_ARGS__)
|   
^~~
  fs/bcachefs/btree_key_cache.c:1047:44: note: format string is defined here
   1047 | prt_printf(out, "pcpu freelist:\t%lu\r\n",  
bc->nr_freed_pcpu);
|  ~~^
||
|long unsigned int
|  %u
  cc1: all warnings being treated as error

Use the proper 'size_t' specifier, '%zu', to clear up the warnings for
these platforms.

Fixes: f2d47ec26af5 ("bcachefs: Btree key cache instrumentation")
Signed-off-by: Nathan Chancellor 
---
 fs/bcachefs/btree_key_cache.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/bcachefs/btree_key_cache.c b/fs/bcachefs/btree_key_cache.c
index 52aada7a34ca..4c8da356f765 100644
--- a/fs/bcachefs/btree_key_cache.c
+++ b/fs/bcachefs/btree_key_cache.c
@@ -1043,8 +1043,8 @@ void bch2_btree_key_cache_to_text(struct printbuf *out, 
struct btree_key_cache *
prt_printf(out, "keys:\t%lu\r\n",   
atomic_long_read(>nr_keys));
prt_printf(out, "dirty:\t%lu\r\n",  
atomic_long_read(>nr_dirty));
prt_printf(out, "freelist:\t%lu\r\n",   
atomic_long_read(>nr_freed));
-   prt_printf(out, "nonpcpu freelist:\t%lu\r\n",   bc->nr_freed_nonpcpu);
-   prt_printf(out, "pcpu freelist:\t%lu\r\n",  bc->nr_freed_pcpu);
+   prt_printf(out, "nonpcpu freelist:\t%zu\r\n",   bc->nr_freed_nonpcpu);
+   prt_printf(out, "pcpu freelist:\t%zu\r\n",  bc->nr_freed_pcpu);
 
prt_printf(out, "\nshrinker:\n");
prt_printf(out, "requested_to_free:\t%lu\r\n",  bc->requested_to_free);

---
base-commit: 711f072a8f7f795e63c4f729cc258ba238851333
change-id: 20240423-bcachefs-fix-wformat-32-bit-pcpu-3710fd78ea92

Best regards,
-- 
Nathan Chancellor