platform/upstream/multipath-tools.git
18 years ago[multipathd] don't care interpreting "\n" as a cli command
Christophe Varoqui [Fri, 11 Nov 2005 12:48:42 +0000 (13:48 +0100)]
[multipathd] don't care interpreting "\n" as a cli command

CR epileptics like me are happier now.

multipathd>
multipathd>
multipathd>
multipathd>
multipathd>
multipathd>
multipathd>

18 years ago[multipathd] small fixes
Christophe Varoqui [Fri, 11 Nov 2005 09:39:05 +0000 (10:39 +0100)]
[multipathd] small fixes

There was a spot where multipathd's reply length forgot to count the NULL,
and I noticed that the way domap go rewritten, the dry-run option doesn't
print out the maps.

This patch fixes both.

Benjamin Marzinski, Redhat

18 years ago[multipathd] improved daemon setup
Christophe Varoqui [Wed, 9 Nov 2005 22:45:30 +0000 (23:45 +0100)]
[multipathd] improved daemon setup

If you log into a machine and start the multipathd daemon, you will hang on
logout, because multipathd doesn't fully detach itself from the calling
processes. Also, occasionally the device mapper library functions will
print
error messages to stdout.  These appear in the terminal that was used to
start multipathd, if it was started by hand (not by init scripts).  To fix
these
I added some code to fully daemonize multipathd, and redirect stdout and
stderr to /dev/console.

Benjamin Marzinski, Redhat

18 years ago[multipathd] stop switch to best PG when no PG is active
Christophe Varoqui [Fri, 4 Nov 2005 09:37:03 +0000 (10:37 +0100)]
[multipathd] stop switch to best PG when no PG is active

To do that I added struct multipath:bestpg to store
switchgroup:select_path_group() result.

struct multipath:nextpg now only store current DM setting.

So the test is now (bestpg != nextpg) to trigger a switchgroup.

18 years ago[libmultipath] move the async logger in libmultipath, part2
Christophe Varoqui [Fri, 4 Nov 2005 09:06:06 +0000 (10:06 +0100)]
[libmultipath] move the async logger in libmultipath, part2

Remove old files

18 years ago[libmultipath] move the async logger in libmultipath
Christophe Varoqui [Fri, 4 Nov 2005 08:17:33 +0000 (09:17 +0100)]
[libmultipath] move the async logger in libmultipath

Brian Wong, Pillardata, suggested and implemented this to avoid
cross dependencies.

18 years ago[multipathd] fix failback
Christophe Varoqui [Thu, 3 Nov 2005 21:41:46 +0000 (22:41 +0100)]
[multipathd] fix failback

Refresh mpp->hwe before select_failback() in setup_multipath().
Proposed by Lan Tran, IBM, and Edward Goggin, EMC.

18 years ago[multipathd] link to ncurses instead of curses
Christophe Varoqui [Tue, 1 Nov 2005 07:56:02 +0000 (08:56 +0100)]
[multipathd] link to ncurses instead of curses

Brian Wong, Pillardata, reports SLES does not package libcurses.
He suggested linking to ncurses instead. Done and verified on
Debian Sarge and RHEL4u0.

18 years ago[multipathd] "add map" cli command to accept map names as param
Christophe Varoqui [Mon, 31 Oct 2005 11:12:05 +0000 (12:12 +0100)]
[multipathd] "add map" cli command to accept map names as param

18 years ago[multipathd] "del map" cli command to acces map names as param
Christophe Varoqui [Mon, 31 Oct 2005 11:06:39 +0000 (12:06 +0100)]
[multipathd] "del map" cli command to acces map names as param

18 years ago[libmultipath] embed a struct dm_info pointer in struct multipath
Christophe Varoqui [Mon, 31 Oct 2005 10:44:03 +0000 (11:44 +0100)]
[libmultipath] embed a struct dm_info pointer in struct multipath

- replace dm_get_state() by a generic dm_get_info()
- move mpp->minor users to mpp->dmi->minor
- move mpp->dmstate users to mpp->dmi->suspended
- cli handlers for resume/suspend map now trigger dm_get_info()
  instead of playing directly with mpp->dmstate : more reliable

18 years ago[libmultipath] rename dm_reinstate() to dm_reinstate_path()
Christophe Varoqui [Mon, 31 Oct 2005 08:54:31 +0000 (09:54 +0100)]
[libmultipath] rename dm_reinstate() to dm_reinstate_path()

More explicit, and in line with dm_fail_path()

18 years ago[libmultipath] devmapper.c messaging functions consolidation
Christophe Varoqui [Mon, 31 Oct 2005 08:51:01 +0000 (09:51 +0100)]
[libmultipath] devmapper.c messaging functions consolidation

