• Show log

    Commit

  • Hash : aa57231f
    Author : Carlos Martín Nieto
    Date : 2015-06-02T10:25:22

    indexer: use lseek to extend the packfile
    
    We've been using `p_ftruncate()` to extend the packfile in order to mmap
    it and write the new data into it. This works well in the general case,
    but as truncation does not allocate space in the filesystem, it must do
    so when we write data to it.
    
    The only way the OS has to indicate a failure to allocate space is via
    SIGBUS which means we tried to write outside the file. This will cause
    everyone to crash as they don't expect to handle this signal.
    
    Switch to using `p_lseek()` and `p_write()` to extend the file in a way
    which tells the filesystem to allocate the space for the missing
    data. We can then be sure that we have space to write into.