Pre-allocate block and undo files in chunks

Introduce a AllocateFileRange() function in util, which wipes or
at least allocates a given range of a file. It can be overriden
by more efficient OS-dependent versions if necessary.

Block and undo files are now allocated in chunks of 16 and 1 MiB,
respectively.
This commit is contained in:
Pieter Wuille
2012-08-16 02:21:28 +02:00
parent 5382bcf8cd
commit bba89aa82a
4 changed files with 49 additions and 9 deletions

View File

@@ -1137,6 +1137,20 @@ int GetFilesize(FILE* file)
return nFilesize;
}
// this function tries to make a particular range of a file allocated (corresponding to disk space)
// it is advisory, and the range specified in the arguments will never contain live data
void AllocateFileRange(FILE *file, unsigned int offset, unsigned int length) {
static const char buf[65536] = {};
fseek(file, offset, SEEK_SET);
while (length > 0) {
unsigned int now = 65536;
if (length < now)
now = length;
fwrite(buf, 1, now, file); // allowed to fail; this function is advisory anyway
length -= now;
}
}
void ShrinkDebugFile()
{
// Scroll debug.log if it's getting too big