Skip to content
  • Gerd Rausch's avatar
    Revert "RDS: IB: split the mr registration and invalidation path" · a5520788
    Gerd Rausch authored
    This reverts commit 56012459.
    
    RDS kept spinning inside function "rds_ib_post_reg_frmr", waiting for
    "i_fastreg_wrs" to become incremented:
             while (atomic_dec_return(&ibmr->ic->i_fastreg_wrs) <= 0) {
                     atomic_inc(&ibmr->ic->i_fastreg_wrs);
                     cpu_relax();
             }
    
    Looking at the original commit:
    
    commit 56012459
    
     ("RDS: IB: split the mr registration and
    invalidation path")
    
    In there, the "rds_ib_mr_cqe_handler" was changed in the following
    way:
    
     void rds_ib_mr_cqe_handler(struct
     rds_ib_connection *ic,
     struct ib_wc *wc)
            if (frmr->fr_inv) {
                      frmr->fr_state = FRMR_IS_FREE;
                      frmr->fr_inv = false;
                    atomic_inc(&ic->i_fastreg_wrs);
            } else {
                    atomic_inc(&ic->i_fastunreg_wrs);
            }
    
    It looks like it's got it exactly backwards:
    
    Function "rds_ib_post_reg_frmr" keeps track of the outstanding
    requests via "i_fastreg_wrs".
    
    Function "rds_ib_post_inv" keeps track of the outstanding requests
    via "i_fastunreg_wrs" (post original commit). It also sets:
             frmr->fr_inv = true;
    
    However the completion handler "rds_ib_mr_cqe_handler" adjusts
    "i_fastreg_wrs" when "fr_inv" had been true, and adjusts
    "i_fastunreg_wrs" otherwise.
    
    The original commit was done in the name of performance:
    to remove the performance bottleneck
    
    No performance benefit could be observed with a fixed-up version
    of the original commit measured between two Oracle X7 servers,
    both equipped with Mellanox Connect-X5 HCAs.
    
    The prudent course of action is to revert this commit.
    
    Signed-off-by: default avatarGerd Rausch <gerd.rausch@oracle.com>
    Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
    a5520788