• Olaf Kirch's avatar
    IB/fmr_pool: ib_fmr_pool_flush() should flush all dirty FMRs · a3cd7d90
    Olaf Kirch authored
    When a FMR is released via ib_fmr_pool_unmap(), the FMR usually ends
    up on the free_list rather than the dirty_list (because we allow a
    certain number of remappings before actually requiring a flush).
    
    However, ib_fmr_batch_release() only looks at dirty_list when flushing
    out old mappings.  This means that when ib_fmr_pool_flush() is used to
    force a flush of the FMR pool, some dirty FMRs that have not reached
    their maximum remap count will not actually be flushed.
    
    Fix this by flushing all FMRs that have been used at least once in
    ib_fmr_batch_release().
    Signed-off-by: default avatarOlaf Kirch <olaf.kirch@oracle.com>
    Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
    a3cd7d90
fmr_pool.c 14.1 KB