• Bob Peterson's avatar
    GFS2: Limit number of transaction blocks requested for truncates · 2fcf5cc3
    Bob Peterson authored
    This patch limits the number of transaction blocks requested during
    file truncates. If we have very large multi-terabyte files, and want
    to delete or truncate them, they might span so many resource groups
    that we overflow the journal blocks, and cause an assert failure.
    By limiting the number of blocks in the transaction, we prevent this
    overflow and give other running processes time to do transactions.
    
    The limiting factor I chose is sd_log_thresh2 which is currently
    set to 4/5ths of the journal. This same ratio is used in function
    gfs2_ail_flush_reqd to determine when a log flush is required.
    If we make the maximum value less than this, we can get into a
    infinite hang whereby the log stops moving because the number of
    used blocks is less than the threshold and the iterative loop
    needs more, but since we're under the threshold, the log daemon
    never starts any IO on the log.
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    2fcf5cc3
bmap.c 37.4 KB