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?