mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-18 22:35:39 +01:00
Merge pull request #2229 from sipa/prealloc
Native versions for AllocateFileRange()
This commit is contained in:
@@ -1533,7 +1533,7 @@ bool CBlock::DisconnectBlock(CValidationState &state, CBlockIndex *pindex, CCoin
|
||||
}
|
||||
}
|
||||
|
||||
void static FlushBlockFile()
|
||||
void static FlushBlockFile(bool fFinalize = false)
|
||||
{
|
||||
LOCK(cs_LastBlockFile);
|
||||
|
||||
@@ -1541,12 +1541,16 @@ void static FlushBlockFile()
|
||||
|
||||
FILE *fileOld = OpenBlockFile(posOld);
|
||||
if (fileOld) {
|
||||
if (fFinalize)
|
||||
TruncateFile(fileOld, infoLastBlockFile.nSize);
|
||||
FileCommit(fileOld);
|
||||
fclose(fileOld);
|
||||
}
|
||||
|
||||
fileOld = OpenUndoFile(posOld);
|
||||
if (fileOld) {
|
||||
if (fFinalize)
|
||||
TruncateFile(fileOld, infoLastBlockFile.nUndoSize);
|
||||
FileCommit(fileOld);
|
||||
fclose(fileOld);
|
||||
}
|
||||
@@ -1965,7 +1969,7 @@ bool FindBlockPos(CValidationState &state, CDiskBlockPos &pos, unsigned int nAdd
|
||||
} else {
|
||||
while (infoLastBlockFile.nSize + nAddSize >= MAX_BLOCKFILE_SIZE) {
|
||||
printf("Leaving block file %i: %s\n", nLastBlockFile, infoLastBlockFile.ToString().c_str());
|
||||
FlushBlockFile();
|
||||
FlushBlockFile(true);
|
||||
nLastBlockFile++;
|
||||
infoLastBlockFile.SetNull();
|
||||
pblocktree->ReadBlockFileInfo(nLastBlockFile, infoLastBlockFile); // check whether data for the new file somehow already exist; can fail just fine
|
||||
|
||||
Reference in New Issue
Block a user