RE: [RFC] FC pass thru - Rev V

Seokmann Ju
2009-03-07T12:17:45Z

> From: James Smart [mailto:James.Smart@Emulex.Com]
> Sent: Wednesday, February 11, 2009 7:14 AM
>
> Trying to kick-start this again...
> I've updated the prior RFC with the comments from Seokmann,
> SvenFujita, and Boaz. I would still like review on the
> blk_xxx completion calls in the std and error paths.
<snip>
> +static int
> +fc_bsg_map_buffer(struct fc_bsg_buffer *buf, struct request *req)
> +{
> + size_t sz = (sizeof(struct scatterlist) * req->nr_phys_segments);
> +
> + BUG_ON(!req->nr_phys_segments);
> +
> + buf->sg_list = kzalloc(sz, GFP_KERNEL);
> + if (!buf->sg_list)
> + return -ENOMEM;
> + sg_init_table(buf->sg_list, req->nr_phys_segments);
> + buf->sg_cnt = blk_rq_map_sg(req->q, req, buf->sg_list);
> + buf->payload_len = req->data_len;
> + return 0;
> +}
It looks like that there is possibility that the dma buffer with more
than one sg element for ELS services - which is not allowed per FC spec.
I've seen a couple of times from the driver testing.
I'm looking for some ways to making sure the ELS services
to get single sg for both request/reply_payload.
Any comments/suggestion?

Thank you,
Seokmann