13 years agotrack .gitignore so everyone can benefit from its presence
Christophe Varoqui [Wed, 21 May 2008 19:47:37 +0000 (21:47 +0200)]
track .gitignore so everyone can benefit from its presence

13 years ago[lib] adapt checker print function to Ben's change
Christophe Varoqui [Tue, 13 May 2008 22:41:32 +0000 (00:41 +0200)]
[lib] adapt checker print function to Ben's change

13 years ago[checkers]
Benjamin Marzinski [Tue, 13 May 2008 22:36:29 +0000 (00:36 +0200)]

checker_lookup() silently returns the default checker if the requested
one can't be loaded. Even worse, it the default checker can't be loaded,
it gets stuck in an infinite loop.

It seems to me that if the requested checker can't be loaded, we should
just throw an error. That's what this patch does.

multipath.conf should be order independent, and with the existing
checker code, it isn't.  The multipath_dir had to be set before
you could set a checker, otherwise the checker load failed (since the
multipath_dir wasn't specified).

13 years agoFixup Makefiles
Hannes Reinecke [Wed, 30 Apr 2008 09:04:55 +0000 (11:04 +0200)]
Fixup Makefiles

We're now using dlopen() etc, so we should link to libdl
explicitely instead of relying on some other library to do
this for us.
And '-fPIC' is a mandatory CFLAGS setting now, not an

Signed-off-by: Hannes Reinecke <>
13 years agoRemove DAEMON defines
Hannes Reinecke [Wed, 30 Apr 2008 09:04:50 +0000 (11:04 +0200)]
Remove DAEMON defines

We're now building just one shared library for both programs,
multipath and multipathd. So any DAEMON defines are quite
Remove them and use 'mpp->waiter == NULL' to distinguish between
multipath and multipathd where required.

Signed-off-by: Hannes Reinecke <>
13 years agoblock SIGPIPE before writing to a pipe
Hannes Reinecke [Wed, 30 Apr 2008 09:01:04 +0000 (11:01 +0200)]
block SIGPIPE before writing to a pipe

We have to block SIGPIPE before we're writing to the communication
pipe otherwise the daemon will be killed if the listening program
terminates prematurely.

Signed-off-by: Hannes Reinecke <>
13 years agoMake modules directory configurable
Hannes Reinecke [Wed, 30 Apr 2008 09:04:59 +0000 (11:04 +0200)]
Make modules directory configurable

As we know have a separate directory for the various shared
libraries we should make this configurable.
And use that variable a prefix for dlopen() to make that
work correctly.

Signed-off-by: Hannes Reinecke <>
13 years agomultipathd crash on shutdown
Hannes Reinecke [Wed, 30 Apr 2008 09:03:24 +0000 (11:03 +0200)]
multipathd crash on shutdown

On shutdown multipathd flushes its internal message queue;
but we have to check if the messages on the queue are not empty.

Signed-off-by: Hannes Reinecke <>
13 years agolibdevmapper prints garbage on shutdown
Hannes Reinecke [Wed, 30 Apr 2008 09:03:39 +0000 (11:03 +0200)]
libdevmapper prints garbage on shutdown

This patch fixes 2 logging bugs:
  o multipath command prints unexpected log message like
    "libdevmapper: libdm-common.c(303): Created /dev/mapper/<mapname>"
  o multipathd doesn't log messages like "--------shut down------"
    during the exit path

What is the problem:
  o multipath command and multipathd register dm_write_log() using
    dm_log_init() and it can be called from libdevmapper codes like
  o dm_write_log() references the global "conf" to find the verbosity,
    but it is freed before dm_lib_release() calls dm_write_log().
  o So dm_write_log() reads garbage value like big vervosity.

What does the patch do:
  o multipath command sets NULL to "conf" after freeing it.
    This prevents dm_write_log() from reading garbage data.
  o multipath command and multipathd free "conf" after all logging
    are completed, because the logging functions reference it
    to find the verbosity.

Signed-off-by: Kiyoshi Ueda <>
Signed-off-by: Hannes Reinecke <>
13 years agoImprove sense code scanning in sg_read() and tur checker
Hannes Reinecke [Wed, 30 Apr 2008 09:03:45 +0000 (11:03 +0200)]
Improve sense code scanning in sg_read() and tur checker

sg_read and tur should be able to correctly parse sense data,
as we might need to retry any UNIT ATTENTION sense codes.

Signed-off-by: Hannes Reinecke <>
13 years agoUse 'mpatha' for user_friendly_names option
Hannes Reinecke [Wed, 30 Apr 2008 09:03:29 +0000 (11:03 +0200)]
Use 'mpatha' for user_friendly_names option

We really should use 'mpatha' instead of 'mpath0' for the
generated names with the user_friendly_names option.
Otherwise we can't distinguish them from EVMS names.

Signed-off-by: Hannes Reinecke <>
13 years agoAdd cciss_tur checker
Hannes Reinecke [Wed, 30 Apr 2008 09:04:38 +0000 (11:04 +0200)]
Add cciss_tur checker

The 'normal' SG_IO tur checker has some issues with cciss, so
we'd better use a dedicated path checker here.

Signed-off-by: Hannes Reinecke <>
13 years agoDon't print failure messages for callouts by default
Hannes Reinecke [Wed, 30 Apr 2008 09:04:26 +0000 (11:04 +0200)]
Don't print failure messages for callouts by default

Calling 'multipath -ll' on devices with paths results in
lots of error messages; they really should be suppressed
for the normal output. The user can always have them printed
out by increasing verbosity.

Signed-off-by: Hannes Reinecke <>
13 years agoFixup varags usage
Hannes Reinecke [Wed, 30 Apr 2008 09:03:34 +0000 (11:03 +0200)]
Fixup varags usage

We already call va_end() at the correct position, no need to
duplicate it in log_safe().

Signed-off-by: Hannes Reinecke <>
13 years agoDefine LIBDM_API_FLUSH for 64bit systems correctly
Hannes Reinecke [Wed, 30 Apr 2008 09:04:45 +0000 (11:04 +0200)]
Define LIBDM_API_FLUSH for 64bit systems correctly

64bit Installation will have libraries in /lib64, not /lib.
So we'll have to check against this directory, too, to calculate
the correct LIBDM_API_FLUSH define.

Signed-off-by: Hannes Reinecke <>
13 years agoUpdate hardware table
Hannes Reinecke [Wed, 30 Apr 2008 09:04:33 +0000 (11:04 +0200)]
Update hardware table

Update the built-in hardware table with definitions for various
new machines.

Signed-off-by: Hannes Reinecke <>
13 years ago[lib] preparation for user-defined output format
Christophe Varoqui [Wed, 30 Apr 2008 09:37:49 +0000 (11:37 +0200)]
[lib] preparation for user-defined output format

13 years ago[build] remove references to prio callouts in spec file
Christophe Varoqui [Thu, 17 Apr 2008 21:06:56 +0000 (23:06 +0200)]
[build] remove references to prio callouts in spec file

13 years agoRemove devmap_name tool, redundant with dmsetup
Christophe Varoqui [Thu, 17 Apr 2008 21:05:29 +0000 (23:05 +0200)]
Remove devmap_name tool, redundant with dmsetup

13 years ago[lib] add "checker" keyword as an alias to "patch_checker" shlibs
Christophe Varoqui [Sun, 13 Apr 2008 00:57:47 +0000 (02:57 +0200)]
[lib] add "checker" keyword as an alias to "patch_checker"

13 years ago[checkers] checkers are now dlopen'ed plugins
Christophe Varoqui [Sat, 12 Apr 2008 21:57:57 +0000 (23:57 +0200)]
[checkers] checkers are now dlopen'ed plugins

just like prioritizers.
A lot of files shuffling too.

13 years ago[lib] merge libprio in libmultipath
Christophe Varoqui [Tue, 8 Apr 2008 21:21:48 +0000 (23:21 +0200)]
[lib] merge libprio in libmultipath

There is actually just the prio plugins api files linked into
Prioritizers proper go under libmultipath/prioritizers

13 years ago[build] move SHARED_FLAGS to Makefile include
Christophe Varoqui [Tue, 8 Apr 2008 20:55:03 +0000 (22:55 +0200)]
[build] move SHARED_FLAGS to Makefile include

13 years ago[libmultipath] remove unused KEEP_VEC define
Christophe Varoqui [Tue, 8 Apr 2008 20:47:34 +0000 (22:47 +0200)]
[libmultipath] remove unused KEEP_VEC define

13 years ago[libprio] prioritizer libs loading message level up'ed to 3
Christophe Varoqui [Thu, 3 Apr 2008 23:05:23 +0000 (01:05 +0200)]
[libprio] prioritizer libs loading message level up'ed to 3

13 years agoMove to a shared lib model for
Christophe Varoqui [Thu, 3 Apr 2008 22:58:41 +0000 (00:58 +0200)]
Move to a shared lib model for
1) checkers (one lib for all checkers for a start)
2) prioritizers (one helper lib, plus one lib per prioritizer)
3) libmultipath

Collaterals include :
o Remove old prioritizer callouts.
o Drop the klibc support
o Add remove_map(s)/remove_map(s)_and_stop_waiter(s) helpers

Regression testing is needed now.

13 years ago[libmultipath] update sysfs code
Hannes Reinecke [Thu, 20 Mar 2008 22:55:17 +0000 (23:55 +0100)]
[libmultipath] update sysfs code

This updates the sysfs code to work with the latest driver core
changes. Copied from udev sources.

13 years ago[libmultipath] Update discovery to work with new sysfs layout
Hannes Reinecke [Thu, 20 Mar 2008 22:53:48 +0000 (23:53 +0100)]
[libmultipath] Update discovery to work with new sysfs layout

With the new sysfs layout the parent device of a block device
it 'block', and only the parent of this is the 'real' parent.

13 years ago[libmultipath] ignore nonascii characters in multipath.conf
Benjamin Marzinski [Tue, 15 Jan 2008 23:32:02 +0000 (00:32 +0100)]
[libmultipath] ignore nonascii characters in multipath.conf

13 years ago[doc] Document "queue_if_no_path" behavior hannes/master sles11/master
Ritesh Raj Sarraf [Tue, 15 Jan 2008 23:16:41 +0000 (00:16 +0100)]
[doc] Document "queue_if_no_path" behavior

Document the queue_if_no_path behavior in situations where
all the paths to the LUN go offline.

13 years ago[config] fixes some wrong annotations about default value.
Kiyoshi Ueda [Tue, 15 Jan 2008 23:09:11 +0000 (00:09 +0100)]
[config] fixes some wrong annotations about default value.

13 years ago[libmultipath] fix the "too many files" error
Benjamin Marzinski [Tue, 15 Jan 2008 22:59:04 +0000 (23:59 +0100)]
[libmultipath] fix the "too many files" error

Added a max_fds parameter to /etc/multipath.conf. This allows
you to set the maximum number of open fds that multipathd can use, like with
ulimit -n.  Also added some code so that multipath closes the file descriptor
after it's used by the checker function, since multipath doesn't need to keep
them always open like multipathd does.

13 years agoMerge branch 'origin'
Christophe Varoqui [Wed, 9 Jan 2008 00:28:20 +0000 (01:28 +0100)]
Merge branch 'origin'

13 years ago[libmultipath] reset the multipath struct "action" field after usage
Christophe Varoqui [Wed, 9 Jan 2008 00:14:37 +0000 (01:14 +0100)]
[libmultipath] reset the multipath struct "action" field after usage

This is necessary for the daemon is stateful, and it will remember
this action value forever.

One example of a thing gone wrong is when daemon takes actions upon startup.
"show topo" will then always display these initial actions, though they are
long done.

13 years ago[libmultipath] discard trailing whitespaces from vendor/product strings
Christophe Varoqui [Wed, 9 Jan 2008 00:11:01 +0000 (01:11 +0100)]
[libmultipath] discard trailing whitespaces from vendor/product strings

13 years ago[libmultipath] add %s wildcard the multipath printing function
Christophe Varoqui [Tue, 8 Jan 2008 23:39:57 +0000 (00:39 +0100)]
[libmultipath] add %s wildcard the multipath printing function

same as %s for path printing function,
prints the vendor/product string

13 years ago[libmultipath] correctly place a whitespace in "multipath -l" output
Christophe Varoqui [Tue, 8 Jan 2008 23:07:23 +0000 (00:07 +0100)]
[libmultipath] correctly place a whitespace in "multipath -l" output

When user_friendly_names is no set, wwid and dm-* infos are not correctly separed. Fix.

13 years ago[libprio] random prio was still printing instead of returning value
Christophe Varoqui [Tue, 8 Jan 2008 22:37:47 +0000 (23:37 +0100)]
[libprio] random prio was still printing instead of returning value


13 years agokpartx: remove unused "-n" code origin
Guido Guenther [Mon, 26 Nov 2007 15:20:37 +0000 (16:20 +0100)]
kpartx: remove unused "-n" code

Signed-Off-By: Guido Guenther <>
13 years agokpartx: on delete process partitions in reverse order
Guido Guenther [Mon, 26 Nov 2007 15:27:32 +0000 (16:27 +0100)]
kpartx: on delete process partitions in reverse order

otherwise we try to remove the extended partition of MSDOS labels
(/dev/mapper/mpathX-part[1-4]) before the logical partition
/dev/mapper/mpathX-partY (Y>5) which fails.

Signed-Off-By: Guido Guenther <>
13 years agokpartx: document "-g"
Guido Guenther [Mon, 26 Nov 2007 15:20:16 +0000 (16:20 +0100)]
kpartx: document "-g"

Signed-Off-By: Guido Guenther <>
13 years ago[libprio] initial commit
Christophe Varoqui [Mon, 19 Nov 2007 00:12:23 +0000 (01:12 +0100)]
[libprio] initial commit

Priority callouts are nice, but have drawbacks.

1) multipathd holds a fd per path, but callouts have to open another for themselves. Which may fail.

2) callouts stored on a multipahed filesystem may hang multipathed on paging operation when there are no active path for the hosting device (getprio is in the salvation codepath). The window is small but Netapp fault injection tool manage to triggers the bug reliably.

This patch merges to priority methods in multipathd.

13 years ago[libmultipath] update path group prio on pg display
Christophe Varoqui [Sun, 18 Nov 2007 18:26:44 +0000 (19:26 +0100)]
[libmultipath] update path group prio on pg display

pg prio was previously only computed upon switching.
Updating upon display make sense too.

13 years ago[libmultipath] change all readsector0 defaults to directio
Christophe Varoqui [Sun, 18 Nov 2007 18:10:12 +0000 (19:10 +0100)]
[libmultipath] change all readsector0 defaults to directio

Follow-up the readsector0 deprecation in favor of the async
directio checker.

13 years ago[libmultipath] fix "show devices" CLI command
Christophe Varoqui [Sun, 18 Nov 2007 18:01:15 +0000 (19:01 +0100)]
[libmultipath] fix "show devices" CLI command

Whatever this command was intented to do, it did not.
I still don't see the usefulness, but now it displays :

    sdf devnode whitelisted, monitored
    sdb devnode whitelisted, unmonitored
    sda devnode whitelisted, unmonitored
    ram15 devnode blacklisted, unmonitored

13 years ago[defaults] add Pivot3 RAIGE defaults
Christophe Varoqui [Sun, 11 Nov 2007 08:26:04 +0000 (09:26 +0100)]
[defaults] add Pivot3 RAIGE defaults

Submitted by Bart Brooks, Pivot3

13 years ago[libmultipath] blacklist exceptions issues
Christophe Varoqui [Sat, 10 Nov 2007 01:22:26 +0000 (02:22 +0100)]
[libmultipath] blacklist exceptions issues

the current situation is fishy. Ben pointed a true braino in the
code I introduced when restructuring the blacklist lib :

in _filter_path(), I test each _filter_*() for r!=0 , where I intented
to check for r>0.

r==0 implements  : "exit on first blacklist or exception match".
 r>0 implements  : "exit on first blacklist match".

With this later behaviour I can set things like that for max safety and
efficiency :

blacklist {
        devnode .*
        device {
                vendor .*
                product .*
        wwid .*
blacklist_exceptions {
        devnode sd.*
        device {
                vendor IET.*
                product .*
        wwid "1646561646265.*"

or pragmatically :

blacklist {
        devnode .*
        wwid .*
blacklist_exceptions {
        devnode sd.*
        wwid "1646561646265.*"

Working that out, I also realized there may be another small
misbehaviour :

First, a little background on path discovery operations :

1) /sys/block parsing shows devnode names
2) devnode names examination shows device identification strings
3) these strings help us choose a getuid helper, which finally shows

Meaning we want the devnode blacklisting to prevail over device and
wwid, in case we know we don't have device strings available (loop, dm-,
raw, ...)

Similarily, we want the device blacklist to prevail over wwid, in case
we know we don't have getuid callout available. I have no example for
this case though, so it shouldn't be as important as the previous one.

Problem is we challenge _filter_device() after _filter_wwid().
This can be easily shufled around.

13 years ago[defaults] rename hp_sw hwhandler
Christophe Varoqui [Wed, 24 Oct 2007 20:31:21 +0000 (22:31 +0200)]
[defaults] rename hp_sw hwhandler

HP storageworks handler has been submitted upstream.  During the review,
the name of the handler was changed from "dm_hp" to "dm-hp" for consistency
with kernel code.  This patch  updates the hwtable for these HP arrays

Signed-off-by: Dave Wysochanski <dwysocha redhat com>
13 years ago[defaults] new cciss multipath-capable hardware
Christophe Varoqui [Wed, 24 Oct 2007 20:29:41 +0000 (22:29 +0200)]
[defaults] new cciss multipath-capable hardware

14 years ago[kpartx] use uint64_t to account slices start/size
Christophe Varoqui [Wed, 10 Oct 2007 21:13:31 +0000 (23:13 +0200)]
[kpartx] use uint64_t to account slices start/size

And thus support >2TB partitioned devices.
Redhat patch, pushed by Gerald Nowitzky.

14 years ago[kpartx] missing ptr init
Christophe Varoqui [Wed, 10 Oct 2007 20:42:55 +0000 (22:42 +0200)]
[kpartx] missing ptr init

Redhat fix, pushed by Gerald Nowitzky.

14 years ago[libmultipath] filter_wwid() is called with the wrong lists from filter_path()
Stefan Bader [Fri, 14 Sep 2007 17:48:08 +0000 (19:48 +0200)]
[libmultipath] filter_wwid() is called with the wrong lists from filter_path()

When filter_path() calls filter_wwid() it passes the devnode lists instead
of the wwid lists.

Signed-off-by: Christophe Varoqui <>
14 years ago[multipathd] extract a spaghetto from checkerloop()
Christophe Varoqui [Sat, 11 Aug 2007 12:33:06 +0000 (14:33 +0200)]
[multipathd] extract a spaghetto from checkerloop()

Code reorg only.

14 years ago[multipathd] fail/reinstate CLI commands disable/enable path checker
Christophe Varoqui [Sat, 11 Aug 2007 08:41:31 +0000 (10:41 +0200)]
[multipathd] fail/reinstate CLI commands disable/enable path checker

The "fail path X" CLI command was an interesting debug tool, showing the checkers automatically reinstating the failed path. But some fun spoilers want to use the thing to prepare cable unplugs and other maintenance ops. So make the command also care about diabling and enabling the checker to inhibit auto-reinstates.

14 years ago[libmultipath] update version 0.4.8
Christophe Varoqui [Thu, 2 Aug 2007 21:05:37 +0000 (23:05 +0200)]
[libmultipath] update version

14 years ago[multipathd] Add SuSE init script
Hannes Reinecke [Thu, 2 Aug 2007 20:56:01 +0000 (22:56 +0200)]
[multipathd] Add SuSE init script

14 years ago[libmultipath] add missing action messages
lbt [Mon, 30 Jul 2007 22:25:12 +0000 (00:25 +0200)]
[libmultipath] add missing action messages

There was some garbled output after renaming a multipath device and rerunning multipath.  This is just a minor fix to add some actions that were missing.

14 years ago[libmultipath] initial support for cciss multipathing
Hannes Reinecke [Mon, 30 Jul 2007 22:03:09 +0000 (00:03 +0200)]
[libmultipath] initial support for cciss multipathing

Whatever HP wants from this support, which is still not clear to me, merge this work from Hannes as an initial stage.

Beware Proliant owners: "unipathing" finest technology is comming to you.

14 years ago[priority] pp_sgi is actually a RDAC controller familly prioritizer
Christophe Varoqui [Mon, 30 Jul 2007 21:36:57 +0000 (23:36 +0200)]
[priority] pp_sgi is actually a RDAC controller familly prioritizer

So rename, as suggested by Hannes.

14 years ago[checkers] emc_clariion: change scsi read buffer size to 4096 bytes
Guido Guenther [Mon, 30 Jul 2007 21:27:29 +0000 (23:27 +0200)]
[checkers] emc_clariion: change scsi read buffer size to 4096 bytes

648833108fc5a95cbe15bd779289e98165c34d25 changed the scsi read buffer to 4096
bytes but forgot the emc patch checker. This fixes an immediate segfault on

14 years ago[multipathd] remove sysfs devices from cache
Hannes Reinecke [Wed, 25 Jul 2007 19:10:40 +0000 (21:10 +0200)]
[multipathd] remove sysfs devices from cache

Whenever a device is really removed from any multipath map we should
also remove it from the cache. Otherwise we'll induce a memory leak.

14 years ago[multipathd] whitespace cleanup
Hannes Reinecke [Tue, 24 Jul 2007 20:32:43 +0000 (22:32 +0200)]
[multipathd] whitespace cleanup

multipathd/main.c has quite some 'interesting' whitespace usage.
Better stick to established coding rules.

14 years ago[libmultipath] Add "^dcssblk[0-9]*" to default blacklist.
Stefan Bader [Tue, 24 Jul 2007 17:59:22 +0000 (19:59 +0200)]
[libmultipath] Add "^dcssblk[0-9]*" to default blacklist.

Added some System z specific device nodes, which would otherwise cause
problems, to default blacklist.

14 years ago[libmultipath] cache sysfs_devices
Guido Guenther [Fri, 20 Jul 2007 22:13:51 +0000 (00:13 +0200)]
[libmultipath] cache sysfs_devices

this one fixes the described bug of paths coming back as different block

Keep a list of sysfs devices for sysfs_device_get() so uev_trigger() can look
up the necessary information for proper path removal in case of a 'remove'
uevent - the sysfs files in the filesystem might be long gone at this point.

This also plugs a memory leak where we'd malloc space for the same sysfs device
over and over again for every processed uevent.

14 years ago[libmultipath] revert e1e1a1bfb2cf76bfd1a49335e3deec5360fb09db
Christophe Varoqui [Fri, 13 Jul 2007 21:26:12 +0000 (23:26 +0200)]
[libmultipath] revert e1e1a1bfb2cf76bfd1a49335e3deec5360fb09db

Counter productive change concerning hardware showing ghost paths,
like rdac.

14 years ago[libmultipath] filter_wwid() called with the wrong lists from filter_path()
Stefan Bader [Wed, 11 Jul 2007 21:43:37 +0000 (23:43 +0200)]
[libmultipath] filter_wwid() called with the wrong lists from filter_path()

I just found a small glitch blacklist.c. Patch is attached.

14 years ago[doc] Remove all statements of readsector0 as default checker
Christophe Varoqui [Thu, 5 Jul 2007 05:44:50 +0000 (07:44 +0200)]
[doc] Remove all statements of readsector0 as default checker

14 years ago[checkers] directio now is the internal default checker
Christophe Varoqui [Thu, 5 Jul 2007 05:41:33 +0000 (07:41 +0200)]
[checkers] directio now is the internal default checker

The directio is more advanced than readsector0 : async and unbuffered.
Make it the default choice.

14 years ago[checkers] handle >512 sector size in readsector0
John Kingman [Wed, 4 Jul 2007 21:38:53 +0000 (23:38 +0200)]
[checkers] handle >512 sector size in readsector0

I encountered a problem with the sg_read() routine in readsector0.c
while testing an InfiniBand target having 4096 byte sectors.  The
sg_read() routine assumes that sectors are 512 bytes long.

A patch for the problem follows.

Signed-off-by: Christophe Varoqui <>
14 years ago[kpartx] kpartx large file support
Szabolcs Szakacsits [Tue, 3 Jul 2007 21:10:54 +0000 (23:10 +0200)]
[kpartx] kpartx large file support

Apparently -D_LARGEFILE64_SOURCE doesn't always work:

failed to stat() 40GB-disk.img: Value too large for defined data type

Potential fix what we're using everywhere on many platforms with no
reported LFS problems for 5 years:

14 years ago[Prioritizer] HDS update
Matthias Rudolph [Wed, 27 Jun 2007 21:35:52 +0000 (23:35 +0200)]
[Prioritizer] HDS update

o queue_if_no_path in hwtable.c
o tur instead of readsector0 in hwtable.c
o get prio with device name instead of major:minor in hwtable.c and pp_hds_modular.c

Signed-off-by: Christophe Varoqui <>
14 years agoEase installation of unstripped binaries
Guido Guenther [Tue, 19 Jun 2007 07:15:19 +0000 (09:15 +0200)]
Ease installation of unstripped binaries

Introduce INSTALL_PROGRAM for installing binaries, so that:

make install INSTALL_PROGRAM=install

doesn't stip binaries on installation. The default is to still strip
binaries. Can be very handy for debugging builds.

Signed-off-by: Guido Guenther <>
14 years agomove kpartx_id to /lib/udev
Guido Guenther [Sat, 16 Jun 2007 18:07:15 +0000 (20:07 +0200)]
move kpartx_id to /lib/udev

14 years agoCall /lib/udev/scsi_id instead of /sbin/scsi_id
Guido Guenther [Sat, 16 Jun 2007 18:07:14 +0000 (20:07 +0200)]
Call /lib/udev/scsi_id instead of /sbin/scsi_id

14 years ago[kpartx] remove bashisms from kpartx_id
Guido Guenther [Mon, 18 Jun 2007 23:19:10 +0000 (01:19 +0200)]
[kpartx] remove bashisms from kpartx_id

14 years ago[libmultipath] care for read-only alias file
Benjamin Marzinski [Mon, 18 Jun 2007 23:05:28 +0000 (01:05 +0200)]
[libmultipath] care for read-only alias file

On bootup, the bindings file in can't be written to.
This was causing multipath to not check it for aliases.
Now, it the bindings file is on a read-only filesystem,
it will be opened read-only.

14 years ago[libchecker] restore synchronous checker operation to async-capable checkers
Christophe Varoqui [Mon, 18 Jun 2007 22:49:36 +0000 (00:49 +0200)]
[libchecker] restore synchronous checker operation to async-capable checkers

Add a "sync" flag the struct checker to inform the checker the caller wants a synchronous or asynchronous answer to path status request.

Default value is "synchronous" to kept legacy code unchanged.

Set async mode in the daemon checker loop.

14 years ago[libcheckers] async path checking in the framework
Christophe Varoqui [Thu, 14 Jun 2007 23:12:40 +0000 (01:12 +0200)]
[libcheckers] async path checking in the framework

The directio path checker was recently moved to aio API, but the behaviour is still synchronous : io_getevents() blocks until (long) timeout expires.

Truely asynchronous behaviour imposes to
o lower the io_getevents timeout to mininum
o treat a new "pending" checker return status in the daemon (reschedule the checker early for a new io_getevents until the "long" timeout expires)

This patch explores this. This approach has the nice effect to behave well with still-synchronous checker. The daemon should see no regression. But multipath, which assumes synchronous path checking, is for now broken ... to be repaired.

Please comment abundantly this approach, before I start moving ahead.

14 years ago[libcheckers] use async I/O for directio checker
Hannes Reinecke [Tue, 12 Jun 2007 14:25:55 +0000 (16:25 +0200)]
[libcheckers] use async I/O for directio checker

The directio checker will block until the request is returned.
We should rather use async I/O to guarantee that the checker
will return after a certain time so as not to stall the entire

Signed-off-by: Stefan Bader <>
Signed-off-by: Hannes Reinecke <>
Signed-off-by: Christophe Varoqui <>
14 years ago[build] exclude hidden dirs from the build candidates
Guido Günther [Sun, 10 Jun 2007 22:05:16 +0000 (00:05 +0200)]
[build] exclude hidden dirs from the build candidates

make sure we don't try to build in .svn, .pc, .git or other SCM metadata

Guido Günther <>

14 years ago[libmultipath] fix debugging macro
Christophe Varoqui [Sat, 9 Jun 2007 16:37:04 +0000 (18:37 +0200)]
[libmultipath] fix debugging macro

Minor cleanup: let the macro do something useful when DEBUG is defined

Signed-off-by: Guido Guenther <>
14 years ago[multipathd] Fix segfault on disappearing paths
Christophe Varoqui [Sat, 9 Jun 2007 16:35:09 +0000 (18:35 +0200)]
[multipathd] Fix segfault on disappearing paths

The path might already be gone when we process the udev event, in this case
sysfs_device_get return NULL:

Jun 09 16:56:06 | ID_FS_LABEL=
Jun 09 16:56:06 | ID_FS_LABEL_SAFE=
Jun 09 16:56:06 | DEVLINKS=/dev/disk/by-id/scsi-1494554000000000000000000000000010000069d0000000d /dev/disk/by-path/ip- /dev/disk/by-uuid/c8db60a3-7795-45cd-8369-a0f9ee876032
Jun 09 16:56:06 | DEVNAME=/dev/sda
open '/block/sda'
stat '/sys/block/sda' failed: No such file or directory
Segmentation fault (core dumped)

Signed-off-by: Guido Guenther <>
14 years ago[kpartx] assorted build warning fixes
Christophe Varoqui [Thu, 7 Jun 2007 21:18:25 +0000 (23:18 +0200)]
[kpartx] assorted build warning fixes

o dm_task_get_uuid(dmt) returns a const char, but we used a simple char
o remove unused int variable in kpartx.c

14 years ago[kpartx] Add handling for SUN partition tables
Hannes Reinecke [Mon, 21 May 2007 08:39:24 +0000 (10:39 +0200)]
[kpartx] Add handling for SUN partition tables

Not that I've come across one of these disks, but it's a nice testbed for
the stacked partition handling. And might even be useful at one point.

Signed-off-by: Hannes Reinecke <>
14 years ago[kpartx] Update BSD slice handling
Hannes Reinecke [Mon, 21 May 2007 08:37:35 +0000 (10:37 +0200)]
[kpartx] Update BSD slice handling

Now that we have the logic to stack dm-tables for partitions we can
handle BSD 'c' slices (which span the entire disk) properly.

Signed-off-by: Hannes Reinecke <>
14 years ago[kpartx] Update extended partition handling
Hannes Reinecke [Mon, 21 May 2007 08:35:40 +0000 (10:35 +0200)]
[kpartx] Update extended partition handling

Currently we don't handle extended partitions at all.
This patch implements a proper handling for extended partitions so that we
first create the dm device for the extended partitions and then the logical
partitions as dm devices on top of the device for the extended partition.

Signed-off-by: Hannes Reinecke <>
14 years ago[libmultipath] Fix segfault, when the syfs attribute doesn't exist
Christophe Varoqui [Thu, 7 Jun 2007 20:39:45 +0000 (22:39 +0200)]
[libmultipath] Fix segfault, when the syfs attribute doesn't exist

open '/class/fc_transport/target7:0:0'/'node_name'
new uncached attribute '/sys/class/fc_transport/target7:0:0/node_name'
add to cache '/sys/class/fc_transport/target7:0:0/node_name'
stat '/sys/class/fc_transport/target7:0:0/node_name' failed: No such file or directory

This would allocate no space for attr->value but and the next lookup tries to
dereference a NULL pointer.

Signed-off-by: Guido Guenther <>
14 years ago[libmultipath] Remove libsysfs
Christophe Varoqui [Thu, 7 Jun 2007 20:32:50 +0000 (22:32 +0200)]
[libmultipath] Remove libsysfs

libsysfs is deprecated and doesn't work with recent kernels.
Copied over stuff from udev and implemented our own sysfs handling.
Much saner now.

Signed-off-by: Hannes Reinecke <>
Signed-off-by: Guido Guenther <>
14 years ago[libmultipath] lower libdevmapper version expectation to 1.02.08
Christophe Varoqui [Tue, 5 Jun 2007 23:21:28 +0000 (01:21 +0200)]
[libmultipath] lower libdevmapper version expectation to 1.02.08

In fact, I guess it could be lowered again since the Makefile
detects features available in the lib (no_flush for example).

Feel free to make me lower it again if needed.

14 years ago[libmultipath] scalability fix for devt2devname()
Christophe Varoqui [Tue, 5 Jun 2007 23:17:54 +0000 (01:17 +0200)]
[libmultipath] scalability fix for devt2devname()

Move from the sysfs /block/*/dev nodes walking in search of maj:min
to a single file walking (/proc/partitions)

Based on idea and initial implementation from Hannes Reinecke, Suse.

14 years ago[udev] rules files for event proxying and kpartx split (2)
Christophe Varoqui [Tue, 5 Jun 2007 21:50:20 +0000 (23:50 +0200)]
[udev] rules files for event proxying and kpartx split (2)

So that multipathd can use the udev-provided socket for event listening
and kpartx can have a truly independent udev setup (think dmraid without
multipath case).

Hannes Reinecke, Suse.

14 years ago[udev] rules files for event proxying and kpartx split
Christophe Varoqui [Mon, 4 Jun 2007 21:41:24 +0000 (23:41 +0200)]
[udev] rules files for event proxying and kpartx split

So that multipathd can use the udev-provided socket for event listening
and kpartx can have a truly independent udev setup (think dmraid without
multipath case).

Hannes Reinecke, Suse.

14 years ago[multipathd] Use udev socket as source of events instead of Netlink socket
Christophe Varoqui [Mon, 4 Jun 2007 21:37:39 +0000 (23:37 +0200)]
[multipathd] Use udev socket as source of events instead of Netlink socket

When available. Keeps Netlink as a fallback.
Proper udev setup is required for this to work.
Patch to install such a setup follow.

Hannes Reinecke, Suse.

14 years ago[multipath] make install error on multipath.conf.5
Christophe Varoqui [Mon, 4 Jun 2007 21:32:36 +0000 (23:32 +0200)]
[multipath] make install error on multipath.conf.5

multipath.conf.5 was not compressed in the install target of the Makefile.
Do that, and move the gzips in the prepare target to factorize a bit too.

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 <>