Add dm_message(), and use it at a backend for adhoc messaging fns.

18 years ago[libmultipath] rename find_mp() to find_mp_by_alias()
Christophe Varoqui [Mon, 31 Oct 2005 08:31:35 +0000 (09:31 +0100)]
[libmultipath] rename find_mp() to find_mp_by_alias()

More coherent with find_mp_by_wwid() and find_mp_by_minor()

18 years ago[multipathd] add "reinstate/fail path $path" CLI commands
Christophe Varoqui [Mon, 31 Oct 2005 08:16:06 +0000 (09:16 +0100)]
[multipathd] add "reinstate/fail path $path" CLI commands

18 years ago[libmultipath] add vector_del_slot() checks
Christophe Varoqui [Sat, 29 Oct 2005 14:26:51 +0000 (16:26 +0200)]
[libmultipath] add vector_del_slot() checks

Verify that the slot number we where asked to delete is not "< 0" nor
"> VECTOR_SIZE()".

18 years ago[multipathd] handle map dmstate reporting through "show maps" CLI cmd
Christophe Varoqui [Fri, 28 Oct 2005 22:28:43 +0000 (00:28 +0200)]
[multipathd] handle map dmstate reporting through "show maps" CLI cmd

- fetch dmstate a startup
- keep map state in sync in suspend/resume cli handlers
- add the print.[ch] bits

18 years ago[multipathd] add "suspend/resume map" cli commands
Christophe Varoqui [Fri, 28 Oct 2005 21:46:30 +0000 (23:46 +0200)]
[multipathd] add "suspend/resume map" cli commands

Suggested by Narasimha Doraswamy, HP and others

18 years ago[multipath] fix early exit for blacklisted scope-limiting-device
Christophe Varoqui [Fri, 28 Oct 2005 13:48:57 +0000 (15:48 +0200)]
[multipath] fix early exit for blacklisted scope-limiting-device

we tried to compare conf->dev to the blacklist entries, but entries are
usually of the {sda,sdb,...} form and conf->dev of the /dev/sda form.
No chance of succes !

This was noticed following a related behaviour reported by Maxim Kozover

xa-s05:~/scm/multipath-tools-0.4.6# multipath/multipath /dev/ram0 -v3
ram0 blacklisted

... now that early enough.

18 years ago[multipath] empty path uid is not a valid response from get_refwwid()
Christophe Varoqui [Fri, 28 Oct 2005 13:11:33 +0000 (15:11 +0200)]
[multipath] empty path uid is not a valid response from get_refwwid()

Maxim Kozover noted that 'multipath /dev/fd0' does not limit the scope
as expected. One of the reason is that get_refwwid happily returns blank
refwwid. Make it clear that it's not a valid scope.

18 years ago[multipath] path list printing tweaks
Christophe Varoqui [Fri, 28 Oct 2005 12:57:21 +0000 (14:57 +0200)]
[multipath] path list printing tweaks

Don't print headers when the list is empty

18 years ago[multipathd] don't print headers when there is nothing to list
Christophe Varoqui [Fri, 28 Oct 2005 08:44:03 +0000 (10:44 +0200)]
[multipathd] don't print headers when there is nothing to list

18 years ago[multipathd] fix braino in e9e67ad4fe0837f5946b1c29c9c7b8da259955d5
Christophe Varoqui [Fri, 28 Oct 2005 08:18:59 +0000 (10:18 +0200)]
[multipathd] fix braino in e9e67ad4fe0837f5946b1c29c9c7b8da259955d5

18 years ago[multipathd] more useful error message in setup_multipath() error path
Christophe Varoqui [Fri, 28 Oct 2005 08:12:58 +0000 (10:12 +0200)]
[multipathd] more useful error message in setup_multipath() error path

18 years ago[multipathd] fix stop_waiter_thread() segv
Christophe Varoqui [Fri, 28 Oct 2005 08:05:26 +0000 (10:05 +0200)]
[multipathd] fix stop_waiter_thread() segv

This happened when asked to shut a waiter for a map with NULL mpp->waiter.
A code path from dm_get_maps -> setup_multipath (fails) can trigger that.

18 years ago[multipathd] remove pthread_cancel logic to stop waiter a thread
Christophe Varoqui [Fri, 28 Oct 2005 07:21:08 +0000 (09:21 +0200)]
[multipathd] remove pthread_cancel logic to stop waiter a thread

Rely only on the ioctl interruption through a signal, proposed by
Ben. Note we never actually used this code before, my bad.

18 years ago[multipathd] dmt leak in waitevent() error path
Christophe Varoqui [Thu, 27 Oct 2005 10:35:27 +0000 (12:35 +0200)]
[multipathd] dmt leak in waitevent() error path

... and nullify some pointers after free.

18 years ago[libmultipath] fix regfree fix in config.c:find_hwe()
Christophe Varoqui [Thu, 27 Oct 2005 09:57:08 +0000 (11:57 +0200)]
[libmultipath] fix regfree fix in config.c:find_hwe()

18 years ago[libmultipath] fix leak in regexp usage
Christophe Varoqui [Thu, 27 Oct 2005 09:31:29 +0000 (11:31 +0200)]
[libmultipath] fix leak in regexp usage

Valgrind learned me the existence of regfree() :/

18 years ago[libmultipath] plug leaks with libsysfs usage in discovery.c
Christophe Varoqui [Thu, 27 Oct 2005 09:08:31 +0000 (11:08 +0200)]
[libmultipath] plug leaks with libsysfs usage in discovery.c

- forgot to sysfs_close_device() in "bus" fetching
- leaked a sysfs_dir on error path

18 years ago[libmultipath] remove exit() 1 : discovery.c
Christophe Varoqui [Thu, 27 Oct 2005 08:42:46 +0000 (10:42 +0200)]
[libmultipath] remove exit() 1 : discovery.c

18 years ago[libmultipath] remove exit() 1 : pgpolicies.c
Christophe Varoqui [Thu, 27 Oct 2005 08:14:03 +0000 (10:14 +0200)]
[libmultipath] remove exit() 1 : pgpolicies.c

18 years ago[libmultipath] remove exit() 1 : uevent.c
Christophe Varoqui [Thu, 27 Oct 2005 07:56:58 +0000 (09:56 +0200)]
[libmultipath] remove exit() 1 : uevent.c

18 years ago[libmultipath] User friendly names enhancements
Christophe Varoqui [Thu, 27 Oct 2005 07:48:41 +0000 (09:48 +0200)]
[libmultipath] User friendly names enhancements

- add a '-b' flag to multipath(8) to let user specify the bindings file
  location
- move from "non blocking lock plus retrys" to "blocking lock plus timeout"

Benjamin Marzinski, Redhat

18 years ago[libmultipath] maps printing tweaking++
Christophe Varoqui [Wed, 26 Oct 2005 20:50:36 +0000 (22:50 +0200)]
[libmultipath] maps printing tweaking++

Add two new wildcards :

* %Q : queueing policy changer countdown (no_path_retry)
* %n : number of active paths

Output is like that :

xa-s05:~/scm/multipath-tools-0.4.6# multipathd -k"show maps"
name   sysfs failback         queueing paths
mpath0 dm-0  XXXXXXXX.. 17/20 5 chk    2
mpath1 dm-1  XXXXXXX... 7/10  5 chk    2

18 years ago[multipathd] fix no_path_retry keyword handling in multipathd
Christophe Varoqui [Wed, 26 Oct 2005 20:47:55 +0000 (22:47 +0200)]
[multipathd] fix no_path_retry keyword handling in multipathd

The no_path_retry keyword can be set in a "device configlet", but
libmultipath/propsel.c:select_no_path_retry(mpp) uses mpp->hwe to get at
it. But we didn't care setting mpp->hwe. Do that now.

18 years ago[multipath] scope limiting fixes
Christophe Varoqui [Wed, 26 Oct 2005 10:12:35 +0000 (12:12 +0200)]
[multipath] scope limiting fixes

- move get_refwwid after load_cache
- fix broken wwid matching in filter_pathvec

18 years ago[multipath] devt2devname() mis-ordered parameters
Christophe Varoqui [Wed, 26 Oct 2005 09:32:25 +0000 (11:32 +0200)]
[multipath] devt2devname() mis-ordered parameters

This error caused scope limiting to major:minor not to work as expected.

18 years ago[multipath] get_refwwid() tweaking
Christophe Varoqui [Wed, 26 Oct 2005 09:07:54 +0000 (11:07 +0200)]
[multipath] get_refwwid() tweaking

- don't recode strdup() everywhere
- get_user_friendly_wwid() does allocate, not need to strdup() again.
  This was a leak proper

18 years ago[multipath] allow scope limiting to a "user_friendly name"
Christophe Varoqui [Wed, 26 Oct 2005 08:56:24 +0000 (10:56 +0200)]
[multipath] allow scope limiting to a "user_friendly name"

Uses the new lookup in libmultipath/alias.[ch]
Also move the get_refwwid upper in the code.

18 years ago[libmultipath] add a alias to wwid lookup to the binding subsystem
Christophe Varoqui [Wed, 26 Oct 2005 08:54:09 +0000 (10:54 +0200)]
[libmultipath] add a alias to wwid lookup to the binding subsystem

Useful for multipath(8) scope limiting to an alias.

18 years ago[multipath] don't reload map if features differs and no_path_retry is set
Christophe Varoqui [Tue, 25 Oct 2005 14:39:37 +0000 (16:39 +0200)]
[multipath] don't reload map if features differs and no_path_retry is set

Indeed, setting no_path_retry delegate the "features" handling to the
daemon. multipath(8) loses the privilege to play with this field after
the map is initially loaded.

18 years ago[libmultipath] add mpath[0..n] feature forgoten files
Christophe Varoqui [Tue, 25 Oct 2005 14:23:33 +0000 (16:23 +0200)]
[libmultipath] add mpath[0..n] feature forgoten files

/libmultipath/alias.[ch] were forgoten when the patch was commited.

18 years ago[multipathd] add 'show maps' header
Christophe Varoqui [Tue, 25 Oct 2005 14:12:56 +0000 (16:12 +0200)]
[multipathd] add 'show maps' header

18 years ago[libmultipath] print tweaks++
Christophe Varoqui [Tue, 25 Oct 2005 13:44:49 +0000 (15:44 +0200)]
[libmultipath] print tweaks++

Introduce a PRINT_PROGRESS macro.
Factorize use in snprint_{path,map}

18 years ago[libmultipath] printing tweaking
Christophe Varoqui [Tue, 25 Oct 2005 13:29:09 +0000 (15:29 +0200)]
[libmultipath] printing tweaking

- unchecked prio reported as '#'
- unchecked dm path state reported as '[undef]'
- priority heading is know called 'pri' instead of 'prio'
  (coherent with tools like ps, top, etc ...)

18 years ago[all] User friendly names patch
Christophe Varoqui [Tue, 25 Oct 2005 13:22:12 +0000 (15:22 +0200)]
[all] User friendly names patch

This is a patch to add the option of more user friendly names for the
multipath maps, in the form of mpath<n>.  It adds a configuration option
"user_friendly_names". If set, it will cause multipath to check a bindings
file for the names. The bindings file (/var/lib/multipath/bindings) has
alias to wwid mappings. If multipath finds its wwid in the file, it uses
the associated alias. If not, it creates a new alias, and adds the binding
to the bindings file. If the config option is not set, multipath defaults
to it's regular behavior. Specific aliases in /etc/multipath.conf override
this behavior.

Benjamin Marzinski, Redhat

18 years ago[libmultipath] printing enhancements and fixes
Christophe Varoqui [Mon, 24 Oct 2005 13:35:54 +0000 (15:35 +0200)]
[libmultipath] printing enhancements and fixes

- [enh] align path uuid
- [fix] PAD() macro could overflow
- [enh] add line header for paths (print.c:snprint_path_header)
- [enh] align pathvec dumps in 'multipath -v3' and print header
- [enh] remove heading and trailing white line in multipathd cli output
- [enh] print header in cli's 'show paths' mode

18 years ago[libmultipath] handle no_path_retry keyword in hardware entries
Christophe Varoqui [Mon, 24 Oct 2005 08:09:03 +0000 (10:09 +0200)]
[libmultipath] handle no_path_retry keyword in hardware entries

Now this keyword can be set in the default, multipath and device
config blocks.

18 years ago[multipath] claimed path handling overall
Christophe Varoqui [Sun, 23 Oct 2005 20:51:40 +0000 (22:51 +0200)]
[multipath] claimed path handling overall

Detecting path claims during the discovery, and all paths, exposes
us to open(..., O_EXCL) collisions. Paths could appear as claimed when
they are not actually.

Visible effect is, during a udev add storm (driver loading), rarely,
a map would not appear when it should have. This was reported by
Maxim Kozover.

This patch remove all pp->claimed usage and allows DM_DEVICE_CREATE to
fail when loading a map with claimed paths (with libdevmapper logging
shut). But cleanup the mess on error.

18 years ago[libmultipath] message when a map can't be flush because in use
Christophe Varoqui [Sun, 23 Oct 2005 18:51:47 +0000 (20:51 +0200)]
[libmultipath] message when a map can't be flush because in use

18 years ago[multipath] Fix -F appearing twice in the multipath -h output
Christophe Varoqui [Fri, 21 Oct 2005 09:49:19 +0000 (11:49 +0200)]
[multipath] Fix -F appearing twice in the multipath -h output

