In the rdma-next tree to be merged for 4.9-rc1 removes the IB core function ib_get_dma_mr. This patch migrates us way from this former function. Signed-off-by: James Simmons <jsimmons@xxxxxxxxxxxxx> --- .../staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c | 19 ++++++++++++------- .../staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h | 5 +++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c index c7a5d49..4010591 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c @@ -1316,7 +1316,7 @@ static void kiblnd_destroy_fmr_pool(struct kib_fmr_pool *fpo) list_for_each_entry_safe(frd, tmp, &fpo->fast_reg.fpo_pool_list, frd_list) { list_del(&frd->frd_list); - ib_dereg_mr(frd->frd_mr); + kib_dereg_mr(fpo->fpo_hdev, frd->frd_mr); LIBCFS_FREE(frd, sizeof(*frd)); i++; } @@ -1422,14 +1422,14 @@ static int kiblnd_alloc_freg_pool(struct kib_fmr_poolset *fps, struct kib_fmr_po out_middle: if (frd->frd_mr) - ib_dereg_mr(frd->frd_mr); + kib_dereg_mr(fpo->fpo_hdev, frd->frd_mr); LIBCFS_FREE(frd, sizeof(*frd)); out: list_for_each_entry_safe(frd, tmp, &fpo->fast_reg.fpo_pool_list, frd_list) { list_del(&frd->frd_list); - ib_dereg_mr(frd->frd_mr); + kib_dereg_mr(fpo->fpo_hdev, frd->frd_mr); LIBCFS_FREE(frd, sizeof(*frd)); } @@ -2288,8 +2288,8 @@ static void kiblnd_hdev_cleanup_mrs(struct kib_hca_dev *hdev) if (!hdev->ibh_mrs) return; - ib_dereg_mr(hdev->ibh_mrs); - + kib_dereg_mr(hdev, hdev->ibh_mrs); + hdev->ibh_pd->device->dereg_mr(hdev->ibh_mrs); hdev->ibh_mrs = NULL; } @@ -2316,13 +2316,18 @@ static int kiblnd_hdev_setup_mrs(struct kib_hca_dev *hdev) if (rc) return rc; - mr = ib_get_dma_mr(hdev->ibh_pd, acflags); + mr = hdev->ibh_pd->device->get_dma_mr(hdev->ibh_pd, acflags); if (IS_ERR(mr)) { - CERROR("Failed ib_get_dma_mr : %ld\n", PTR_ERR(mr)); + CERROR("Failed device get_dma_mr : %ld\n", PTR_ERR(mr)); kiblnd_hdev_cleanup_mrs(hdev); return PTR_ERR(mr); } + mr->device = hdev->ibh_pd->device; + mr->pd = hdev->ibh_pd; + mr->uobject = NULL; + mr->need_inval = false; + hdev->ibh_mrs = mr; return 0; diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h index 1457697..f8b49c5 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h @@ -178,6 +178,11 @@ struct kib_hca_dev { atomic_t ibh_ref; /* refcount */ }; +static inline void kib_dereg_mr(struct kib_hca_dev *hdev, struct ib_mr *mr) +{ + hdev->ibh_pd->device->dereg_mr(mr); +} + /** # of seconds to keep pool alive */ #define IBLND_POOL_DEADLINE 300 /** # of seconds to retry if allocation failed */ -- 1.7.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel