Skip to content

Commit 4f700bc

Browse files
committed
Reorganize our CRC source files again.
Now that we use CRC-32C in WAL and the control file, the "traditional" and "legacy" CRC-32 variants are not used in any frontend programs anymore. Move the code for those back from src/common to src/backend/utils/hash. Also move the slicing-by-8 implementation (back) to src/port. This is in preparation for next patch that will add another implementation that uses Intel SSE 4.2 instructions to calculate CRC-32C, where available.
1 parent d577bb8 commit 4f700bc

File tree

25 files changed

+211
-181
lines changed

25 files changed

+211
-181
lines changed

contrib/hstore/hstore_gist.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include "access/gist.h"
77
#include "access/skey.h"
88
#include "catalog/pg_type.h"
9-
#include "common/pg_crc.h"
9+
#include "utils/pg_crc.h"
1010

1111
#include "hstore.h"
1212

contrib/ltree/crc32.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#define TOLOWER(x) (x)
2121
#endif
2222

23-
#include "common/pg_crc.h"
23+
#include "utils/pg_crc.h"
2424
#include "crc32.h"
2525

2626
unsigned int

contrib/pg_trgm/trgm_op.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "catalog/pg_type.h"
1111
#include "tsearch/ts_locale.h"
1212
#include "utils/memutils.h"
13+
#include "utils/pg_crc.h"
1314

1415
PG_MODULE_MAGIC;
1516

src/backend/access/transam/twophase.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,8 +1023,8 @@ EndPrepare(GlobalTransaction gxact)
10231023
TwoPhaseFileHeader *hdr;
10241024
char path[MAXPGPATH];
10251025
StateFileChunk *record;
1026-
pg_crc32 statefile_crc;
1027-
pg_crc32 bogus_crc;
1026+
pg_crc32c statefile_crc;
1027+
pg_crc32c bogus_crc;
10281028
int fd;
10291029

10301030
/* Add the end sentinel to the list of 2PC records */
@@ -1034,7 +1034,7 @@ EndPrepare(GlobalTransaction gxact)
10341034
/* Go back and fill in total_len in the file header record */
10351035
hdr = (TwoPhaseFileHeader *) records.head->data;
10361036
Assert(hdr->magic == TWOPHASE_MAGIC);
1037-
hdr->total_len = records.total_len + sizeof(pg_crc32);
1037+
hdr->total_len = records.total_len + sizeof(pg_crc32c);
10381038

10391039
/*
10401040
* If the file size exceeds MaxAllocSize, we won't be able to read it in
@@ -1082,7 +1082,7 @@ EndPrepare(GlobalTransaction gxact)
10821082
*/
10831083
bogus_crc = ~statefile_crc;
10841084

