All of lore.kernel.org
 help / color / mirror / Atom feed
* RE: Re: multipathing pending issues with rhel
@ 2008-11-27 22:16 Christophe Varoqui
  0 siblings, 0 replies; 2+ messages in thread
From: Christophe Varoqui @ 2008-11-27 22:16 UTC (permalink / raw)
  To: egoggin; +Cc: dm-devel

> I think I inadvertantly made this matter worse about two years ago
> when I changed the clariion path checker to issue a scsi read via
> sg_read in libsg.c after inquiry page 0xc0 in order to discern an
> inactive from an active clariion snapshot logical unit.  This change
> to multipath-tools/libcheckers/emc_clariion.c causes a path check on
> a path to incur a reservation error if the reservation is held
> by a different I/T nexus.
> 
> A reasonable fix for this problem is to have sg_read in
> multipath-tools/libcheckers/libsg.c return PATH_UP even if the
> return value from ioctl is < 0 if the returned scsi status
> in io_hdr.status is SAM_STAT_RESERVATION_CONFLICT.
> 
I recently tried an upstream kernel with the device handlers
infrastructure, and it seems the kernel rightfully drops the io on
reservation conflicts ... with due message in the logs, and returning a
success to the devmapper. No queueing, no retry, no problem.

I'll have to do some more testing to convince myself, but in the mean
time :

1/ Do you confirm my observations ?

2/ Does the Clariion snapshot still need your suggested fix in this new
context ? If so, would you care to submit a patch ?

Thanks for the comment,
cvaroqui

^ permalink raw reply	[flat|nested] 2+ messages in thread
* multipathing pending issues with rhel
@ 2008-10-08 21:07 Christophe Varoqui
  2008-10-08 22:11 ` Benjamin Marzinski
  0 siblings, 1 reply; 2+ messages in thread
From: Christophe Varoqui @ 2008-10-08 21:07 UTC (permalink / raw)
  To: Benjamin Marzinski; +Cc: dm-devel

Ben,

I'd like to summarize all the issues I raised recently through my
employers support channel on the multipath subsystem.
And see if something can be done about it, at least in the upstream
concerned codebases.

1/ multipathd private namespace pins lvm2 logical volumes maps mounted
at daemon startup, thus making "vgchange -ay" fail, even after
umounting the visible mount. In my context, it also means I can't stop
a clustered service build on this vg to start it on another node. This
problem does not affect upstream which does not create a private
namespace.

2/ can't map a rw multipath over read-only paths. Quick workaround to
create ro multipath, but ro->rw promotion is not automatic when paths
become writable. I keep thinking we should allow rw multipath over ro
paths. The ro->rw event might also work, but what will trigger the
kernel rw status change in the first place ? To my knowledge, only a
manual scsi device rescan can force this status update ... which
accounts for a less user-friendly solution than the former.

3/ Can't use scsi-3 persistent reservations on clariion multipathed
luns : paths reserved on node A, writes submitted on node B should be
errored immediately to ensure data integrity. Instead, writes get
buffered in the "queue_if_no_path" logic, and finally corrupt the data
when reservation get cleared. In my context, reservation is the
prefered io fencing method for clusters.
The kernel knows the write io submitted on a path is refused due to a
reservation conflict, but this status is not propagated to multipath
for it to react by not queuing this io as it should.

Regards,
cvaroqui

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-11-27 22:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-27 22:16 Re: multipathing pending issues with rhel Christophe Varoqui
  -- strict thread matches above, loose matches on Subject: below --
2008-10-08 21:07 Christophe Varoqui
2008-10-08 22:11 ` Benjamin Marzinski
2008-10-08 23:06   ` Christophe Varoqui
2008-11-26 20:13     ` Edward Goggin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.