Commit ff526d86 authored by Long Li's avatar Long Li Committed by Steve French

CIFS: SMBD: Do not call ib_dereg_mr on invalidated memory registration

It is not necessary to deregister a memory registration after it has been
successfully invalidated.
Signed-off-by: default avatarLong Li <longli@microsoft.com>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 6d3adb23
...@@ -2295,8 +2295,12 @@ static void smbd_mr_recovery_work(struct work_struct *work) ...@@ -2295,8 +2295,12 @@ static void smbd_mr_recovery_work(struct work_struct *work)
int rc; int rc;
list_for_each_entry(smbdirect_mr, &info->mr_list, list) { list_for_each_entry(smbdirect_mr, &info->mr_list, list) {
if (smbdirect_mr->state == MR_INVALIDATED || if (smbdirect_mr->state == MR_INVALIDATED)
smbdirect_mr->state == MR_ERROR) { ib_dma_unmap_sg(
info->id->device, smbdirect_mr->sgl,
smbdirect_mr->sgl_count,
smbdirect_mr->dir);
else if (smbdirect_mr->state == MR_ERROR) {
/* recover this MR entry */ /* recover this MR entry */
rc = ib_dereg_mr(smbdirect_mr->mr); rc = ib_dereg_mr(smbdirect_mr->mr);
...@@ -2320,12 +2324,9 @@ static void smbd_mr_recovery_work(struct work_struct *work) ...@@ -2320,12 +2324,9 @@ static void smbd_mr_recovery_work(struct work_struct *work)
smbd_disconnect_rdma_connection(info); smbd_disconnect_rdma_connection(info);
continue; continue;
} }
} else
if (smbdirect_mr->state == MR_INVALIDATED) /* This MR is being used, don't recover it */
ib_dma_unmap_sg( continue;
info->id->device, smbdirect_mr->sgl,
smbdirect_mr->sgl_count,
smbdirect_mr->dir);
smbdirect_mr->state = MR_READY; smbdirect_mr->state = MR_READY;
...@@ -2339,7 +2340,6 @@ static void smbd_mr_recovery_work(struct work_struct *work) ...@@ -2339,7 +2340,6 @@ static void smbd_mr_recovery_work(struct work_struct *work)
if (atomic_inc_return(&info->mr_ready_count) == 1) if (atomic_inc_return(&info->mr_ready_count) == 1)
wake_up_interruptible(&info->wait_mr); wake_up_interruptible(&info->wait_mr);
} }
}
} }
static void destroy_mr_list(struct smbd_connection *info) static void destroy_mr_list(struct smbd_connection *info)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment