[dm-devel] Re: [PATCH] Add ALUA hardware handler

Mike Christie michaelc at cs.wisc.edu
Wed Oct 10 18:45:02 UTC 2007


Hannes Reinecke wrote:
> Hi Alasdair,
> 
> this is a patch to add a SPC-3 hardware handler. SPC-3 ALUA has
> provisioning for 'explicit' port group state change via the
> SET TARGET GROUP STATES command, and some newer storage
> arrays do benefit from this.
> Eg HP EVAs and newer EMC Clariions already support explicit ALUA.
> 
> Please apply.
> 
> Cheers,
> 
> Hannes
> 

Does this also work for adaptec or snap iscsi targets or whatever they 
are called targets?



Just some quick higher level comments

+static int submit_std_inquiry(struct alua_handler *h)
+{
+	struct request *rq;
+	unsigned err = (DRIVER_ERROR << 24);
+
+	rq = prepare_req(h, h->inq, TPGS_INQUIRY_SIZE, READ);


I do not think you want to use GFP_KERNEL allocations in this path, so 
all the prepare_req allocs should be changed. GFP_NOIO is probably best.


+	if (!rq)
+		return err;
+
+	/* Prepare the command. */
+	rq->cmd[0] = INQUIRY;
+	rq->cmd[1] = 0;
+	rq->cmd[2] = 0;
+	rq->cmd[4] = TPGS_INQUIRY_SIZE;
+	rq->cmd_len = COMMAND_SIZE(INQUIRY);
+
+	blk_execute_rq(rq->q, NULL, rq, 1);

There is only one workqueue for all the dm devices, so you do not want 
to do one command (or how many processors there are) at a time and wait 
for each one to complete with blk_execute_rq. You should use the async 
one, blk_execute_rq_nowait, like rdac.

+	err = rq->errors;
+	blk_put_request(rq);
+
+	return err;
+}




More information about the dm-devel mailing list