multipath -h shows 2 options using "-F", where only one of them should be using
-F and another -f. Redhat Bugzilla #171366.

B. Nocera, Redhat

18 years ago[libmultipath] some more snprint_path() beautifying
Christophe Varoqui [Thu, 20 Oct 2005 21:27:12 +0000 (23:27 +0200)]
[libmultipath] some more snprint_path() beautifying

- align priority values (too bad log10 needs -lm build flag)
- remove a redundant trailing whitespace after #:#:#:#
- pad states
- scale completion bar to 10 chars

18 years ago[kpartx] partition type check was flawed
Christophe Varoqui [Thu, 20 Oct 2005 13:28:45 +0000 (15:28 +0200)]
[kpartx] partition type check was flawed

Lars Soltau, IBM

18 years ago[config] rr_min_io typo fix
Christophe Varoqui [Thu, 20 Oct 2005 13:24:05 +0000 (15:24 +0200)]
[config] rr_min_io typo fix

Should closes RH Bugzilla #171286

18 years ago[multipath] proper execution serializing
Christophe Varoqui [Wed, 19 Oct 2005 13:12:52 +0000 (15:12 +0200)]
[multipath] proper execution serializing

Multiple multipath(8) execs can race with udev storm.

We can simulate this with the following :
"multipath -F; /sbin/multipath 8:16 & /sbin/multipath 8:32"

Problem arise when two runs are about to create the same map.
One will fail, leaving us with a choice : abord or retry.

This patch implements the retry policy, as we have no way to tell
if the race winner was the one with outdated info or not.

Also :
- beautifies main.c:select_action() messages.
- isolate a nice configure_multipath() entry point fonction out of main()

18 years ago[multipath] drop a notice upon wwid change causing a map remove/create
Christophe Varoqui [Wed, 19 Oct 2005 08:29:53 +0000 (10:29 +0200)]
[multipath] drop a notice upon wwid change causing a map remove/create

18 years ago[multipath] fix a double free error
Christophe Varoqui [Tue, 18 Oct 2005 10:01:02 +0000 (12:01 +0200)]
[multipath] fix a double free error

"multipath $FLAGS $ALIAS" code path lead to a double free :
1) get_refwwid did a lookup in mptable and returned mpe->alias as the
   refwwid
2) in the exit path, we freed refwwid
3) then free_config()->free_mptable()->free_mpe() freed mpe->alias at the
   same address

So return strdup(mpe->alias) instead.

18 years ago[multipathd] diff friendly / cosmetic cli command defines
Christophe Varoqui [Tue, 18 Oct 2005 09:28:44 +0000 (11:28 +0200)]
[multipathd] diff friendly / cosmetic cli command defines

18 years ago[priority] remove pp_random shellism
Christophe Varoqui [Tue, 18 Oct 2005 08:52:37 +0000 (10:52 +0200)]
[priority] remove pp_random shellism

18 years ago[build] strip at install time, not build time anymore
Christophe Varoqui [Tue, 18 Oct 2005 08:12:16 +0000 (10:12 +0200)]
[build] strip at install time, not build time anymore

So that we can 'gdb $BUILD_DIR/.../$EXEC'

18 years ago[multipathd] multipathd segfault fix in main.c:update_queue_mode_del_path()
Christophe Varoqui [Mon, 17 Oct 2005 14:43:00 +0000 (16:43 +0200)]
[multipathd] multipathd segfault fix in main.c:update_queue_mode_del_path()

Dereferencing mpp->pg->pp->mpp is not that smart.
Use mpp directly here.

May be main.c:update_queue_mode_del_path() should check mpp rather than
faulting ... Kiyoshi Ueda ?

18 years ago[libmultipath] mostly cosmetic
Christophe Varoqui [Mon, 17 Oct 2005 13:23:40 +0000 (15:23 +0200)]
[libmultipath] mostly cosmetic

1) harden discovery.c:path_discovery() sysfs loop
2) remove redundant check in discovery.c:apply_format()

18 years ago[multipathd] braino fixes
Christophe Varoqui [Mon, 17 Oct 2005 13:21:38 +0000 (15:21 +0200)]
[multipathd] braino fixes

1) revoke more info upon path orphaning
2) dump_pathvec() to return negative value when reply is empty
3) ux_trigger() not to append a "ok" when handler return value is < 0

1) fixes an occasional daemon segfault when cycling add/remove paths
2+3) makes for multipath not receiving "ok" as a cached pathvec :)

18 years ago[multipath] fix segfault upon '-ll' with empty map present
Christophe Varoqui [Fri, 14 Oct 2005 15:26:11 +0000 (17:26 +0200)]
[multipath] fix segfault upon '-ll' with empty map present