1085-
if ((write(fd, &bogus_crc, sizeof(pg_crc32))) != sizeof(pg_crc32))
1085+
if ((write(fd, &bogus_crc, sizeof(pg_crc32c))) != sizeof(pg_crc32c))
10861086
{
10871087
CloseTransientFile(fd);
10881088
ereport(ERROR,
@@ -1091,7 +1091,7 @@ EndPrepare(GlobalTransaction gxact)
10911091
}
10921092

10931093
/* Back up to prepare for rewriting the CRC */
1094-
if (lseek(fd, -((off_t) sizeof(pg_crc32)), SEEK_CUR) < 0)
1094+
if (lseek(fd, -((off_t) sizeof(pg_crc32c)), SEEK_CUR) < 0)
10951095
{
10961096
CloseTransientFile(fd);
10971097
ereport(ERROR,
@@ -1135,7 +1135,7 @@ EndPrepare(GlobalTransaction gxact)
11351135
/* If we crash now, we have prepared: WAL replay will fix things */
11361136

11371137
/* write correct CRC and close file */
1138-
if ((write(fd, &statefile_crc, sizeof(pg_crc32))) != sizeof(pg_crc32))
1138+
if ((write(fd, &statefile_crc, sizeof(pg_crc32c))) != sizeof(pg_crc32c))
11391139
{
11401140
CloseTransientFile(fd);
11411141
ereport(ERROR,
@@ -1223,7 +1223,7 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
12231223
int fd;
12241224
struct stat stat;
12251225
uint32 crc_offset;
1226-
pg_crc32 calc_crc,
1226+
pg_crc32c calc_crc,
12271227
file_crc;
12281228

12291229
TwoPhaseFilePath(path, xid);
@@ -1258,14 +1258,14 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
12581258

12591259
if (stat.st_size < (MAXALIGN(sizeof(TwoPhaseFileHeader)) +
12601260
MAXALIGN(sizeof(TwoPhaseRecordOnDisk)) +
1261-
sizeof(pg_crc32)) ||
1261+
sizeof(pg_crc32c)) ||
12621262
stat.st_size > MaxAllocSize)
12631263
{
12641264
CloseTransientFile(fd);
12651265
return NULL;
12661266
}
12671267

1268-
crc_offset = stat.st_size - sizeof(pg_crc32);
1268+
crc_offset = stat.st_size - sizeof(pg_crc32c);
12691269
if (crc_offset != MAXALIGN(crc_offset))
12701270
{
12711271
CloseTransientFile(fd);
@@ -1302,7 +1302,7 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
13021302
COMP_CRC32C(calc_crc, buf, crc_offset);
13031303
FIN_CRC32C(calc_crc);
13041304

1305-
file_crc = *((pg_crc32 *) (buf + crc_offset));
1305+
file_crc = *((pg_crc32c *) (buf + crc_offset));
13061306

13071307
if (!EQ_CRC32C(calc_crc, file_crc))
13081308
{
@@ -1545,7 +1545,7 @@ void
15451545
RecreateTwoPhaseFile(TransactionId xid, void *content, int len)
15461546
{
15471547
char path[MAXPGPATH];
1548-
pg_crc32 statefile_crc;
1548+
pg_crc32c statefile_crc;
15491549
int fd;
15501550

15511551
/* Recompute CRC */
@@ -1572,7 +1572,7 @@ RecreateTwoPhaseFile(TransactionId xid, void *content, int len)
15721572
(errcode_for_file_access(),
15731573
errmsg("could not write two-phase state file: %m")));
15741574
}
1575-
if (write(fd, &statefile_crc, sizeof(pg_crc32)) != sizeof(pg_crc32))
1575+
if (write(fd, &statefile_crc, sizeof(pg_crc32c)) != sizeof(pg_crc32c))
15761576
{
15771577
CloseTransientFile(fd);
15781578
ereport(ERROR,

src/backend/access/transam/xlog.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -862,7 +862,7 @@ XLogRecPtr
862862
XLogInsertRecord(XLogRecData *rdata, XLogRecPtr fpw_lsn)
863863
{
864864
XLogCtlInsert *Insert = &XLogCtl->Insert;
865-
pg_crc32 rdata_crc;
865+
pg_crc32c rdata_crc;
866866
bool inserted;
867867
XLogRecord *rechdr = (XLogRecord *) rdata->data;
868868
bool isLogSwitch = (rechdr->xl_rmid == RM_XLOG_ID &&
@@ -4179,7 +4179,7 @@ WriteControlFile(void)
41794179
static void
41804180
ReadControlFile(void)
41814181
{
4182-
pg_crc32 crc;
4182+
pg_crc32c crc;
41834183
int fd;
41844184

41854185
/*
@@ -4681,7 +4681,7 @@ BootStrapXLOG(void)
46814681
bool use_existent;
46824682
uint64 sysidentifier;
46834683
struct timeval tv;
4684-
pg_crc32 crc;
4684+
pg_crc32c crc;
46854685

46864686
/*
46874687
* Select a hopefully-unique system identifier code for this installation.

src/backend/access/transam/xloginsert.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,
459459
XLogRecData *rdt;
460460
uint32 total_len = 0;
461461
int block_id;
462-
pg_crc32 rdata_crc;
462+
pg_crc32c rdata_crc;
463463
registered_buffer *prev_regbuf = NULL;
464464
XLogRecData *rdt_datas_last;
465465
XLogRecord *rechdr;

src/backend/access/transam/xlogreader.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ ValidXLogRecordHeader(XLogReaderState *state, XLogRecPtr RecPtr,
665665
static bool
666666
ValidXLogRecord(XLogReaderState *state, XLogRecord *record, XLogRecPtr recptr)
667667
{
668-
pg_crc32 crc;
668+
pg_crc32c crc;
669669

670670
/* Calculate the CRC */
671671
INIT_CRC32C(crc);

src/backend/replication/logical/snapbuild.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,7 +1391,7 @@ typedef struct SnapBuildOnDisk
13911391

13921392
/* data not covered by checksum */
13931393
uint32 magic;
1394-
pg_crc32 checksum;
1394+
pg_crc32c checksum;
13951395

13961396
/* data covered by checksum */
13971397

@@ -1634,7 +1634,7 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
16341634
char path[MAXPGPATH];
16351635
Size sz;
16361636
int readBytes;
1637-
pg_crc32 checksum;
1637+
pg_crc32c checksum;
16381638

16391639
/* no point in loading a snapshot if we're already there */
16401640
if (builder->state == SNAPBUILD_CONSISTENT)

src/backend/replication/slot.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ typedef struct ReplicationSlotOnDisk
5656

5757
/* data not covered by checksum */
5858
uint32 magic;
59-
pg_crc32 checksum;
59+
pg_crc32c checksum;
6060

6161
/* data covered by checksum */
6262
uint32 version;
@@ -1075,7 +1075,7 @@ RestoreSlotFromDisk(const char *name)
10751075
int fd;
10761076
bool restored = false;
10771077
int readBytes;
1078-
pg_crc32 checksum;
1078+
pg_crc32c checksum;
10791079

10801080
/* no need to lock here, no concurrent access allowed yet */
10811081

src/backend/utils/adt/tsgistidx.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "access/gist.h"
1818
#include "access/tuptoaster.h"
1919
#include "tsearch/ts_utils.h"
20+
#include "utils/pg_crc.h"
2021

2122

2223
#define SIGLENINT 31 /* >121 => key will toast, so it will not work

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy