14 years ago[libmultipath] new devmapper log handler needs stdarg.h
Christophe Varoqui [Mon, 21 May 2007 22:24:22 +0000 (00:24 +0200)]
[libmultipath] new devmapper log handler needs stdarg.h

As it uses the va_list type.

Signed-off-by: Christophe Varoqui <>
14 years ago[libmultipath] Fix pp_alua install target
Hannes Reinecke [Mon, 21 May 2007 08:06:42 +0000 (10:06 +0200)]
[libmultipath] Fix pp_alua install target

The install target in the pp_alua Makefile should reference the
program, not the build target. Otherwise the program gets recompiled
on each install.

Signed-off-by: Hannes Reinecke <>
14 years ago[multipath] Add multipath.conf.5 manpage
Hannes Reinecke [Wed, 16 May 2007 11:51:43 +0000 (13:51 +0200)]
[multipath] Add multipath.conf.5 manpage

We finally have a manpage for multipath.conf.

Signed-off-by: Hannes Reinecke <>
14 years ago[hwtable] Update entries for HP arrays
Hannes Reinecke [Wed, 16 May 2007 10:51:16 +0000 (12:51 +0200)]
[hwtable] Update entries for HP arrays

I finally figured out the different versions of HP storage
arrays. Thanks to Stephen Reilly of HP for this.

Signed-off-by: Hannes Reinecke <>
14 years ago[libmultipath] Add new priority checker mpath_hp_sw
Hannes Reinecke [Wed, 16 May 2007 10:45:12 +0000 (12:45 +0200)]
[libmultipath] Add new priority checker mpath_hp_sw

All paths from a controller with HP Active/Standby firmware
should really be grouped according to their status; otherwise
the path switching will not work properly or you can use only
one path to that array.
This patch adds a new priority checker 'mpath_hp_sw' which
will allow these paths to be grouped accordingly.

Signed-off-by: Hannes Reinecke <>
14 years ago[hwtable] Update SGI entries
Hannes Reinecke [Wed, 16 May 2007 10:41:02 +0000 (12:41 +0200)]
[hwtable] Update SGI entries

Add new entry for SGI Infinite Storage machines; and we should also
use the 'RDAC' path checker for SGI storage.

Signed-off-by: Hannes Reinecke <>
14 years ago[libmultipath] Fix typo on blacklist_exceptions handler
Hannes Reinecke [Wed, 16 May 2007 10:38:24 +0000 (12:38 +0200)]
[libmultipath] Fix typo on blacklist_exceptions handler

blacklist_exceptions_handler() has a typo which prevents the handler
from working.

Signed-off-by: Hannes Reinecke <>
14 years ago[hwtable] Update S/390 DASD entry
Hannes Reinecke [Wed, 16 May 2007 10:37:11 +0000 (12:37 +0200)]
[hwtable] Update S/390 DASD entry

Current s390-tools contain a program 'dasdinfo', which should be used
instead of the older 'dasd_id' program from udev.
And we should be using 'queue_if_no_path', too.

Signed-off-by: Stefan Bader <>
Signed-off-by: Hannes Reinecke <>
14 years ago[multipathd] Fix handling of device-mapper devices
Hannes Reinecke [Mon, 30 Apr 2007 07:26:28 +0000 (09:26 +0200)]
[multipathd] Fix handling of device-mapper devices

Device-mapper devices are available only after a 'change' event,
so it's quite pointless to check for the 'add' event.

Signed-off-by: Hannes Reinecke <>
14 years ago[libmultipath] Fix debugging output
Hannes Reinecke [Mon, 30 Apr 2007 07:23:46 +0000 (09:23 +0200)]
[libmultipath] Fix debugging output

Implement a proper output function for libdevmapper which ties
into our verbosity level. This allows us for a finer grained
control about the error messages from libdevmapper and we get
better debugging output to boot.

Signed-off-by: Stefan Bader <>
Signed-off-by: Hannes Reinecke <>
14 years ago[kpartx] Use mapname for device-mapper devices
Hannes Reinecke [Wed, 16 May 2007 07:35:35 +0000 (09:35 +0200)]
[kpartx] Use mapname for device-mapper devices

When kpartx is run on a device-mapper device it makes more sense
to use the mapname for generating the device name, not the supplied
commandline arguments. This way we can run kpartx on '/dev/dm-X'
and still get sensible names.

Signed-off-by: Hannes Reinecke <>
14 years ago[libmultipath] Fix overflow in circular queue
Hannes Reinecke [Wed, 16 May 2007 07:31:47 +0000 (09:31 +0200)]
[libmultipath] Fix overflow in circular queue

Multipathd has a circular buffer where messages are stored prior to being
passed into the system logs. Under certain circumstances the circular buffer
fills up; and the intention appears to be that new messages are dropped until
space is freed in the buffer.

However sometimes the result of a full circular buffer is to overwrite the
earlier messages before they have been passed to the system buffer; resulting
in the loss of early messages and corruption of later messages.

Signed-off-by: Hannes Reinecke <>
14 years ago[libmultipath] Fixup EMC ALUA mode handling
Hannes Reinecke [Thu, 15 Mar 2007 08:24:15 +0000 (09:24 +0100)]
[libmultipath] Fixup EMC ALUA mode handling

Modern EMC machines support ALUA in addition to the vendor-specific
PNR (passive/not ready) method. Machines in ALUA mode will understand
PNR commands, too, so we only need to relax the check to operate
them correctly.

Signed-off-by: Ed Goggin <>
Signed-off-by: Hannes Reinecke <>
14 years ago[kpartx] fix install target
Hannes Reinecke [Mon, 30 Apr 2007 06:45:54 +0000 (08:45 +0200)]
[kpartx] fix install target

The install target should refer the executable, otherwise it'll trigger
an entire rebuild.

Signed-off-by: Hannes Reinecke <>
14 years agokpartx: fix crash during boot
Hannes Reinecke [Tue, 20 Feb 2007 14:16:56 +0000 (15:16 +0100)]
kpartx: fix crash during boot

kpartx will crash during boot as device-mapper insists on freeing
all passed memory upon exit. So we don't have to do it.

Signed-off-by: Hannes Reinecke <>
14 years ago[libmultipath] the forgotten bit
Christophe Varoqui [Wed, 16 May 2007 21:17:02 +0000 (23:17 +0200)]
[libmultipath] the forgotten bit

Thanks Hannes, for reporting this forgotten changeset.

14 years ago[multipathd] add CLI readline completion hannes/stage master/stage sles11/stage
Christophe Varoqui [Sun, 6 May 2007 22:21:17 +0000 (00:21 +0200)]
[multipathd] add CLI readline completion

This one needed a bit of work :

o Add a convenient vector_foreach_slot_after() to the vector lib
o Move all add_handler() calls from main.c to cli.c, but don't set handlers
  there. This way the multipathd binary execed as the CLI (-k flag) gains
  the leisure the load the CLI dictionnary too. Which is quite useful for
  keyword completion.
o Add a set_handler_callback() function and use it in main.c in place of
  former add_handler() calls.
o No need to compute len each vector_foreach_slot() iteration in find_key()
o get_cmdvec() returns more precise failure hints as int return value.
  The readline keyword generator needs those hints.

14 years ago[all] Path group timeout handling
Christophe Varoqui [Thu, 3 May 2007 07:37:33 +0000 (09:37 +0200)]
[all] Path group timeout handling

The config file keyword is pg_timeout.
Takes value in seconds. Default is none.
Can be set in defaults, hardware or multipath configlets.

From Redhat resync.

14 years ago[build] detect presence of dm_task_no_flush symbol in libdevmapper
Christophe Varoqui [Wed, 2 May 2007 13:58:41 +0000 (15:58 +0200)]
[build] detect presence of dm_task_no_flush symbol in libdevmapper

Fix this annoying build problem on system not yet implementing this API in
their libdevmapper package (ubuntu up to Feisty for example).

14 years ago[libmultipath] don't rely on PATH being set anymore for callouts
Christophe Varoqui [Wed, 2 May 2007 09:25:39 +0000 (11:25 +0200)]
[libmultipath] don't rely on PATH being set anymore for callouts

Redhat resync.

14 years ago[libmultipath] move from execvp to execv for callouts
Christophe Varoqui [Wed, 2 May 2007 08:55:10 +0000 (10:55 +0200)]
[libmultipath] move from execvp to execv for callouts

From Redhat resync.

14 years ago[libmultipath] split long log msg about alias lookup on 2 lines
Christophe Varoqui [Wed, 2 May 2007 08:39:51 +0000 (10:39 +0200)]
[libmultipath] split long log msg about alias lookup on 2 lines

From Redhat branch resync.

14 years ago[libmultipath] Increase the wait time for device to appear in /dev
Christophe Varoqui [Wed, 21 Mar 2007 22:10:33 +0000 (23:10 +0100)]
[libmultipath] Increase the wait time for device to appear in /dev

RDAC needs 60 sec timeout.

Chandra Seetharaman, IBM

14 years ago[libmultipath] ghost paths priorities are not set properly
Christophe Varoqui [Wed, 21 Mar 2007 22:08:43 +0000 (23:08 +0100)]
[libmultipath] ghost paths priorities are not set properly

Made some changes to honor the GHOST state while setting priorities.

Chandra Seetharaman, IBM

14 years ago[libcheckers] add new rdac checker
Christophe Varoqui [Wed, 21 Mar 2007 22:02:41 +0000 (23:02 +0100)]
[libcheckers] add new rdac checker

While working on lsi-rdac hardware handler, I found that the checkers "tur"
and "readsector0" are not serving the lsi-rdac properly. Also, the storage
device has a active/passive state which need to be handled properly.

So, I wrote a new path checker for lsi-rdac, to use the C4 inquiry page to
get the current owner of the lun and set the state as UP(active) or

Chandra Seetharaman, IBM

14 years ago[libmultipath] blacklist logging overhaul
Christophe Varoqui [Thu, 15 Feb 2007 23:59:52 +0000 (00:59 +0100)]
[libmultipath] blacklist logging overhaul

Make blacklist functions log as much info as possible.

o exported functions are now called filter_*
o each filter_* challenges exceptions list first, then blacklist if
o each filter_* is verbose
o each filter_* wraps a silent _filter_*
o filter_path chains _filter_*
o filter_* returns negative if exception list match
o filter_* returns positive if blacklist match
o update all blacklist_*() callers
o fix "show devices" CLI command to show whitelisted devs

14 years ago[libmultipath] remove another '\n' from alias.c logs
Christophe Varoqui [Tue, 13 Feb 2007 22:50:25 +0000 (23:50 +0100)]
[libmultipath] remove another '\n' from alias.c logs

