1- diff --git a/src/backend/replication /basebackup.c b/src/backend/replication /basebackup.c
2- index5244823ff85..160889b4a04 100644
3- --- a/src/backend/replication /basebackup.c
4- +++ b/src/backend/replication /basebackup.c
1+ diff --git a/src/backend/backup /basebackup.c b/src/backend/backup /basebackup.c
2+ index715428029b3..81f3218540a 100644
3+ --- a/src/backend/backup /basebackup.c
4+ +++ b/src/backend/backup /basebackup.c
55@@ -197,6 +197,13 @@ static const struct exclude_list_item excludeFiles[] =
66 {"postmaster.pid", false},
77 {"postmaster.opts", false},
@@ -52,7 +52,7 @@ index 658fd95ba95..eee38eba176 100644
5252 * Be paranoid here and fsync all files to ensure the copy is really done.
5353 * But if fsync is disabled, we're done.
5454diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
55- index43edaf5d873..bbaf7500944 100644
55+ index3deac496eed..07c4ee2ba03 100644
5656--- a/src/backend/storage/smgr/md.c
5757+++ b/src/backend/storage/smgr/md.c
5858@@ -87,6 +87,8 @@ typedef struct _MdfdVec
@@ -63,29 +63,29 @@ index 43edaf5d873..bbaf7500944 100644
6363+ mdwrite_hook_type mdwrite_hook = NULL;
6464
6565 /* Populate a file tag describing an md.c segment file. */
66- #define INIT_MD_FILETAG(a,xx_rnode ,xx_forknum,xx_segno) \
67- @@ -467 ,6 +469 ,9 @@ mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
66+ #define INIT_MD_FILETAG(a,xx_rlocator ,xx_forknum,xx_segno) \
67+ @@ -484 ,6 +486 ,9 @@ mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
6868 register_dirty_segment(reln, forknum, v);
6969
7070 Assert(_mdnblocks(reln, forknum, v) <= ((BlockNumber) RELSEG_SIZE));
7171+
7272+ if (mdextend_hook)
73- + mdextend_hook(reln->smgr_rnode , forknum, blocknum);
73+ + mdextend_hook(reln->smgr_rlocator , forknum, blocknum);
7474 }
7575
7676 /*
77- @@ -756 ,6 +761 ,9 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
77+ @@ -773 ,6 +778 ,9 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
7878
7979 if (!skipFsync && !SmgrIsTemp(reln))
8080 register_dirty_segment(reln, forknum, v);
8181+
8282+ if (mdwrite_hook)
83- + mdwrite_hook(reln->smgr_rnode , forknum, blocknum);
83+ + mdwrite_hook(reln->smgr_rlocator , forknum, blocknum);
8484 }
8585
8686 /*
8787diff --git a/src/backend/storage/sync/sync.c b/src/backend/storage/sync/sync.c
88- indexe1fb6310038..76d75680b31 100644
88+ index9d6a9e91090..990d0722229 100644
8989--- a/src/backend/storage/sync/sync.c
9090+++ b/src/backend/storage/sync/sync.c
9191@@ -81,6 +81,8 @@ static MemoryContext pendingOpsCxt; /* context for the above */
@@ -108,7 +108,7 @@ index e1fb6310038..76d75680b31 100644
108108 sync_in_progress = false;
109109 }
110110diff --git a/src/bin/pg_checksums/pg_checksums.c b/src/bin/pg_checksums/pg_checksums.c
111- index21dfe1b6ee5..266ac1ef40a 100644
111+ index324ccf77834..e82cae5f325 100644
112112--- a/src/bin/pg_checksums/pg_checksums.c
113113+++ b/src/bin/pg_checksums/pg_checksums.c
114114@@ -118,6 +118,11 @@ static const struct exclude_list_item skip[] = {
@@ -186,7 +186,7 @@ index d4772a29650..3318f64359d 100644
186186 /*
187187 * Write an empty XLOG file, containing only the checkpoint record
188188diff --git a/src/bin/pg_rewind/filemap.c b/src/bin/pg_rewind/filemap.c
189- index62529310415..b496f54fb06 100644
189+ index269ed6446e6..6318a8c1f55 100644
190190--- a/src/bin/pg_rewind/filemap.c
191191+++ b/src/bin/pg_rewind/filemap.c
192192@@ -157,6 +157,10 @@ static const struct exclude_list_item excludeFiles[] =
@@ -228,25 +228,25 @@ index 50a26edeb06..af1602f5154 100644
228228 extern void copy_file(char *fromfile, char *tofile);
229229
230230diff --git a/src/include/storage/md.h b/src/include/storage/md.h
231- indexffffa40db71..3ff98e0bf01 100644
231+ index10aa1b0109b..1415675824e 100644
232232--- a/src/include/storage/md.h
233233+++ b/src/include/storage/md.h
234234@@ -19,6 +19,13 @@
235235 #include "storage/smgr.h"
236236 #include "storage/sync.h"
237237
238- + typedef void (*mdextend_hook_type) (RelFileNodeBackend smgr_rnode ,
238+ + typedef void (*mdextend_hook_type) (RelFileLocatorBackend smgr_rlocator ,
239239+ ForkNumber forknum, BlockNumber blocknum);
240240+ extern PGDLLIMPORT mdextend_hook_type mdextend_hook;
241- + typedef void (*mdwrite_hook_type) (RelFileNodeBackend smgr_rnode ,
241+ + typedef void (*mdwrite_hook_type) (RelFileLocatorBackend smgr_rlocator ,
242242+ ForkNumber forknum, BlockNumber blocknum);
243243+ extern PGDLLIMPORT mdwrite_hook_type mdwrite_hook;
244244+
245245 /* md storage manager functionality */
246246 extern void mdinit(void);
247247 extern void mdopen(SMgrRelation reln);
248248diff --git a/src/include/storage/sync.h b/src/include/storage/sync.h
249- index9737e1eb67c..914ad86328f 100644
249+ index049af878dec..7689d49a24e 100644
250250--- a/src/include/storage/sync.h
251251+++ b/src/include/storage/sync.h
252252@@ -55,6 +55,9 @@ typedef struct FileTag