diff --git a/g3doc/user_guide/filesystem.md b/g3doc/user_guide/filesystem.md
index f23c7a5e60..d6ae62e930 100644
--- a/g3doc/user_guide/filesystem.md
+++ b/g3doc/user_guide/filesystem.md
@@ -113,4 +113,4 @@ Docker configuration (`/etc/docker/daemon.json`) and restart the Docker daemon:
}
```
-[Production guide]: ../production/
+[Production guide]: production.md
diff --git a/g3doc/user_guide/production.md b/g3doc/user_guide/production.md
index 0dad701fa1..32ae756696 100644
--- a/g3doc/user_guide/production.md
+++ b/g3doc/user_guide/production.md
@@ -115,7 +115,9 @@ If you absolutely must run gVisor in a virtual machine, we recommend using the
`systrap` platform. This platform has the most flexibility, but its performance
will lag behind that of KVM.
-Configure Platform
+
+
+[Configure Platform](../architecture_guide/platforms.md)
»
### Optimizing I/O performance {#configure-io}
@@ -126,8 +128,7 @@ default configuration must support all possible I/O interaction patterns.
However, you can configure gVisor to use more aggressive caching policies where
it makes sense.
-Configure Filesystem
-»
+[Configure Filesystem](filesystem.md) »
### Optimizing network performance {#configure-network}
@@ -137,7 +138,9 @@ is optimized for security over performance. If your application is semi-trusted
and network performance is paramount, you can optionally enable Network
Passthrough to use the host's (Linux's) network stack, rather than gVisor's own.
-Configure Networking
+
+
+[Configure Networking](../architecture_guide/networking.md)
»
### Optimizing MM performance {#configure-mm}