Noted by Maxim Kozover, regression testing squad

18 years ago[libmultipath] fix empty map flushing
Christophe Varoqui [Fri, 14 Oct 2005 15:17:02 +0000 (17:17 +0200)]
[libmultipath] fix empty map flushing

devmapper.c:dm_flush_map() should flush empty map, whatever the type the
caller asked it to limit to.

Noted by Maxim Kozover

18 years ago[multipath] '-l' should not print empty maps
Christophe Varoqui [Fri, 14 Oct 2005 15:12:50 +0000 (17:12 +0200)]
[multipath] '-l' should not print empty maps

Noted by Maxim "QA" Kozover :)

18 years ago[multipathd] invalidate path dmstate when orphaning
Christophe Varoqui [Fri, 14 Oct 2005 14:23:37 +0000 (16:23 +0200)]
[multipathd] invalidate path dmstate when orphaning

18 years ago[multipathd] close orphan path file descriptors
Christophe Varoqui [Fri, 14 Oct 2005 08:45:36 +0000 (10:45 +0200)]
[multipathd] close orphan path file descriptors

Maxim Kozover rightly reported :

"multipathd keeps the file /dev/sdx open, regardless if there's a
multipath-related map having that sdx device as a path or not.
It drops /dev/sdx only if the sdx device is removed.
What's bad is that this drop is not always successful and I think it's
not a right way to cope with the situation. Killing multipathd always
releases the descriptors.

Now when I (...) remove maps with multipath -f, the number of
multipathd threads changes accordingly. But it doesn't release
/dev/sdx devices. That means even after I did multipath -f for all
iSCSI devices and multipath -l output is empty, multipathd still has
those /dev/sdx files open and I can't unload iSCSI driver, cause it
has a non-zero usage count."

18 years ago[multipathd] retry_tick initialization/update fixes
Christophe Varoqui [Thu, 13 Oct 2005 08:21:54 +0000 (10:21 +0200)]
[multipathd] retry_tick initialization/update fixes

Fix some bugs of missing retry_tick initialization/update in multipathd.
o Initialization by wrong value in update_queue_mode_del_path.
o Missing status update in update_multipath for events from kernel.
o Missing re-initialization in reconfigure.

Kiyoshi Ueda, NEC

18 years ago[multipath] Extension of the "no_path_retry" scope to the multipath
Christophe Varoqui [Thu, 13 Oct 2005 08:20:21 +0000 (10:20 +0200)]
[multipath] Extension of the "no_path_retry" scope to the multipath

Kiyoshi Ueda, NEC

18 years ago[multipathd] fix off-by-1sec path check interval
Christophe Varoqui [Thu, 13 Oct 2005 08:07:44 +0000 (10:07 +0200)]
[multipathd] fix off-by-1sec path check interval

Current path check interval is 1 second longer than polling_interval
setting in multipath.conf.

This bug affects the "no_path_retry" option.
For example, if no_path_retry is set in 1, retry (== path check) will
not be launched in no-path situation.

18 years ago[mutipathd] fix off-by-1sec defered failback
Christophe Varoqui [Thu, 13 Oct 2005 08:06:26 +0000 (10:06 +0200)]
[mutipathd] fix off-by-1sec defered failback

Current delay time of defered failback is 1 second shorter than
"failback" setting in multipath.conf, because defered_failback_tick()
is called before sleep(1) in checkerloop().

Kiyoshi Ueda, NEC

18 years ago[multipath] "skip out of scope map" fix
Christophe Varoqui [Wed, 12 Oct 2005 14:24:18 +0000 (16:24 +0200)]
[multipath] "skip out of scope map" fix

The logic was accidentaly inverted in the last patch.
And now we drop the map from mpvec when "out of scope".

18 years ago[multipath] overzealous deadmap detection fix
Christophe Varoqui [Tue, 11 Oct 2005 10:36:45 +0000 (12:36 +0200)]
[multipath] overzealous deadmap detection fix

18 years ago[multipath] consider the presence of conflicting empty maps
Christophe Varoqui [Mon, 10 Oct 2005 13:28:15 +0000 (15:28 +0200)]
[multipath] consider the presence of conflicting empty maps

Drop the conflicting map, then create the new one.
The daemon catchs up through its uevent handlers.

18 years ago[config] undocument the feature keyword
Christophe Varoqui [Sat, 8 Oct 2005 09:58:06 +0000 (11:58 +0200)]
[config] undocument the feature keyword

Replaced by no_path_retry.

