[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

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



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;
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]