14 years ago[libmultipath] remove '\n' in binding match log
Christophe Varoqui [Tue, 13 Feb 2007 22:49:06 +0000 (23:49 +0100)]
[libmultipath] remove '\n' in binding match log

14 years ago[libmultipath] Changes hwtable.c to Support New Pillar
Christophe Varoqui [Wed, 7 Feb 2007 23:17:57 +0000 (00:17 +0100)]
[libmultipath] Changes hwtable.c to Support New Pillar

And new maintainer from Pillar Data.

Srinivas Ramani, Pillar Data

14 years ago[libmultipath] remove an unused variable in dict.c
Christophe Varoqui [Fri, 26 Jan 2007 22:58:15 +0000 (23:58 +0100)]
[libmultipath] remove an unused variable in dict.c

14 years ago[libmultipath] Blacklist exception follow-ups
Christophe Varoqui [Wed, 10 Jan 2007 22:06:09 +0000 (23:06 +0100)]
[libmultipath] Blacklist exception follow-ups

This patch adds the ability to have blacklist exceptions for vendor:product
devices.  Also, the wwid and devnode exceptions weren't getting freed
properly in free_config, so that is fixed as well.

Benjamin E. Marzinski, RedHat

14 years ago[libmultipath] blacklist exceptions
Christophe Varoqui [Sun, 7 Jan 2007 22:53:06 +0000 (23:53 +0100)]
[libmultipath] blacklist exceptions

On IBM System z we often have the problem that we have attached
several hundred devices. In case we want to use only a few of them
with mp-tools, we have to blacklist all others. For that reason I have
introduced a blacklist_exceptions keyword for the multipath.conf  which
fills an internal exception list.

Additionally this patch adds two commands to the multipathd cli to
display blacklist rules and blacklisted devices.

A multipath.conf like:
------------------- snip --------------------
blacklist {
        devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
        devnode "^hd[a-z][[0-9]*]"
        devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
        devnode "^dasd[a-z]+[0-9]*"
blacklist_exceptions {
        devnode "^dasd[c-d]+[0-9]*"
------------------- snap --------------------

All DASD devices are blacklisted except dasdc and
dasdd and corresponding partitions, which are listed in
the blacklist:exceptions section.
This example would produce the following output in the
"multipathd -k" cli:

------------------- snip --------------------
multipathd> show blacklist
device node rules:
- blacklist:
        (config file rule) ^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*
        (config file rule) ^hd[a-z][[0-9]*]
        (config file rule) ^cciss!c[0-9]d[0-9]*[p[0-9]*]
        (config file rule) ^dasd[a-z]+[0-9]*
        (default rule)     ^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*
        (default rule)     ^hd[a-z]
        (default rule)     ^cciss!c[0-9]d[0-9]*
- exceptions:
        (config file rule) ^dasd[c-d]+[0-9]*
wwid rules:
- blacklist:
- exceptions:
device rules:
- blacklist:
        (default rule)     DGC:LUNZ

multipathd> show devices
available block devices:
    dasda (blacklisted)
    dasdb (blacklisted)
    dm-0 (blacklisted)
    dm-1 (blacklisted)
    dm-2 (blacklisted)
    dm-3 (blacklisted)
    dm-4 (blacklisted)
    dm-5 (blacklisted)
    dm-6 (blacklisted)
    loop0 (blacklisted)
    loop1 (blacklisted)
    loop2 (blacklisted)
    loop3 (blacklisted)
    loop4 (blacklisted)
    loop5 (blacklisted)
    loop6 (blacklisted)
    loop7 (blacklisted)
    ram0 (blacklisted)
    ram10 (blacklisted)
    ram11 (blacklisted)
    ram12 (blacklisted)
    ram13 (blacklisted)
    ram14 (blacklisted)
    ram15 (blacklisted)
    ram1 (blacklisted)
    ram2 (blacklisted)
    ram3 (blacklisted)
    ram4 (blacklisted)
    ram5 (blacklisted)
    ram6 (blacklisted)
    ram7 (blacklisted)
    ram8 (blacklisted)
    ram9 (blacklisted)
------------------- snap --------------------

Signed-off-by: Volker Sameske <>
15 years ago[libmultipath] use noflush feature
root [Mon, 11 Dec 2006 23:08:41 +0000 (00:08 +0100)]
[libmultipath] use noflush feature

The patch requires libdevmapper 1.02.11 or later.

The patch is tested on both multipath-tools on git and
multipath-tools-0.4.7-5.2 in RHEL5 beta2 for the following scenario:
   1. prepare 2 physical paths
   2. down (delete) the 1st path
   3. create multipath map with the 2nd path with queue_if_no_path
   4. do I/O on it
   5. down (delete) the 2nd path
   6. up the 1st path
   7. no I/O error should be observed in user space

Jun'ichi Nomura, NEC

15 years ago[libmultipath] devmapper prereq detection overhault
root [Mon, 11 Dec 2006 23:05:13 +0000 (00:05 +0100)]
[libmultipath] devmapper prereq detection overhault

o fix testing logic (1.2.0 now satisfies 1.1.1 prereq)
o add libdevmapper prereq testing
o split dm_prereq() in dm_libprereq() and dm_drvprereq()
o bring back min version settings in devmapper.c
o bump libdevmapper prereq to 1.02.11 (in preparation of no_flush use)

15 years ago[kpartx] fix partition calculations of DASD partitions
root [Mon, 11 Dec 2006 21:07:56 +0000 (22:07 +0100)]
[kpartx] fix partition calculations of DASD partitions

This patch fixes the offset and length calcuations for DASD partitions
with either CMS (without explicit offset), the old linux disk layout or
no partition information at all if the devices are using a blocksize
bigger than 512B.
In the cases mentioned above the offset was normalized (to the number of
512B sectors) twice and the size reduced by the normalized offset and
again by the double normalized offset later.
This leads to kpartx defining the wrong limits in these cases.

Signed-off-by: Stefan Bader <>
15 years ago[multipath] correctness "multipath -ll" fix
Christophe Varoqui [Wed, 6 Dec 2006 22:22:07 +0000 (23:22 +0100)]
[multipath] correctness "multipath -ll" fix


Edward Goggin, EMC

15 years ago[multipath] correctness "multipath -ll" fix
Christophe Varoqui [Mon, 27 Nov 2006 22:12:04 +0000 (23:12 +0100)]
[multipath] correctness "multipath -ll" fix

Just a simple change to multipath/main.c:update_paths()
to set the mpp field of each path so that the immediately
following call to pathinfo() will call get_state() on a
path with its  mpp field set.  This enables "multipath -ll"
to utilize the shared context field of the multipath struct.

Edward Goggin, EMC

15 years ago[libmultipath] fix user_friendly_names race
Christophe Varoqui [Mon, 27 Nov 2006 22:06:36 +0000 (23:06 +0100)]
[libmultipath] fix user_friendly_names race

Without this patch I could fairly easily get two multipath mpath0 entries
in /var/lib/multipath/bindings by running 8 concurrent instances of
multipath(8) while with the patch I cannot get this problem to occur.

The posix file byte range locks used to provide atomicity for accessing the
entries in the multipath bindings file get released from whenever __any__
descriptor or FILE structure for that file is closed.  This patch delays
the fclose() for the FILE structures used within lookup_binding() and
rlookup_binding() until there is no more need for the atomicity.

Edward Goggin, EMC

15 years ago[multipathd] man page update
Christophe Varoqui [Mon, 27 Nov 2006 21:53:28 +0000 (22:53 +0100)]
[multipathd] man page update

Add CLI commands description.

Volker Sameske, IBM

15 years ago[libmultipath] tweak defaults for DDN S2A8500
Christophe Varoqui [Thu, 23 Nov 2006 23:26:43 +0000 (00:26 +0100)]
[libmultipath] tweak defaults for DDN S2A8500

When using multipath-tools 0.4.7, I would like to reports that DDN S2A8500
disk array reports a wrong status whith 'readsector0' checker. 'directio'
seems to be the right checker for such storage system.

Frederic Temporelli, Bull

15 years ago[checkers] handling CLARiiON I/O to inactive snapshot logical units
Christophe Varoqui [Thu, 23 Nov 2006 23:06:23 +0000 (00:06 +0100)]
[checkers] handling CLARiiON I/O to inactive snapshot logical units

Prevent an I/O hang which can occur with host I/O to an inactive CLARiiON
snapshot logical unit.  While the inactive snapshot LU is presented to a
host, inquiry, TUR, and read capacity commands succeed, but read and write
commands are failed.  Complicating the matter is the fact that read/write
to the active paths fails with a particular sense code/asc/ascq combination
while read/write to the passive paths does not.

Edward Goggin, EMC

15 years ago[checkers] sg_read() enhancement
Christophe Varoqui [Thu, 23 Nov 2006 22:49:13 +0000 (23:49 +0100)]
[checkers] sg_read() enhancement

Retry SGIO 3 times max if we get a "Unit Attention" in sense data.

Edward Goggin, EMC

15 years ago[libchecker] move sg_read() to a new libsg.c
Christophe Varoqui [Thu, 23 Nov 2006 22:32:05 +0000 (23:32 +0100)]
[libchecker] move sg_read() to a new libsg.c

This function is bound to be shared among checkers.
So make it easy to do so.

15 years ago[checkers] multipath-wide shared context for checkers
Christophe Varoqui [Thu, 23 Nov 2006 21:52:35 +0000 (22:52 +0100)]
[checkers] multipath-wide shared context for checkers

At least one checker need to shared data between checkers attached to
all paths of a multipath.

This patch addresses this need by adding a "void * mpcontext" to
struct multipath, and its "void **" sibling in struct checker.

checker_init() ensures the multipath->mpcontext is attached to

Checkers are in charge of allocating the memory block and attaching it
to *checker->mpcontext. the .init checker function is a natural
place for that.

Freeing the mpcontext in done in free_multipath().

15 years ago[defaults] Change of IBM DS8000 path grouping policy
Christophe Varoqui [Fri, 17 Nov 2006 21:04:04 +0000 (22:04 +0100)]
[defaults] Change of IBM DS8000 path grouping policy

Michael Loehr, IBM

15 years ago[libmultipath] braino, still get path prio for paths with PATH_DOWN
Christophe Varoqui [Fri, 17 Nov 2006 20:33:30 +0000 (21:33 +0100)]
[libmultipath] braino, still get path prio for paths with PATH_DOWN

Edward Goggin, EMC

15 years ago[priority] adjust SCSI RTPG request buffer size in ALUA prioritizer
Christophe Varoqui [Wed, 15 Nov 2006 23:21:17 +0000 (00:21 +0100)]
[priority] adjust SCSI RTPG request buffer size in ALUA prioritizer

The following patch adds error and size checking to the REPORT TARGET
PORT GROUPS command issued by rtpg.c.  The old code issued a buffer of
128 bytes, but never checked the return length.  The new code starts
with a buffer of 128 bytes, but reallocates it if the buffer is too
small (SCSI returns the necessary length in the response data).  This is
more robust as it handles devices that consume more than 128 bytes for
RTPG, like the Incipient NSP.

I tried to handle errors, etc. as closely as I could to what is already
there in the code.  Let me know if you'd prefer anything written

Brian Geisel

15 years ago[libmultipath] clarify priority values
Christophe Varoqui [Wed, 15 Nov 2006 23:06:48 +0000 (00:06 +0100)]
[libmultipath] clarify priority values

Define two values :
PRIO_UNDEF: prioritizer not exec yet, or returned an error
PRIO_DEFAULT: no prioritizer set, default value arbitrary set to 1

Changes :
1) 0 is no longer used as a possible priority value.
2) don't exec prioritizer in pathinfo() if path is down and priority is

Edward Goggin, EMC
Dave Wysochanski, Red Hat
& Me

15 years ago[libcheckers] document checker states
Christophe Varoqui [Tue, 14 Nov 2006 22:13:01 +0000 (23:13 +0100)]
[libcheckers] document checker states

Dave Wysochanski, Red Hat

15 years ago[libmultipath] scope limiting fixes
Christophe Varoqui [Tue, 14 Nov 2006 21:26:38 +0000 (22:26 +0100)]
[libmultipath] scope limiting fixes

I messed up the patch a bit.  Apparently dm_get_uuid() can
return a zero without actually having found a dm name which
matches the name parameter.

Also, I changed dm_get_uuid() so it either returns 1 or a null
string in the uuid return parameter -- in 2 different cases
it was doing neither.

The <dm_device_name> qualifier for the command line
"multipath -ll <dm device name>" can now accept up
to 3 different names for the same dm mapped device,
that is, a user friendly name, an alias in
/etc/multipath.conf, and the current name as
reported by "dmsetup ls".

Edward Goggin, EMC

15 years ago[libmultipath] configure() scope-limiting corner case
Christophe Varoqui [Mon, 13 Nov 2006 22:55:20 +0000 (23:55 +0100)]
[libmultipath] configure() scope-limiting corner case

This patch enables "multipath -l <dm device name>"
to work if the current dm_alias has been changed by
"dmsetup rename" or other means.

Edward Goggin, EMC

15 years ago[libcheckers]
Christophe Varoqui [Sat, 11 Nov 2006 14:04:59 +0000 (15:04 +0100)]

Change to libcheckers/readsector0.c to allow other checkers than
readsector0 to use sg_read().

Also provide the sense info in a buffer supplied by caller.

Edward Goggin, EMC

15 years ago[libmultipath] pathinfo() to invoke the path priority callout
Christophe Varoqui [Sat, 11 Nov 2006 13:57:55 +0000 (14:57 +0100)]
[libmultipath] pathinfo() to invoke the path priority callout

Changed libmultipath/discovery.c to allow pathinfo() to invoke the path
priority callout function of a path with a path state of PATH_DOWN since
some paths (e.g., paths to inactive snapshot LU on CLARiiON) may have
their state set to PATH_DOWN for reasons other than transport
connectivity failure.

Without this change, it is possible to create a situation whereby there
are paths of different priorities in the same path group even though the
path group policy is priority based grouping.  This is certainly the
case for paths to a multipath mapped device for an inactive snapshot
CLARiiON LUs when the paths change to a healthy state as soon as the
snapshot is activated.

Edward Goggin, EMC

15 years ago[libmultipath] remove dup_hwe()
Christophe Varoqui [Thu, 9 Nov 2006 21:17:13 +0000 (22:17 +0100)]
[libmultipath] remove dup_hwe()

Deprecated by recently introduced find_hwe_strmatch().

15 years ago[libmultipath] RR_WEIGHT_PRIORITIES undefined
Christophe Varoqui [Thu, 9 Nov 2006 21:16:00 +0000 (22:16 +0100)]
[libmultipath] RR_WEIGHT_PRIORITIES undefined

Yet. So don't use it in the recently introduced  HSV2.* defaults.

15 years ago[libmultipath] Update HP HSV200 hardware table
Christophe Varoqui [Thu, 9 Nov 2006 21:07:41 +0000 (22:07 +0100)]
[libmultipath] Update HP HSV200 hardware table

According to HP the behaviour of the HSV200 depends on the software
release; all revisions smaller or equal to '3000' have active/passive
support; all revisions above that have active/active support.
Translated it means that the older firmware uses the HP-style
'START_STOP_UNIT' command to switch paths, while the newer firmware
supports ALUA.
So we should update the hardware tables accordingly.

Signed-off-by: Hannes Reinecke <>
15 years ago[libmultipath] Add support for matching against revision field
Christophe Varoqui [Thu, 9 Nov 2006 21:06:05 +0000 (22:06 +0100)]
[libmultipath] Add support for matching against revision field

The standard SCSI inquiry data provides for a field 'revision' which
specifies the software revision of the device. Some vendors changed
the behaviour during software releases so it's desireable that we
can match on that field in the hardware table, too.

Signed-off-by: Hannes Reinecke <>
15 years ago[libmultipath] Use strmatch to load config file
Christophe Varoqui [Thu, 9 Nov 2006 21:02:46 +0000 (22:02 +0100)]
[libmultipath] Use strmatch to load config file

Currently we're using regexec to load the initial hardware table.
Unfortunately the hardware table has regex as defaults, so it's quite
possible for two different regular expressions do match.
But that's quite undesired as we just want a clean 1:1 copy here.
So we're better using a string match for comparison.

Signed-off-by: Hannes Reinecke <>
15 years ago[libmultipath] multipath devices are not created for the Luns having 8 paths
Christophe Varoqui [Wed, 8 Nov 2006 21:47:37 +0000 (22:47 +0100)]
[libmultipath] multipath devices are not created for the Luns having 8 paths

When setting the rr_weight to 'priorities' multipath fails to
setup a device-mapper table. This is due to a missing initialization
of the minio field, which will be multiplied by the path priority
for each path. This results in an eventual overflow of the minio
field and an invalid device mapper table.

References: 203823
Signed-off-by: Hannes Reinecke <>
15 years ago[multipath] add '-h' option
Christophe Varoqui [Thu, 19 Oct 2006 20:24:58 +0000 (22:24 +0200)]
[multipath] add '-h' option

Calling 'multipath -h' always added the line 'Unknown switch: (null)' in
front of the usage text since '-h' was not defined.
This patch just adds the '-h' option.

Volker Sameske, IBM

15 years ago[prio] ALUA prioritizer broken for paths with high minor
Christophe Varoqui [Tue, 26 Sep 2006 21:21:24 +0000 (23:21 +0200)]
[prio] ALUA prioritizer broken for paths with high minor

Here's a patch which I think will allow mpath_prio_alua to
work better with device files with minor numbers >= 256.

Edward Goggin, EMC

15 years ago[libmultipath] remove some more absolute path in hwtable
Christophe Varoqui [Mon, 4 Sep 2006 19:33:37 +0000 (21:33 +0200)]
[libmultipath] remove some more absolute path in hwtable

Hannes sent a patch to remove one for IBM 3526.
Go a bit further, removing all absolute paths.

15 years ago[multipath] disabling lock_fs call on DM_DEVICE_RESUME libdevmapper ioctl
Christophe Varoqui [Sun, 3 Sep 2006 22:33:08 +0000 (00:33 +0200)]
[multipath] disabling lock_fs call on DM_DEVICE_RESUME libdevmapper ioctl

This patch to dm_simplecmd of multipath-tools/libmultipath/devmapper.c will
disable the use of lock_fs during I/O suspension while changing
device mapper maps via the DM_DEVICE_RESUME ioctl of libdevmapper.

Disabling lock_fs will result in not flushing I/O to the dm-multipath block
device before changing the maps for the mapped device.  Flushing I/O at
time appears not only unnecessary for dm-multipath devices but causes some
troublesome delays due to SCSI HBA driver target-side timeouts when these
maps are changed as a result of paths coming and going while upgrading
software (a non-disruptive ucode upgrade) on a storage system.

As is the case for any change which is dependent on similar changes in
libdevmapper and the kernel, this patch will introduce a dependency on
libdevmapper and kernel.  Not sure which versions first had this support
at least libdevmapper 1.02.02 and linux kernel version 2.6.18-rc2 have the
required support.

Edward Goggin, EMC

15 years ago[multipath] Fixup return code for 'multipath -l'
Christophe Varoqui [Sun, 3 Sep 2006 22:15:44 +0000 (00:15 +0200)]
[multipath] Fixup return code for 'multipath -l'

'multipath -l' should really set the return code to '0' if no error

Hannes Reinecke, Suse

15 years ago[multipath] remove obsolete '-D' option
Christophe Varoqui [Sun, 3 Sep 2006 22:14:54 +0000 (00:14 +0200)]
[multipath] remove obsolete '-D' option

our documentation folks complained that the manpage documents an
obsolete / unused '-D' option for multipath.

This patch removes this description from the manpage.

Hannes Reinecke, Suse

15 years ago[libmultipath] Fixup hwtable regexp
Christophe Varoqui [Sun, 3 Sep 2006 22:13:54 +0000 (00:13 +0200)]
[libmultipath] Fixup hwtable regexp

appearently no-one noticed that we've switched to regular expressions
instead of shell-style fnmatch for the hwtable.
Quite surprisingly, really, that no-one complained; the change has been
done in October 2005.

Anyway, this patch cleans it up. And also splits off the IBM DS6000 and
IBM SVC, as they are separate machines.

Hannes Reinecke, Suse

15 years ago[priority] disable debug output for pp_tpc
Christophe Varoqui [Sun, 3 Sep 2006 22:12:53 +0000 (00:12 +0200)]
[priority] disable debug output for pp_tpc

this patch removes the debug output for pp_tpc and also decreases the
priority ratings so that the passive path will have a priority of 0.

Hannes Reinecke, Suse

15 years ago[libmultipath] add support for IBM 3526
Christophe Varoqui [Sun, 3 Sep 2006 22:11:39 +0000 (00:11 +0200)]
[libmultipath] add support for IBM 3526

we've found another IBM storage server in our lab; this patch adds the
necessary hwtable entry for it.

However, this is an RDAC machine, so it'll work only in some cases. One
day we really need an RDAC hw-handler.

Hannes Reinecke, Suse

15 years ago[checkers] EMC checker to report LUNZ as failing (2)
Christophe Varoqui [Sat, 12 Aug 2006 14:30:31 +0000 (16:30 +0200)]
[checkers] EMC checker to report LUNZ as failing (2)

Fix braino while applying patch.

15 years ago[checkers] EMC checker to report LUNZ as failing
Christophe Varoqui [Fri, 11 Aug 2006 06:45:29 +0000 (08:45 +0200)]
[checkers] EMC checker to report LUNZ as failing

This patch simply reports a PATH_DOWN status for paths to an EMC CLARiiON
LUNZ (or an unbound) block device since these paths cannot possibly be used
to issue I/O to such a device.  In fact, allowing block I/O to a LUNZ
dm-multipath device will cause the process to hang until the no_path_retry
timeout is incurred.  This is not desirable.

Ed Goggin, EMC

15 years ago[libmultipath] make sure to terminate strftime buff properly
Christophe Varoqui [Wed, 19 Jul 2006 12:49:34 +0000 (14:49 +0200)]
[libmultipath] make sure to terminate strftime buff properly

Bernhard Fischer

15 years ago[libmultipath] allow for non-default DESTDIR in hwtable
Christophe Varoqui [Wed, 19 Jul 2006 12:44:20 +0000 (14:44 +0200)]
[libmultipath] allow for non-default DESTDIR in hwtable

Bernhard Fischer

15 years ago[libmultipath] make sure that the callout program picks up the PATH from
Christophe Varoqui [Wed, 19 Jul 2006 12:43:32 +0000 (14:43 +0200)]
[libmultipath] make sure that the callout program picks up the PATH from
the invoking shell

Bernhard Fischer

15 years ago[multipathd] sweets
Christophe Varoqui [Wed, 19 Jul 2006 12:40:46 +0000 (14:40 +0200)]
[multipathd] sweets

- vector_foreach_slot takes an unsigned i
- don't use old-style initializer for setscheduler's sched_param

Bernhard Fischer

15 years ago[typo] s/controler/controller/g
Christophe Varoqui [Wed, 19 Jul 2006 12:37:44 +0000 (14:37 +0200)]
[typo] s/controler/controller/g

Bernhard Fischer

15 years ago[libmultipath] move newline to dlog format parameter
Christophe Varoqui [Wed, 19 Jul 2006 12:36:06 +0000 (14:36 +0200)]
[libmultipath] move newline to dlog format parameter

Bernhard Fischer

15 years ago[man] update date of manpages
Christophe Varoqui [Wed, 19 Jul 2006 12:33:40 +0000 (14:33 +0200)]
[man] update date of manpages

Bernhard Fischer

15 years ago[libmultipath] rename the Hitachi prioritizer in defaults table
Christophe Varoqui [Wed, 5 Jul 2006 13:20:19 +0000 (15:20 +0200)]
[libmultipath] rename the Hitachi prioritizer in defaults table

Matthias Rudolph, HDS

15 years ago[libmultipath] fix 'multipath -d' behaviour
Christophe Varoqui [Thu, 22 Jun 2006 14:27:19 +0000 (16:27 +0200)]
[libmultipath] fix 'multipath -d' behaviour

Volker Sameske noted 'multipath -d' was displaying the same info multiple
times, and listed paths which should be listed.

Fix that.

15 years ago[multipathd] get the layout right with "sho topo" CLI commands
Christophe Varoqui [Thu, 22 Jun 2006 08:59:16 +0000 (10:59 +0200)]
[multipathd] get the layout right with "sho topo" CLI commands

15 years ago[libmultipath] snprint_size tweaks
Christophe Varoqui [Mon, 19 Jun 2006 08:57:06 +0000 (10:57 +0200)]
[libmultipath] snprint_size tweaks

Prefer 1.8T to 1824G, like "GNU df".
Make units knowledge easily expandable.
Push the logic to 'P', for petabyte, in this patch.

15 years ago[kpartx][libmultipath] make multipath and kpartx prefix the uuid
Christophe Varoqui [Mon, 19 Jun 2006 07:49:09 +0000 (09:49 +0200)]
[kpartx][libmultipath] make multipath and kpartx prefix the uuid

In order for other programs to figure out who owns the dm-devices that
are created by multipath and kpartx, this patch adds a prefix to the uuid
for all multipath and kpartx created devices.  When multipath gets the
the prefix is stripped back off. However other programs can use the device
mapper library or dmsetup to easily check which devices were created by
multipath or kpartx.

the multipath prefix is mpath-
the kpartx prefix is part%d- where %d is the partition number.

Ben Marzinski, Redhat

15 years agoFinish up the work on SG_IO timeout
Christophe Varoqui [Fri, 16 Jun 2006 10:36:55 +0000 (12:36 +0200)]
Finish up the work on SG_IO timeout

all over the place.

15 years ago[libcheckers] workaround for rather profound path checking issue
Christophe Varoqui [Fri, 16 Jun 2006 10:23:07 +0000 (12:23 +0200)]
[libcheckers] workaround for rather profound path checking issue

Overloaded storage response time can be very long.
SG_IO timouts after DEF_TIMEOUT milliseconds, and checkers interprets this
as a path failure. multipathd then proactively evicts the path from the DM
multipath table in this case.

This generaly snow balls and ends up in full eviction and IO errors for end
users. Bad. This may also cause SCSI bus resets, causing disruption for all
local and external storage hardware users.

Provision a long timeout. Longer than any real-world application would cope

If someone can suggest a real fix, like an evidence the ioctl timed out,
voice up. The ioctl being blocking, I'd rather lower the timeout and retry
than apply this workaround.

15 years ago[libmultipath] print dm-* sysfs device name in "show topo"
Christophe Varoqui [Tue, 13 Jun 2006 08:55:02 +0000 (10:55 +0200)]
[libmultipath] print dm-* sysfs device name in "show topo"

Useful info for admins.

Also fix a small bug in print_multipath() not reseting a buffer upon

15 years ago[multipath] getopt cleanup
Christophe Varoqui [Sat, 10 Jun 2006 06:37:52 +0000 (08:37 +0200)]
[multipath] getopt cleanup

'q' and 'i' are never used, so don't accept them as valid options

Benjamin Marzinski, Redhat

15 years ago[libmultipath] fix hwtable brainos
Christophe Varoqui [Fri, 2 Jun 2006 20:02:17 +0000 (22:02 +0200)]
[libmultipath] fix hwtable brainos

Matthias Rudolph remembered me the most simple regex rules. Shame.

15 years ago[libmultipath] fix segv in load_config()
Christophe Varoqui [Fri, 2 Jun 2006 19:56:16 +0000 (21:56 +0200)]
[libmultipath] fix segv in load_config()

segv when a vendor or product string was not set in the
configuration file.

Note that now

device {
vendor DCG

means :

device {
vendor DCG
product *

15 years ago[libmultipath] print the multipath strings in "show topo"
Christophe Varoqui [Thu, 1 Jun 2006 10:00:21 +0000 (12:00 +0200)]
[libmultipath] print the multipath strings in "show topo"

Helps usability in complex SAN setups.

15 years ago[libmultipath] '\0' terminate strings from sysfs after the last char
Christophe Varoqui [Thu, 1 Jun 2006 07:37:07 +0000 (09:37 +0200)]
[libmultipath] '\0' terminate strings from sysfs after the last char

Makes for fancier vendor/product/rev strings for example.
And generally makes sense.

15 years ago[libmultipath] hwtable maintenance
Christophe Varoqui [Thu, 1 Jun 2006 07:34:16 +0000 (09:34 +0200)]
[libmultipath] hwtable maintenance

Mostly tweaks to the Hitachi products, from Matthias Rudolph.

15 years ago[libmultipath] fix select_alias weirdness
Christophe Varoqui [Thu, 1 Jun 2006 07:21:29 +0000 (09:21 +0200)]
[libmultipath] fix select_alias weirdness

In select_alias, the code that tries to pull the alias from dm_get_name()
sets mp->alias. So even if it fails,  mp->alias will never get set to

Benjamin Marzinski, Redhat

15 years ago[libmultipath] multipath size output in line with "df -h"
Christophe Varoqui [Wed, 31 May 2006 10:14:15 +0000 (12:14 +0200)]
[libmultipath] multipath size output in line with "df -h"

[size=XX GB] replaced with [size=XXG] for example.

15 years ago[libmultipath] pick up existing alias (if any) from current dm config
Christophe Varoqui [Tue, 16 May 2006 21:28:12 +0000 (23:28 +0200)]
[libmultipath] pick up existing alias (if any) from current dm config

This small patch should allow multipath(8) and multipathd(8) to acquire its
internal alias name from the device-mapper's device-name for the device if a
multipath specific alias (user friendly one or not) has __not__ been set.
Otherwise, assuming that a multipath device has been renamed beforehand by
someone invoking "dm_setup rename", simply invoking "multipath" changes the
device-mapper's device-name for the device back to the multipath assigned
UID name.

Edward Goggin, EMC

15 years ago[build] provision for custom versioning
Christophe Varoqui [Tue, 9 May 2006 21:43:27 +0000 (23:43 +0200)]
[build] provision for custom versioning

apply custom build/rpm versioning for multipath-tools

Brian Wong, Pillardata

15 years ago[libmultipath] add Apple Xserve defaults
Christophe Varoqui [Tue, 9 May 2006 21:37:19 +0000 (23:37 +0200)]
[libmultipath] add Apple Xserve defaults

I tested Apple's Xserve RAID with the multipath tools.

Here is the entry I had to make in the config file, if
one wants to add it to the dafault table:

Shyam Sundar.

15 years ago[priority] pp_alua correctness fix
Christophe Varoqui [Thu, 4 May 2006 21:34:40 +0000 (23:34 +0200)]
[priority] pp_alua correctness fix

Tom Kalus noted path_priority/pp_aula/spc.h misrepresented to spec
regarding the product string lentgh. Credits for the fix too.

Fix acked by Stefan Bader.

15 years ago[priority] add new HDS Modular prioritizer
Christophe Varoqui [Mon, 24 Apr 2006 15:29:02 +0000 (17:29 +0200)]
[priority] add new HDS Modular prioritizer

Written by Matthias Rudolph, HDS.

15 years ago[libmultipath] push WWID_SIZE to 128
Christophe Varoqui [Thu, 20 Apr 2006 08:26:18 +0000 (10:26 +0200)]
[libmultipath] push WWID_SIZE to 128

64 was too small for "scsi_id -p 0x80" in most cases.

As a consequence, the tools refuse to get the uid at all and the path was
discarded ... which is still the good behaviour.

The problem tracking was done by Tarik Sedlarevic, Visionbytes.

15 years ago[libmultipath] fix segfault when no config file
Christophe Varoqui [Thu, 13 Apr 2006 21:03:08 +0000 (23:03 +0200)]
[libmultipath] fix segfault when no config file

Brian Wong noticed the segfault and tracked it down to free_keywords()
trying to walk a NULL keywords vector.  Credits.