*** a/src/backend/storage/smgr/smgr.c
--- b/src/backend/storage/smgr/smgr.c
***************
*** 399,460 **** smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo)
  }
  
  /*
-  *	smgrdounlink() -- Immediately unlink all forks of a relation.
-  *
-  *		All forks of the relation are removed from the store.  This should
-  *		not be used during transactional operations, since it can't be undone.
-  *
-  *		If isRedo is true, it is okay for the underlying file(s) to be gone
-  *		already.
-  *
-  *		This is equivalent to calling smgrdounlinkfork for each fork, but
-  *		it's significantly quicker so should be preferred when possible.
-  */
- void
- smgrdounlink(SMgrRelation reln, bool isRedo)
- {
- 	RelFileNodeBackend rnode = reln->smgr_rnode;
- 	int			which = reln->smgr_which;
- 	ForkNumber	forknum;
- 
- 	/* Close the forks at smgr level */
- 	for (forknum = 0; forknum <= MAX_FORKNUM; forknum++)
- 		smgrsw[which].smgr_close(reln, forknum);
- 
- 	/*
- 	 * Get rid of any remaining buffers for the relation.  bufmgr will just
- 	 * drop them without bothering to write the contents.
- 	 */
- 	DropRelFileNodesAllBuffers(&rnode, 1);
- 
- 	/*
- 	 * It'd be nice to tell the stats collector to forget it immediately, too.
- 	 * But we can't because we don't know the OID (and in cases involving
- 	 * relfilenode swaps, it's not always clear which table OID to forget,
- 	 * anyway).
- 	 */
- 
- 	/*
- 	 * Send a shared-inval message to force other backends to close any
- 	 * dangling smgr references they may have for this rel.  We should do this
- 	 * before starting the actual unlinking, in case we fail partway through
- 	 * that step.  Note that the sinval message will eventually come back to
- 	 * this backend, too, and thereby provide a backstop that we closed our
- 	 * own smgr rel.
- 	 */
- 	CacheInvalidateSmgr(rnode);
- 
- 	/*
- 	 * Delete the physical file(s).
- 	 *
- 	 * Note: smgr_unlink must treat deletion failure as a WARNING, not an
- 	 * ERROR, because we've already decided to commit or abort the current
- 	 * xact.
- 	 */
- 	smgrsw[which].smgr_unlink(rnode, InvalidForkNumber, isRedo);
- }
- 
- /*
   *	smgrdounlinkall() -- Immediately unlink all forks of all given relations
   *
   *		All forks of all given relations are removed from the store.  This
--- 399,404 ----
***************
*** 463,471 **** smgrdounlink(SMgrRelation reln, bool isRedo)
   *
   *		If isRedo is true, it is okay for the underlying file(s) to be gone
   *		already.
-  *
-  *		This is equivalent to calling smgrdounlink for each relation, but it's
-  *		significantly quicker so should be preferred when possible.
   */
  void
  smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo)
--- 407,412 ----
*** a/src/include/storage/smgr.h
--- b/src/include/storage/smgr.h
***************
*** 89,95 **** extern void smgrclose(SMgrRelation reln);
  extern void smgrcloseall(void);
  extern void smgrclosenode(RelFileNodeBackend rnode);
  extern void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo);
- extern void smgrdounlink(SMgrRelation reln, bool isRedo);
  extern void smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo);
  extern void smgrdounlinkfork(SMgrRelation reln, ForkNumber forknum, bool isRedo);
  extern void smgrextend(SMgrRelation reln, ForkNumber forknum,
--- 89,94 ----
