On Tue, Nov 17, 2015 at 11:41:39AM +0200, Sagi Grimberg wrote: > > >On 11/16/2015 6:37 PM, Sagi Grimberg wrote: > >>+++ b/drivers/infiniband/ulp/iser/iser_memory.c > >>@@ -250,7 +250,7 @@ iser_reg_dma(struct iser_device *device, struct > >>iser_data_buf *mem, > >> struct scatterlist *sg = mem->sg; > >> reg->sge.lkey = device->pd->local_dma_lkey; > >>- reg->rkey = device->mr->rkey; > >>+ reg->rkey = device->mr ? device->mr->rkey : 0; > >> reg->sge.addr = ib_sg_dma_address(device->ib_device, &sg[0]); > >> reg->sge.length = ib_sg_dma_len(device->ib_device, &sg[0]); > > > >what's the role of this hunk? why it belongs here? you are testing > >device->mr but this is > >something global and has nothing to do specially with specific IOs for > >which this patch > >aims to act > > It's because device->mr might not be allocated at all if > always_register=Y, however in this case for all-immediatedata writes > I don't need memory registration and I can use pd->local_dma_lkey. I'm with Or on this, this is really goofy looking. This routine probably should not be setting the rkey at all, it makes no sense to have a routine that returns a lkey and a rkey. Those are always different flows. Once that is fixed then the above if can be hoisted to the actual calling code that needs an rkey, at the point where it does something different when !iser_always_reg is true.. Jason -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html