[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[dm-devel] Re: [PATCH] Add ALUA hardware handler
- From: Mike Christie <michaelc cs wisc edu>
- To: Hannes Reinecke <hare suse de>
- Cc: device-mapper development <dm-devel redhat com>, christophe varoqui <christophe varoqui free fr>, SCSI Mailing List <linux-scsi vger kernel org>, Alasdair G Kergon <agk redhat com>
- Subject: [dm-devel] Re: [PATCH] Add ALUA hardware handler
- Date: Wed, 10 Oct 2007 13:45:02 -0500
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]