18 years ago[libmultipath] deprecate the default_foo config file options
Christophe Varoqui [Sat, 8 Oct 2005 09:53:31 +0000 (11:53 +0200)]
[libmultipath] deprecate the default_foo config file options

These are in the default{} configlet; the prefix was clearly redundant.
Keep the old keyword around for a smooth transition, but undocument them.

18 years ago[multipathd] switch on/off the queueing feature when oportune
Christophe Varoqui [Fri, 7 Oct 2005 22:45:55 +0000 (00:45 +0200)]
[multipathd] switch on/off the queueing feature when oportune

The following patch adds time-based retry feature in no-path situation
to multipathd.  Any comments are welcome.

This patch adds 'no_path_retry' option to multipathd.

o no_path_retry = "fail" is equal to 'fail_if_no_path'.
  (i.e. I/O to the no-path map will immediately fail.)

o no_path_retry = "queue" is equal to 'queue_if_no_path'.
  (i.e. I/O to the no-path map will be queued until any path comes up.)

o If no_path_retry = <n> where n is positive number,
  then multipathd will set queue_if_no_path to the map,
  and if the all paths are down, multipathd will turn the feature
  off to fail_if_no_path after the checker tries <n> times for each
  paths in the map.

Multipathd re-writes queue_if_no_path feature parameter in the map,
if this option is specified.  But by default, this patch doesn't
change current multipathd behaviour.
So this patch don't break any existing configuration.

Kiyoshi Ueda, NEC

18 years ago[multipath] remove uneeded map resume upon reload
Christophe Varoqui [Fri, 7 Oct 2005 09:27:02 +0000 (11:27 +0200)]
[multipath] remove uneeded map resume upon reload

This sliped in recently.

18 years ago[libmultipath] specify vendor/product as regular expressions
Christophe Varoqui [Wed, 5 Oct 2005 10:56:42 +0000 (12:56 +0200)]
[libmultipath] specify vendor/product as regular expressions

18 years ago[multipath] remove dead maps
Christophe Varoqui [Mon, 3 Oct 2005 15:46:24 +0000 (17:46 +0200)]
[multipath] remove dead maps

A map is considered dead, and thus removed from DM, when all its
constituent paths have disappeared from the system (ie sysfs).

When all paths fail, we keep the map, hoping some path can come back
up.

Flush will fail if the map is claimed (mount, ...), notify that.

This policy is rather safe, because :
- multipath is exec'ed only upon "add path events", so maps can magically
  disappear
- claimed maps cannot disappear

This map purge is clearly an interactive maintenance operation.

18 years ago[libmultipath] print a '-' as a placeholder for devname we can't resolve
Christophe Varoqui [Mon, 3 Oct 2005 13:05:02 +0000 (15:05 +0200)]
[libmultipath] print a '-' as a placeholder for devname we can't resolve

