11diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
2- index863f89f19d2..8f3143758ab 100644
2+ index863f89f19d..8f3143758a 100644
33--- a/src/backend/commands/dbcommands.c
44+++ b/src/backend/commands/dbcommands.c
55@@ -56,6 +56,7 @@
@@ -35,7 +35,7 @@ index 863f89f19d2..8f3143758ab 100644
3535 else if (info == XLOG_DBASE_DROP)
3636 {
3737diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
38- indexa73893237a4..2a2e17fb33e 100644
38+ index3bc26568eb..c27df92d53 100644
3939--- a/src/backend/replication/basebackup.c
4040+++ b/src/backend/replication/basebackup.c
4141@@ -36,6 +36,7 @@
@@ -46,19 +46,19 @@ index a73893237a4..2a2e17fb33e 100644
4646 #include "storage/reinit.h"
4747 #include "utils/builtins.h"
4848 #include "utils/ps_status.h"
49- @@ -195 ,6 +196 ,10 @@ static constchar * excludeFiles[] =
50- "postmaster.pid",
51- "postmaster.opts",
49+ @@ -210 ,6 +211 ,10 @@ static conststruct exclude_list_item excludeFiles[] =
50+ { "postmaster.pid", false} ,
51+ { "postmaster.opts", false} ,
5252
53- + "ptrack.map.mmap",
54- + "ptrack.map",
55- + "ptrack.map.tmp",
53+ + { "ptrack.map.mmap", false} ,
54+ + { "ptrack.map", false} ,
55+ + { "ptrack.map.tmp", false} ,
5656+
5757 /* end of list */
58- NULL
58+ { NULL, false}
5959 };
6060diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
61- index7332e6b5903..08693933e18 100644
61+ index7332e6b590..08693933e1 100644
6262--- a/src/backend/storage/buffer/bufmgr.c
6363+++ b/src/backend/storage/buffer/bufmgr.c
6464@@ -688,7 +688,8 @@ ReadBufferWithoutRelcache(RelFileNode rnode, ForkNumber forkNum,
@@ -72,7 +72,7 @@ index 7332e6b5903..08693933e18 100644
7272 return ReadBuffer_common(smgr, RELPERSISTENCE_PERMANENT, forkNum, blockNum,
7373 mode, strategy, &hit);
7474diff --git a/src/backend/storage/smgr/Makefile b/src/backend/storage/smgr/Makefile
75- indexe486b7c0d1c..3c8f15b1444 100644
75+ indexe486b7c0d1..3c8f15b144 100644
7676--- a/src/backend/storage/smgr/Makefile
7777+++ b/src/backend/storage/smgr/Makefile
7878@@ -12,6 +12,6 @@ subdir = src/backend/storage/smgr
@@ -84,7 +84,7 @@ index e486b7c0d1c..3c8f15b1444 100644
8484
8585 include $(top_srcdir)/src/backend/common.mk
8686diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
87- index050cee5f9a9..94a7a1f7a1c 100644
87+ index050cee5f9a..94a7a1f7a1 100644
8888--- a/src/backend/storage/smgr/md.c
8989+++ b/src/backend/storage/smgr/md.c
9090@@ -33,6 +33,7 @@
@@ -115,7 +115,7 @@ index 050cee5f9a9..94a7a1f7a1c 100644
115115 /*
116116diff --git a/src/backend/storage/smgr/ptrack.c b/src/backend/storage/smgr/ptrack.c
117117new file mode 100644
118- index00000000000..b4e731cf652
118+ index0000000000..b4e731cf65
119119--- /dev/null
120120+++ b/src/backend/storage/smgr/ptrack.c
121121@@ -0,0 +1,655 @@
@@ -775,7 +775,7 @@ index 00000000000..b4e731cf652
775775+ }
776776+ }
777777diff --git a/src/backend/storage/sync/sync.c b/src/backend/storage/sync/sync.c
778- index705f229b27f..87c5d4f965d 100644
778+ index705f229b27..87c5d4f965 100644
779779--- a/src/backend/storage/sync/sync.c
780780+++ b/src/backend/storage/sync/sync.c
781781@@ -28,6 +28,7 @@
@@ -801,7 +801,7 @@ index 705f229b27f..87c5d4f965d 100644
801801 sync_in_progress = false;
802802 }
803803diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
804- indexdc8f910ea46..74bda8275cd 100644
804+ indexa70e79c489..371effeb2c 100644
805805--- a/src/backend/utils/misc/guc.c
806806+++ b/src/backend/utils/misc/guc.c
807807@@ -78,6 +78,8 @@
@@ -839,22 +839,22 @@ index dc8f910ea46..74bda8275cd 100644
839839 {"archive_timeout", PGC_SIGHUP, WAL_ARCHIVING,
840840 gettext_noop("Forces a switch to the next WAL file if a "
841841diff --git a/src/bin/pg_rewind/filemap.c b/src/bin/pg_rewind/filemap.c
842- index601f7e9690e..f8bb8ff521f 100644
842+ index56f83d2fb2..b0912f7dd0 100644
843843--- a/src/bin/pg_rewind/filemap.c
844844+++ b/src/bin/pg_rewind/filemap.c
845- @@ -103 ,6 +103 ,9 @@ static constchar * excludeFiles[] =
846- "postmaster.pid",
847- "postmaster.opts",
845+ @@ -117 ,6 +117 ,9 @@ static conststruct exclude_list_item excludeFiles[] =
846+ { "postmaster.pid", false} ,
847+ { "postmaster.opts", false} ,
848848
849- + "ptrack.map.mmap",
850- + "ptrack.map",
851- + "ptrack.map.tmp",
849+ + { "ptrack.map.mmap", false} ,
850+ + { "ptrack.map", false} ,
851+ + { "ptrack.map.tmp", false} ,
852852 /* end of list */
853- NULL
853+ { NULL, false}
854854 };
855855diff --git a/src/include/storage/ptrack.h b/src/include/storage/ptrack.h
856856new file mode 100644
857- index00000000000..67c66913479
857+ index0000000000..67c6691347
858858--- /dev/null
859859+++ b/src/include/storage/ptrack.h
860860@@ -0,0 +1,129 @@