@@ -768,15 +768,6 @@ typedef enum {
768
768
CFS_IMPLICIT
769
769
} GC_CALL_KIND ;
770
770
771
- /* spend 1% for more inplace updates on second pass */
772
- static inline uint32
773
- cfs_room_gc_chunk (uint32 size )
774
- {
775
- if (size < CFS_MIN_COMPRESSED_SIZE (BLCKSZ ))
776
- size += size /128 ;
777
- return size ;
778
- }
779
-
780
771
/*
781
772
* Perform garbage collection (if required) on the file
782
773
* @param map_path - path to the map file (*.cfm).
@@ -882,8 +873,6 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
882
873
uint32 second_pass = 0 ;
883
874
inode_t * * inodes = (inode_t * * )palloc (RELSEG_SIZE * sizeof (inode_t * ));
884
875
bool remove_backups = true;
885
- uint32 inplace = 0 ;
886
- bool prev_seek = false;
887
876
int n_pages ;
888
877
TimestampTz startTime , secondTime , endTime ;
889
878
long secs , secs2 ;
@@ -955,10 +944,8 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
955
944
cfs_state -> gc_stat .processedFiles += 1 ;
956
945
cfs_gc_processed_segments += 1 ;
957
946
958
- newUsed = 0 ;
959
947
for (i = 0 ; i < n_pages ; i ++ )
960
948
{
961
- int room ;
962
949
size = CFS_INODE_SIZE (* inodes [i ]);
963
950
if (size != 0 )
964
951
{
@@ -974,8 +961,7 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
974
961
goto Cleanup ;
975
962
}
976
963
977
- room = cfs_room_gc_chunk (size );
978
- if (!cfs_write_file (fd2 , block , room ))
964
+ if (!cfs_write_file (fd2 , block , size ))
979
965
{
980
966
elog (WARNING , "CFS failed to write file %s: %m" , file_bck_path );
981
967
goto Cleanup ;
@@ -984,8 +970,7 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
984
970
cfs_state -> gc_stat .processedPages += 1 ;
985
971
986
972
offs = newSize ;
987
- newUsed += size ;
988
- newSize += room ;
973
+ newSize += size ;
989
974
* inodes [i ] = CFS_INODE (size , offs );
990
975
991
976
/* xfs doesn't like if writeback performed closer than 128k to
@@ -1002,6 +987,7 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
1002
987
* inodes [i ] = CFS_INODE (0 , 0 );
1003
988
}
1004
989
}
990
+ newUsed = newSize ;
1005
991
1006
992
/* Persist bigger part of copy to not do it under lock */
1007
993
/* and persist previous file, cause it will be fsynced in durable rename */
@@ -1041,12 +1027,11 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
1041
1027
map -> inodes [i ] &= ~CFS_INODE_CLEAN_FLAG ;
1042
1028
continue ;
1043
1029
}
1044
- second_pass ++ ;
1045
1030
newUsed -= CFS_INODE_SIZE (nnode );
1046
1031
newUsed += size ;
1047
1032
if (size != 0 )
1048
1033
{
1049
- int room ;
1034
+ second_pass ++ ;
1050
1035
offs = CFS_INODE_OFFS (onode );
1051
1036
1052
1037
rc = lseek (fd , offs , SEEK_SET );
@@ -1060,29 +1045,8 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
1060
1045
}
1061
1046
1062
1047
/* copy it without sorting */
1063
- room = cfs_room_gc_chunk (CFS_INODE_SIZE (nnode ));
1064
- if (size <= room )
1065
- {
1066
- /* certainly need for uncompressable blocks.
1067
- * could be useful for other too */
1068
- prev_seek = true;
1069
- offs = CFS_INODE_OFFS (nnode );
1070
- rc = lseek (fd2 , offs , SEEK_SET );
1071
- Assert (rc == (off_t )offs );
1072
- inplace ++ ;
1073
- }
1074
- else
1075
- {
1076
- if (prev_seek )
1077
- {
1078
- prev_seek = false;
1079
- rc = lseek (fd2 , 0 , SEEK_END );
1080
- Assert (rc > 0 );
1081
- Assert (rc == newSize );
1082
- }
1083
- offs = newSize ;
1084
- newSize += size ;
1085
- }
1048
+ offs = newSize ;
1049
+ newSize += size ;
1086
1050
if (!cfs_write_file (fd2 , block , size ))
1087
1051
{
1088
1052
elog (WARNING , "CFS failed to write file %s: %m" , file_bck_path );
@@ -1092,7 +1056,6 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
1092
1056
}
1093
1057
else
1094
1058
{
1095
- newUsed -= CFS_INODE_SIZE (newMap -> inodes [i ]);
1096
1059
newMap -> inodes [i ] = CFS_INODE (0 , 0 );
1097
1060
}
1098
1061
cfs_state -> gc_stat .processedBytes += size ;
@@ -1268,10 +1231,10 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
1268
1231
1269
1232
if (succeed )
1270
1233
{
1271
- elog (LOG , "CFS GC worker %d: defragment file %s: old size %u, new size %u, logical size %u, used %u, compression ratio %f, time %ld usec; second pass: pages %u, inplace %u, time %ld"
1234
+ elog (LOG , "CFS GC worker %d: defragment file %s: old size %u, new size %u, logical size %u, used %u, compression ratio %f, time %ld usec; second pass: pages %u, time %ld"
1272
1235
,
1273
1236
MyProcPid , file_path , physSize , newSize , virtSize , usedSize , (double )virtSize /newSize ,
1274
- secs * USECS_PER_SEC + usecs , second_pass , inplace ,
1237
+ secs * USECS_PER_SEC + usecs , second_pass ,
1275
1238
secs2 * USECS_PER_SEC + usecs2 );
1276
1239
}
1277
1240
0 commit comments