This question is mostly just curiosity...
There are build-time dependency cycles between some of Postgres' code
subdirectories. For example, "storage" and "access" have such a cycle:
storage/buffpage.h #includes access/xlogdefs.h
access/visibilitymap.h #includes storage/block.h
Has there been any discussion about reorganizing these directories so that
no such cycles exist?
As someone very new to this code base, I think these cycles make it a
little harder to figure out the runtime and compile-time dependencies
between the subsystems these directories seem to represent. I wonder if
that's a problem others face as well?