Hi, - I think it might be worth to rename IOCONTEXT_BUFFER_POOL to IOCONTEXT_{NORMAL, PLAIN, DEFAULT}. I'd like at some point to track WAL IO , temporary file IO etc, and it doesn't seem useful to define a version of BUFFER_POOL for each of them. And it'd make it less confusing, because all the other existing contexts are also in the buffer pool (for now, can't wait for "bypass" or whatever to be tracked as well).
- given that IOContextForStrategy() is defined in freelist.c, and that declaring it in pgstat.h requires including buf.h, I think it's probably better to move IOContextForStrategy()'s declaration to freelist.h (doesn't exist, but whatever the right one is) - pgstat_backend_io_stats_assert_well_formed() doesn't seem to belong in pgstat.c. Why not pgstat_io_ops.c? - Do pgstat_io_context_ops_assert_zero(), pgstat_io_op_assert_zero() have to be in pgstat.h? I think the only non-trival thing is the first point, the rest is stuff than I also evolve during commit. Greetings, Andres Freund