From: Stefan Metzmacher Date: Tue, 21 Oct 2025 15:52:05 +0000 (+0200) Subject: smb: smbdirect: introduce smbdirect_mr_io_fill_buffer_descriptor() X-Git-Tag: v7.1-rc1~128^2~102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b183b7b9b51fc37cc8e1fbad3c0d84e0cb605266;p=thirdparty%2Fkernel%2Flinux.git 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 Cc: Tom Talpey Cc: Long Li Cc: Namjae Jeon Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Signed-off-by: Stefan Metzmacher Acked-by: Namjae Jeon Signed-off-by: Steve French --- diff --git a/fs/smb/common/smbdirect/smbdirect_mr.c b/fs/smb/common/smbdirect/smbdirect_mr.c index 249719c916a85..d5bf8531e2373 100644 --- a/fs/smb/common/smbdirect/smbdirect_mr.c +++ b/fs/smb/common/smbdirect/smbdirect_mr.c @@ -452,6 +452,24 @@ dma_map_error: 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