• Abhi Das's avatar
    gfs2: forcibly flush ail to relieve memory pressure · b066a4ee
    Abhi Das authored
    On systems with low memory, it is possible for gfs2 to infinitely
    loop in balance_dirty_pages() under heavy IO (creating sparse files).
    
    balance_dirty_pages() attempts to write out the dirty pages via
    gfs2_writepages() but none are found because these dirty pages are
    being used by the journaling code in the ail. Normally, the journal
    has an upper threshold which when hit triggers an automatic flush
    of the ail. But this threshold can be higher than the number of
    allowable dirty pages and result in the ail never being flushed.
    
    This patch forces an ail flush when gfs2_writepages() fails to write
    anything. This is a good indication that the ail might be holding
    some dirty pages.
    Signed-off-by: default avatarAbhi Das <adas@redhat.com>
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    b066a4ee
aops.c 32.6 KB