iet_lun0 (149455400000000000000000000000000d00600000b000000)
[size=67 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [enabled]
 \_ 15:0:0:1 sdb 8:16  [active]
 \_ 16:0:0:1 sdd 8:48  [active]
 \_ 17:0:0:1 sdh 8:112 [active]
 \_ #:#:#:#  -   8:144 [active]
             ^
     here ---+

18 years ago[multipath] nice clean up possible now that we store wwids as map uuids
Christophe Varoqui [Mon, 3 Oct 2005 12:45:46 +0000 (14:45 +0200)]
[multipath] nice clean up possible now that we store wwids as map uuids

Thanks again, Patrick.

18 years ago[libmultipath] fix segfault on empty maps in dm_type()
Christophe Varoqui [Mon, 3 Oct 2005 10:28:43 +0000 (12:28 +0200)]
[libmultipath] fix segfault on empty maps in dm_type()

Reported by Maxim Kozover

18 years ago[libmultipath] devmap status parser fix
Christophe Varoqui [Sun, 2 Oct 2005 12:05:42 +0000 (14:05 +0200)]
[libmultipath] devmap status parser fix

The status information from path selectors that apply to paths are
repeated for each path. Current code assumed this info appears
only once per path group.

Stefan Bader, IBM

18 years ago[multipath] *bad bad nasty* map reload code path
Christophe Varoqui [Fri, 30 Sep 2005 13:19:02 +0000 (15:19 +0200)]
[multipath] *bad bad nasty* map reload code path

* the uuid needs not be set for DM_DEVICE_RELOAD
* remove map upon map load/reload failure is *wrong* *wrong*
* "int op" superfluous

18 years ago[libmultipath] forgoten fd init in struct.c:alloc_path()
Christophe Varoqui [Fri, 30 Sep 2005 12:24:35 +0000 (14:24 +0200)]
[libmultipath] forgoten fd init in struct.c:alloc_path()

18 years ago[libmultipath] get_claimed() could try to close a negative file descriptor
Christophe Varoqui [Fri, 30 Sep 2005 12:12:47 +0000 (14:12 +0200)]
[libmultipath] get_claimed() could try to close a negative file descriptor

When open() failed for another reason than EBUSY.

18 years ago[libmultipath] 0 _is_ a valid file descriptor
Christophe Varoqui [Fri, 30 Sep 2005 11:40:28 +0000 (13:40 +0200)]
[libmultipath] 0 _is_ a valid file descriptor

Stefan Bader, IBM

18 years ago[multipath] rules fix
Christophe Varoqui [Fri, 30 Sep 2005 10:15:43 +0000 (12:15 +0200)]
[multipath] rules fix

/sbin doesn't seem to be in the PATH when udev execs dmsetup.
Use absolute paths then.

18 years ago[multipath] workaround for a dmsetup bug in multipath.rules
Christophe Varoqui [Fri, 30 Sep 2005 10:00:41 +0000 (12:00 +0200)]
[multipath] workaround for a dmsetup bug in multipath.rules

dmsetup -n flag does not suppress the heading, as the manual suggests
it should. Though --noheadings works, so use that instead.

18 years ago[multipath] don't exit if pathvec is empty after discovery
Christophe Varoqui [Fri, 30 Sep 2005 08:25:06 +0000 (10:25 +0200)]
[multipath] don't exit if pathvec is empty after discovery

When all path fail or are removed by operator, but the maps are still
present, expected behaviour is for "multipath -l" to work.

IOW outs something like :

xa-s05:~/scm/multipath-tools-0.4.6# multipath/multipath -l
149455400000000000000000002000000d00600000b000000 ()
[size=67 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [enabled]
 \_ 10:0:0:1 sdd 8:48 [active]

149455400000000000000000002000000d20600000b000000 ()
[size=33 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [enabled]
 \_ 10:0:0:2 sde 8:64 [active]

xa-s05:~/scm/multipath-tools-0.4.6# iscsiadm -m node --logout --record=0203b2
xa-s05:~/scm/multipath-tools-0.4.6# multipath/multipath -l
149455400000000000000000002000000d00600000b000000 ()
[size=67 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [enabled]
 \_ #:#:#:#   8:48 [active]

149455400000000000000000002000000d20600000b000000 ()
[size=33 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [enabled]
 \_ #:#:#:#   8:64 [active]

18 years ago[multipath] set devmap UUID to multipath WWID
Christophe Varoqui [Thu, 29 Sep 2005 22:14:03 +0000 (00:14 +0200)]
[multipath] set devmap UUID to multipath WWID

If you use aliases to rename the multipath devices to something sensible you
lose the WWIDs, this patch stores them as the device-mapper UUID and retrieves
them so they can be displayed using multipath -l.

Patrick Caulfield, Redhat.

18 years agoOnly use one loop to read all data.
Bastian Blank [Thu, 29 Sep 2005 13:06:34 +0000 (13:06 +0000)]
Only use one loop to read all data.

18 years agoDon' use unalligned pointers, this is undefined behaviour.
Bastian Blank [Thu, 29 Sep 2005 13:01:45 +0000 (13:01 +0000)]
Don' use unalligned pointers, this is undefined behaviour.

18 years agoUse endian.h and byteswap.h.
Bastian Blank [Thu, 29 Sep 2005 12:55:36 +0000 (12:55 +0000)]
Use endian.h and byteswap.h.

18 years ago[libmultipath] generic discovery.c:wait_for_file()
root [Wed, 28 Sep 2005 21:03:32 +0000 (23:03 +0200)]
[libmultipath] generic discovery.c:wait_for_file()

clearly state the wait for file (sysfs or device node) logic is needed
only for multipathd, because it races udev upon uevent broadcast.

for multipath(8), which is ran by udev *after* devnode creation,
wait_for_file() just returns "ok".

18 years ago[multipath] the multipath udev rule voids the blacklist logic
root [Wed, 28 Sep 2005 08:14:30 +0000 (10:14 +0200)]
[multipath] the multipath udev rule voids the blacklist logic

"%M:%m" moved to "%r/%k"
with the assumption already used that these nodes exist.

18 years ago[multipath] yet another unchecked devt2devname() return value
root [Wed, 28 Sep 2005 08:08:46 +0000 (10:08 +0200)]
[multipath] yet another unchecked devt2devname() return value

This one caused a multipath -ll with no cache loaded to wait for a
pathinfo(nul) to complete for a path discovered in the map but not
present anymore in sysfs.