Subject: Re: linux-next: build failure after merge of the block tree

From: Stephen Rothwell <[email-masked]>
Date: Wed, 15 Aug 2018 11:43:03 +1000

Hi all,

On Thu, 26 Jul 2018 14:56:24 +1000 Stephen Rothwell <[email-masked]> wrote:
>
> After merging the block tree, today's linux-next build (x86_64
> allmodconfig) failed like this:
> 
> drivers/nvme/target/rdma.c: In function 'nvmet_rdma_find_get_device':
> drivers/nvme/target/rdma.c:894:26: error: 'struct ib_device_attr' has no member named 'max_sge'; did you mean 'max_cqe'?
>      cm_id->device->attrs.max_sge) - 1;
>                           ^
> drivers/nvme/target/rdma.c:893:21: note: in expansion of macro 'max'
>   inline_sge_count = max(cm_id->device->attrs.max_sge_rd,
>                      ^~~
> In file included from include/linux/list.h:9:0,
>                  from include/linux/module.h:9,
>                  from drivers/nvme/host/rdma.c:15:
> drivers/nvme/host/rdma.c: In function 'nvme_rdma_find_get_device':
> drivers/nvme/host/rdma.c:381:23: error: 'struct ib_device_attr' has no member named 'max_sge'; did you mean 'max_cqe'?
>       ndev->dev->attrs.max_sge - 1);
>                        ^
> drivers/nvme/host/rdma.c:380:30: note: in expansion of macro 'min'
>   ndev->num_inline_segments = min(NVME_RDMA_MAX_INLINE_SEGMENTS,
>                               ^~~
> 
> Caused by commits
> 
>   64a741c1eaa8 ("nvme-rdma: support up to 4 segments of inline data")
>   0d5ee2b2ab4f ("nvmet-rdma: support max(16KB, PAGE_SIZE) inline data")
> 
> interacting with commit
> 
>   33023fb85a42 ("IB/core: add max_send_sge and max_recv_sge attributes")
> 
> from the rdma tree.
> 
> I have applied the following merge fix patch for today:
> 
> From: Stephen Rothwell <[email-masked]>
> Date: Thu, 26 Jul 2018 14:32:15 +1000
> Subject: [PATCH] nvme-dma: merge fix up for replacement of max_sge
> 
> Signed-off-by: Stephen Rothwell <[email-masked]>
> ---
>  drivers/nvme/host/rdma.c   | 2 +-
>  drivers/nvme/target/rdma.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
> index cfa0319fcd1c..368fe5ac0c6b 100644
> --- a/drivers/nvme/host/rdma.c
> +++ b/drivers/nvme/host/rdma.c
> @@ -378,7 +378,7 @@ nvme_rdma_find_get_device(struct rdma_cm_id *cm_id)
>  	}
>  
>  	ndev->num_inline_segments = min(NVME_RDMA_MAX_INLINE_SEGMENTS,
> -					ndev->dev->attrs.max_sge - 1);
> +					ndev->dev->attrs.max_send_sge - 1);
>  	list_add(&ndev->entry, &device_list);
>  out_unlock:
>  	mutex_unlock(&device_list_mutex);
> diff --git a/drivers/nvme/target/rdma.c b/drivers/nvme/target/rdma.c
> index 86121a7a19b2..8c30ac7d8078 100644
> --- a/drivers/nvme/target/rdma.c
> +++ b/drivers/nvme/target/rdma.c
> @@ -891,7 +891,7 @@ nvmet_rdma_find_get_device(struct rdma_cm_id *cm_id)
>  
>  	inline_page_count = num_pages(port->inline_data_size);
>  	inline_sge_count = max(cm_id->device->attrs.max_sge_rd,
> -				cm_id->device->attrs.max_sge) - 1;
> +				cm_id->device->attrs.max_send_sge) - 1;
>  	if (inline_page_count > inline_sge_count) {
>  		pr_warn("inline_data_size %d cannot be supported by device %s. Reducing to %lu.\n",
>  			port->inline_data_size, cm_id->device->name,
> -- 
> 2.18.0

This is now needed (with the max_send_sge -> max_recv_sge update in
drivers/nvme/target/rdma.c patch) when I merge the rdma tree with
Linus' tree.

-- 
Cheers,
Stephen Rothwell