Skip to content

Commit 56c817e

Browse files
metze-sambasmfrench
authored andcommitted
smb: client: improve logic in smbd_deregister_mr()
- use 'mr' as variable name - style fixes This will make further changes easier. Cc: Steve French <smfrench@gmail.com> Cc: Tom Talpey <tom@talpey.com> Cc: Long Li <longli@microsoft.com> Cc: Namjae Jeon <linkinjeon@kernel.org> Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Signed-off-by: Stefan Metzmacher <metze@samba.org> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent c847850 commit 56c817e

1 file changed

Lines changed: 16 additions & 19 deletions

File tree

fs/smb/client/smbdirect.c

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2619,44 +2619,41 @@ static void local_inv_done(struct ib_cq *cq, struct ib_wc *wc)
26192619
* and we have to locally invalidate the buffer to prevent data is being
26202620
* modified by remote peer after upper layer consumes it
26212621
*/
2622-
void smbd_deregister_mr(struct smbdirect_mr_io *smbdirect_mr)
2622+
void smbd_deregister_mr(struct smbdirect_mr_io *mr)
26232623
{
2624-
struct ib_send_wr *wr;
2625-
struct smbdirect_socket *sc = smbdirect_mr->socket;
2626-
int rc = 0;
2624+
struct smbdirect_socket *sc = mr->socket;
2625+
2626+
if (mr->need_invalidate) {
2627+
struct ib_send_wr *wr = &mr->inv_wr;
2628+
int rc;
26272629

2628-
if (smbdirect_mr->need_invalidate) {
26292630
/* Need to finish local invalidation before returning */
2630-
wr = &smbdirect_mr->inv_wr;
26312631
wr->opcode = IB_WR_LOCAL_INV;
2632-
smbdirect_mr->cqe.done = local_inv_done;
2633-
wr->wr_cqe = &smbdirect_mr->cqe;
2632+
mr->cqe.done = local_inv_done;
2633+
wr->wr_cqe = &mr->cqe;
26342634
wr->num_sge = 0;
2635-
wr->ex.invalidate_rkey = smbdirect_mr->mr->rkey;
2635+
wr->ex.invalidate_rkey = mr->mr->rkey;
26362636
wr->send_flags = IB_SEND_SIGNALED;
26372637

2638-
init_completion(&smbdirect_mr->invalidate_done);
2638+
init_completion(&mr->invalidate_done);
26392639
rc = ib_post_send(sc->ib.qp, wr, NULL);
26402640
if (rc) {
26412641
log_rdma_mr(ERR, "ib_post_send failed rc=%x\n", rc);
26422642
smbd_disconnect_rdma_connection(sc);
26432643
goto done;
26442644
}
2645-
wait_for_completion(&smbdirect_mr->invalidate_done);
2646-
smbdirect_mr->need_invalidate = false;
2645+
wait_for_completion(&mr->invalidate_done);
2646+
mr->need_invalidate = false;
26472647
} else
26482648
/*
26492649
* For remote invalidation, just set it to SMBDIRECT_MR_INVALIDATED
26502650
* and defer to mr_recovery_work to recover the MR for next use
26512651
*/
2652-
smbdirect_mr->state = SMBDIRECT_MR_INVALIDATED;
2652+
mr->state = SMBDIRECT_MR_INVALIDATED;
26532653

2654-
if (smbdirect_mr->state == SMBDIRECT_MR_INVALIDATED) {
2655-
ib_dma_unmap_sg(
2656-
sc->ib.dev, smbdirect_mr->sgt.sgl,
2657-
smbdirect_mr->sgt.nents,
2658-
smbdirect_mr->dir);
2659-
smbdirect_mr->state = SMBDIRECT_MR_READY;
2654+
if (mr->state == SMBDIRECT_MR_INVALIDATED) {
2655+
ib_dma_unmap_sg(sc->ib.dev, mr->sgt.sgl, mr->sgt.nents, mr->dir);
2656+
mr->state = SMBDIRECT_MR_READY;
26602657
if (atomic_inc_return(&sc->mr_io.ready.count) == 1)
26612658
wake_up(&sc->mr_io.ready.wait_queue);
26622659
} else

0 commit comments

Comments
 (0)