diff --git a/doc/src/sgml/storage.sgml b/doc/src/sgml/storage.sgml
index dd6f55ad63..260df3de71 100644
--- a/doc/src/sgml/storage.sgml
+++ b/doc/src/sgml/storage.sgml
@@ -174,8 +174,6 @@ adjusted using the configuration option
when building PostgreSQL>.)
In principle, free space map and visibility map forks could require multiple
segments as well, though this is unlikely to happen in practice.
-The contents of tables and indexes are discussed further in
-.
@@ -187,15 +185,27 @@ its TOAST> table, if any.
See for more information.
+
+The contents of tables and indexes are discussed further in
+.
+
+
Tablespaces make the scenario more complicated. Each user-defined tablespace
has a symbolic link inside the PGDATA>/pg_tblspc>
-directory, which points to the physical tablespace directory (as specified in
-its CREATE TABLESPACE> command). The symbolic link is named after
+directory, which points to the physical tablespace directory (i.e., the
+location specified in the tablespace's CREATE TABLESPACE> command).
+This symbolic link is named after
the tablespace's OID. Inside the physical tablespace directory there is
+a subdirectory with a name that depends on the PostgreSQL>
+server version, such as PG_9.0_201008051>. (The reason for using
+this subdirectory is so that successive versions of the database can use
+the same CREATE TABLESPACE> location value without conflicts.)
+Within the version-specific subdirectory, there is
a subdirectory for each database that has elements in the tablespace, named
-after the database's OID. Tables within that directory follow the filenode
-naming scheme. The pg_default> tablespace is not accessed through
+after the database's OID. Tables and indexes are stored within that
+directory, using the filenode naming scheme.
+The pg_default> tablespace is not accessed through
pg_tblspc>, but corresponds to
PGDATA>/base>. Similarly, the pg_global>
tablespace is not accessed through pg_tblspc>, but corresponds to