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

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
Loading
Loading
Loading
Loading
+19 −19
Original line number Diff line number Diff line
@@ -2295,8 +2295,12 @@ static void smbd_mr_recovery_work(struct work_struct *work)
	int rc;

	list_for_each_entry(smbdirect_mr, &info->mr_list, list) {
		if (smbdirect_mr->state == MR_INVALIDATED ||
			smbdirect_mr->state == MR_ERROR) {
		if (smbdirect_mr->state == MR_INVALIDATED)
			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 */
			rc = ib_dereg_mr(smbdirect_mr->mr);
@@ -2320,12 +2324,9 @@ static void smbd_mr_recovery_work(struct work_struct *work)
				smbd_disconnect_rdma_connection(info);
				continue;
			}

			if (smbdirect_mr->state == MR_INVALIDATED)
				ib_dma_unmap_sg(
					info->id->device, smbdirect_mr->sgl,
					smbdirect_mr->sgl_count,
					smbdirect_mr->dir);
		} else
			/* This MR is being used, don't recover it */
			continue;

		smbdirect_mr->state = MR_READY;

@@ -2340,7 +2341,6 @@ static void smbd_mr_recovery_work(struct work_struct *work)
			wake_up_interruptible(&info->wait_mr);
	}
}
}

static void destroy_mr_list(struct smbd_connection *info)
{