[dm-devel] Question about EMC Clariion trespass in multipath
McGreal, Martin (EHQ)
MMcGreal at express-scripts.com
Thu Oct 22 20:07:24 UTC 2009
I've been told that dm multipath does not support trespassing LUNs on
Clariion, but after looking through the hardware handler for EMC
Clariion devices, I believe it does. However, I'm confused about how it
determines when to issue the trespass command.
Since we are using RHEL 5.3, I am looking at the 2.6.18.8 version of the
hardware handler, dm-emc.c
(http://lxr.linux.no/#linux+v2.6.18.8/drivers/md/dm-emc.c).
Looking at emc_pg_init(), which, according to the documentation, is
called "when a Priority Group is selected for use, but before any I/O is
sent to it" (http://lwn.net/Articles/123134), it looks like the only way
out of this function is by either failing the path via
dm_pg_init_complete(), or issuing a switch-over command. So either a
path is failed or a trespass occurs every time that a priority group is
selected? What am I missing here?
Any guidance would be appreciated.
Thanks!
Martin
192static void emc_pg_init(struct hw_handler *hwh, unsigned bypassed,
193 struct path *path)
194{
195 struct request *rq;
196 struct request_queue *q = bdev_get_queue(path->dev->bdev);
197
198 /*
199 * We can either blindly init the pg (then look at the
sense),
200 * or we can send some commands to get the state here (then
201 * possibly send the fo cmnd), or we can also have the
202 * initial state passed into us and then get an update here.
203 */
204 if (!q) {
205 DMINFO("emc_pg_init: no queue");
206 goto fail_path;
207 }
208
209 /* FIXME: The request should be pre-allocated. */
210 rq = emc_trespass_get(hwh->context, path);
211 if (!rq) {
212 DMERR("emc_pg_init: no rq");
213 goto fail_path;
214 }
215
216 DMINFO("emc_pg_init: sending switch-over command");
217 elv_add_request(q, rq, ELEVATOR_INSERT_FRONT, 1);
218 return;
219
220fail_path:
221 dm_pg_init_complete(path, MP_FAIL_PATH);
222}
More information about the dm-devel
mailing list