[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