Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8c9990b

Browse files
committed
Fix CFS warnings by adding cfs_on_exit_callback function
1 parentb4d2b44 commit8c9990b

File tree

8 files changed

+34
-28
lines changed

8 files changed

+34
-28
lines changed

‎src/backend/commands/trigger.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5017,7 +5017,7 @@ AfterTriggerSaveEvent(EState *estate, ResultRelInfo *relinfo,
50175017
void*
50185018
TriggerSuspend(void)
50195019
{
5020-
AfterTriggersData*state=malloc(sizeof(AfterTriggersData));
5020+
AfterTriggersData*state=(AfterTriggersData*)MemoryContextAlloc(TopMemoryContext,sizeof(AfterTriggersData));
50215021
*state=afterTriggers;
50225022
memset(&afterTriggers,0,sizeof(afterTriggers));
50235023
AfterTriggerBeginXact();
@@ -5028,7 +5028,7 @@ void
50285028
TriggerResume(void*state)
50295029
{
50305030
afterTriggers=*(AfterTriggersData*)state;
5031-
free(state);
5031+
pfree(state);
50325032
}
50335033

50345034
Datum

‎src/backend/executor/spi.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2746,7 +2746,7 @@ _SPI_save_plan(SPIPlanPtr plan)
27462746
void*
27472747
SuspendSPI(void)
27482748
{
2749-
SuspendedSPI*s=malloc(sizeof(SuspendedSPI));
2749+
SuspendedSPI*s=(SuspendedSPI*)MemoryContextAlloc(TopMemoryContext,sizeof(SuspendedSPI));
27502750

27512751
MOVELEFT(s->_SPI_stack,_SPI_stack,NULL);
27522752
MOVELEFT(s->_SPI_current,_SPI_current,NULL);
@@ -2768,5 +2768,5 @@ ResumeSPI(void *state)
27682768
_SPI_connected=s->_SPI_connected;
27692769
_SPI_curid=s->_SPI_curid;
27702770

2771-
free(state);
2771+
pfree(state);
27722772
}

‎src/backend/postmaster/pgstat.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5649,7 +5649,7 @@ typedef struct {
56495649
void*
56505650
PgStatSuspend(void)
56515651
{
5652-
SuspendedPgStat*sus=malloc(sizeof(SuspendedPgStat));
5652+
SuspendedPgStat*sus=(SuspendedPgStat*)MemoryContextAlloc(TopMemoryContext,sizeof(SuspendedPgStat));
56535653

56545654
MOVELEFT(sus->pgStatXactStack,pgStatXactStack,NULL);
56555655
MOVELEFT(sus->pgStatXactCommit,pgStatXactCommit,0);
@@ -5671,5 +5671,5 @@ PgStatResume(void *src)
56715671
pgStatBlockReadTime=sus->pgStatBlockReadTime;
56725672
pgStatBlockWriteTime=sus->pgStatBlockWriteTime;
56735673

5674-
free(src);
5674+
pfree(src);
56755675
}

‎src/backend/storage/file/cfs.c‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1881,3 +1881,8 @@ Datum cfs_gc_activity_scanned_files(PG_FUNCTION_ARGS)
18811881
{
18821882
PG_RETURN_INT64(cfs_state->gc_stat.scannedFiles);
18831883
}
1884+
1885+
voidcfs_on_exit_callback(intcode,Datumarg)
1886+
{
1887+
cfs_control_gc_unlock();
1888+
}

‎src/backend/storage/file/copydir.c‎

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,27 +57,27 @@ copydir(char *fromdir, char *todir, bool recurse)
5757

5858
cfs_control_gc_lock();/* disable GC during copy */
5959

60-
PG_ENSURE_ERROR_CLEANUP(cfs_control_gc_unlock, (Datum)NULL);
60+
PG_ENSURE_ERROR_CLEANUP(cfs_on_exit_callback, (Datum)NULL);
6161
{
6262
while ((xlde=ReadDir(xldir,fromdir))!=NULL)
6363
{
6464
structstatfst;
65-
65+
6666
/* If we got a cancel signal during the copy of the directory, quit */
6767
CHECK_FOR_INTERRUPTS();
68-
68+
6969
if (strcmp(xlde->d_name,".")==0||
7070
strcmp(xlde->d_name,"..")==0)
7171
continue;
72-
72+
7373
snprintf(fromfile,MAXPGPATH,"%s/%s",fromdir,xlde->d_name);
7474
snprintf(tofile,MAXPGPATH,"%s/%s",todir,xlde->d_name);
75-
75+
7676
if (lstat(fromfile,&fst)<0)
7777
ereport(ERROR,
7878
(errcode_for_file_access(),
7979
errmsg("could not stat file \"%s\": %m",fromfile)));
80-
80+
8181
if (S_ISDIR(fst.st_mode))
8282
{
8383
/* recurse to handle subdirectories */
@@ -89,9 +89,9 @@ copydir(char *fromdir, char *todir, bool recurse)
8989
}
9090
FreeDir(xldir);
9191
}
92-
PG_END_ENSURE_ERROR_CLEANUP(cfs_control_gc_unlock, (Datum)NULL);
92+
PG_END_ENSURE_ERROR_CLEANUP(cfs_on_exit_callback, (Datum)NULL);
9393
cfs_control_gc_unlock();
94-
94+
9595
/*
9696
* Be paranoid here and fsync all files to ensure the copy is really done.
9797
* But if fsync is disabled, we're done.
@@ -164,35 +164,35 @@ copyzipdir(char *fromdir, bool from_compressed,
164164

165165
cfs_control_gc_lock();/* disable GC during copy */
166166

167-
PG_ENSURE_ERROR_CLEANUP(cfs_control_gc_unlock, (Datum)NULL);
167+
PG_ENSURE_ERROR_CLEANUP(cfs_on_exit_callback, (Datum)NULL);
168168
{
169169
while ((xlde=ReadDir(xldir,fromdir))!=NULL)
170170
{
171171
structstatfst;
172-
172+
173173
/* If we got a cancel signal during the copy of the directory, quit */
174174
CHECK_FOR_INTERRUPTS();
175-
175+
176176
if (strcmp(xlde->d_name,".")==0
177177
||strcmp(xlde->d_name,"..")==0
178178
|| (strlen(xlde->d_name)>4
179179
&&strcmp(xlde->d_name+strlen(xlde->d_name)-4,".cfm")==0))
180180
continue;
181-
181+
182182
snprintf(fromfile,MAXPGPATH,"%s/%s",fromdir,xlde->d_name);
183183
snprintf(tofile,MAXPGPATH,"%s/%s",todir,xlde->d_name);
184-
184+
185185
if (lstat(fromfile,&fst)<0)
186186
ereport(ERROR,
187187
(errcode_for_file_access(),
188188
errmsg("could not stat file \"%s\": %m",fromfile)));
189-
189+
190190
if (S_ISREG(fst.st_mode))
191191
copy_zip_file(fromfile,from_compressed,tofile,to_compressed);
192192
}
193193
FreeDir(xldir);
194194
}
195-
PG_END_ENSURE_ERROR_CLEANUP(cfs_control_gc_unlock, (Datum)NULL);
195+
PG_END_ENSURE_ERROR_CLEANUP(cfs_on_exit_callback, (Datum)NULL);
196196
cfs_control_gc_unlock();
197197

198198
/*

‎src/backend/storage/smgr/md.c‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ static bool md_use_compression(RelFileNodeBackend rnode, ForkNumber forknum)
220220

221221
/* Do not compress system (catalog) relations created during bootstrap */
222222
if (forknum!=MAIN_FORKNUM
223-
||rnode.node.spcNode==DEFAULTTABLESPACE_OID
223+
||rnode.node.spcNode==DEFAULTTABLESPACE_OID
224224
||rnode.node.spcNode==GLOBALTABLESPACE_OID
225225
||rnode.node.relNode<FirstNormalObjectId)
226226
return false;
@@ -249,7 +249,7 @@ static bool md_use_compression(RelFileNodeBackend rnode, ForkNumber forknum)
249249
elog(ERROR,"Failed to read compression info file %s: %m",compressionFilePath);
250250

251251
if (strcmp(algorithm,cfs_algorithm())!=0)
252-
elog(ERROR,"Tablespace was compressed using %s algorithm, but %s is currently used",
252+
elog(ERROR,"Tablespace was compressed using %s algorithm, but %s is currently used",
253253
algorithm,cfs_algorithm());
254254

255255
fclose(compressionFile);
@@ -480,11 +480,11 @@ mdunlink(RelFileNodeBackend rnode, ForkNumber forkNum, bool isRedo)
480480
else
481481
{
482482
cfs_control_gc_lock();
483-
PG_ENSURE_ERROR_CLEANUP(cfs_control_gc_unlock,BoolGetDatum(false));
483+
PG_ENSURE_ERROR_CLEANUP(cfs_on_exit_callback,BoolGetDatum(false));
484484
{
485485
do_mdunlink(rnode,forkNum,isRedo);
486486
}
487-
PG_END_ENSURE_ERROR_CLEANUP(cfs_control_gc_unlock,BoolGetDatum(false));
487+
PG_END_ENSURE_ERROR_CLEANUP(cfs_on_exit_callback,BoolGetDatum(false));
488488
cfs_control_gc_unlock();
489489
}
490490
}

‎src/backend/utils/time/snapmgr.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2162,7 +2162,7 @@ void *SuspendSnapshot(void)
21622162
{
21632163
SnapshotDatamvcc= {HeapTupleSatisfiesMVCC};
21642164
pairingheapfresh_regsnap= {&xmin_cmp,NULL,NULL};
2165-
SuspendedSnapshotState*s=malloc(sizeof(SuspendedSnapshotState));
2165+
SuspendedSnapshotState*s=(SuspendedSnapshotState*)MemoryContextAlloc(TopMemoryContext,sizeof(SuspendedSnapshotState));
21662166

21672167
MOVELEFT(s->CurrentSnapshotData,CurrentSnapshotData,mvcc);
21682168
MOVELEFT(s->SecondarySnapshotData,SecondarySnapshotData,mvcc);
@@ -2215,5 +2215,5 @@ void ResumeSnapshot(void *data)
22152215
ActiveSnapshot=s->ActiveSnapshot;
22162216
OldestActiveSnapshot=s->OldestActiveSnapshot;
22172217

2218-
free(s);
2218+
pfree(s);
22192219
}

‎src/include/storage/cfs.h‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,13 @@ void cfs_unlock_file(FileMap* map, char const* path);
130130
uint32cfs_alloc_page(FileMap*map,uint32oldSize,uint32newSize);
131131
voidcfs_extend(FileMap*map,uint32pos);
132132
voidcfs_control_gc_lock(void);
133-
voidcfs_control_gc_unlock();/* argument could be given by PG_ENSURE_ERROR_CLEANUP */
133+
voidcfs_control_gc_unlock(void);/* argument could be given by PG_ENSURE_ERROR_CLEANUP */
134134
intcfs_msync(FileMap*map);
135135
FileMap*cfs_mmap(intmd);
136136
intcfs_munmap(FileMap*map);
137137
voidcfs_initialize(void);
138138
size_tcfs_shmem_size(void);
139+
voidcfs_on_exit_callback(intcode,Datumarg);
139140

140141
voidcfs_encrypt(constchar*fname,void*block,uint32offs,uint32size);
141142
voidcfs_decrypt(constchar*fname,void*block,uint32offs,uint32size);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp