From: Michael Paquier Date: Sun, 10 May 2020 01:58:54 +0000 (+0900) Subject: Remove smgrdounlink() in smgr.c from the code tree X-Git-Url: http://git.postgresql.org/gitweb/-?a=commitdiff_plain;h=e111c9f90ab6090859127cbb22156f4858b6a40c;p=users%2Frhaas%2Fpostgres.git Remove smgrdounlink() in smgr.c from the code tree The last caller of this routine was removed in b416691, and as a wise man said one day, dead code tends to silently break. Per discussion between Fujii Masao, Peter Geoghegan, Vignesh C and me. Reported-by: Peter Geoghegan Discussion: https://postgr.es/m/CAH2-Wz=sg5H8-vG4d5UmAofdcRMpeTDt2K-NUWp4GSfhenRGAQ@mail.gmail.com --- diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c index b053a4dc76..e6fa2148fc 100644 --- a/src/backend/storage/smgr/smgr.c +++ b/src/backend/storage/smgr/smgr.c @@ -335,59 +335,6 @@ smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo) smgrsw[reln->smgr_which].smgr_create(reln, forknum, 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. - */ -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); -} - /* * smgrdosyncall() -- Immediately sync all forks of all given relations * @@ -432,9 +379,6 @@ smgrdosyncall(SMgrRelation *rels, int nrels) * * 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) diff --git a/src/include/storage/smgr.h b/src/include/storage/smgr.h index bb8428f27f..6566659593 100644 --- a/src/include/storage/smgr.h +++ b/src/include/storage/smgr.h @@ -88,7 +88,6 @@ 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 smgrdosyncall(SMgrRelation *rels, int nrels); extern void smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo); extern void smgrextend(SMgrRelation reln, ForkNumber forknum,