smb: smbdirect: introduce smbdirect_mr_io_fill_buffer_descriptor()

This will be used by the client instead of dereferencing
struct smbdirect_mr_io internals.

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>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
Stefan Metzmacher 2025-10-21 17:52:05 +02:00 committed by Steve French
parent 099db5093e
commit b183b7b9b5

View File

@ -452,6 +452,24 @@ smbdirect_connection_register_mr_io(struct smbdirect_socket *sc,
mutex_unlock(&mr->mutex);
return NULL;
}
__maybe_unused /* this is temporary while this file is included in others */
static void smbdirect_mr_io_fill_buffer_descriptor(struct smbdirect_mr_io *mr,
struct smbdirect_buffer_descriptor_v1 *v1)
{
mutex_lock(&mr->mutex);
if (mr->state == SMBDIRECT_MR_REGISTERED) {
v1->offset = cpu_to_le64(mr->mr->iova);
v1->token = cpu_to_le32(mr->mr->rkey);
v1->length = cpu_to_le32(mr->mr->length);
} else {
v1->offset = cpu_to_le64(U64_MAX);
v1->token = cpu_to_le32(U32_MAX);
v1->length = cpu_to_le32(U32_MAX);
}
mutex_unlock(&mr->mutex);
}
/*
* Deregister a MR after I/O is done
* This function may wait if remote invalidation is not used