Skip to content
Snippets Groups Projects
  • Vladimir Davydov's avatar
    76110901
    wal: preallocate disk space before writing rows · 76110901
    Vladimir Davydov authored
    This function introduces a new xlog method xlog_fallocate() that makes
    sure that the requested amount of disk space is available at the current
    write position. It does that with posix_fallocate(). The new method is
    called before writing anything to WAL, see wal_fallocate(). In order not
    to invoke the system call too often, wal_fallocate() allocates disk
    space in big chunks (1 MB).
    
    The reason why I'm doing this is that I want to have a single and
    clearly defined point in the code to handle ENOSPC errors, where
    I could delete old WALs and retry (this is what #3397 is about).
    
    Needed for #3397
    76110901
    History
    wal: preallocate disk space before writing rows
    Vladimir Davydov authored
    This function introduces a new xlog method xlog_fallocate() that makes
    sure that the requested amount of disk space is available at the current
    write position. It does that with posix_fallocate(). The new method is
    called before writing anything to WAL, see wal_fallocate(). In order not
    to invoke the system call too often, wal_fallocate() allocates disk
    space in big chunks (1 MB).
    
    The reason why I'm doing this is that I want to have a single and
    clearly defined point in the code to handle ENOSPC errors, where
    I could delete old WALs and retry (this is what #3397 is about).
    
    Needed for #3397