Christophe Varoqui [Thu, 17 Nov 2005 13:39:13 +0000 (14:39 +0100)]
[multipathd] release libdevmapper ressources on exit path
Christophe Varoqui [Thu, 17 Nov 2005 13:31:38 +0000 (14:31 +0100)]
[build] add the netapp prioritizer in the spec file
Christophe Varoqui [Thu, 17 Nov 2005 13:29:06 +0000 (14:29 +0100)]
[libmultipath] split free_multipath_attributes() out of free_multipath()
Code factorization in update_multipath_strings()
From Edward Goggin, EMC, patch-chest
Christophe Varoqui [Thu, 17 Nov 2005 11:06:03 +0000 (12:06 +0100)]
[libmultipath] move pathcount() to libmultipath/structs.c
Edward Goggin proposed to move it.
Agreed, though I prefer to put it here.
Christophe Varoqui [Thu, 17 Nov 2005 10:51:15 +0000 (11:51 +0100)]
[libmultipath] store the pgpolicy function pointer in struct multipath
- setup the pointer in libmultipath/propsel.c:select_pgpolicy
- use in multipath/main.c:setup_map()
Edward Goggin, EMC, patch-chest
Christophe Varoqui [Thu, 17 Nov 2005 09:48:26 +0000 (10:48 +0100)]
[libmultipath] failback mode definition fix in hwtable
FAILBACK_* are negative.
Edward Goggin, EMC
Christophe Varoqui [Thu, 17 Nov 2005 09:43:30 +0000 (10:43 +0100)]
[libmultipath] disassemble_map to store undiscovered path in pathvec too
Edward Goggin, EMC
Christophe Varoqui [Thu, 17 Nov 2005 09:34:23 +0000 (10:34 +0100)]
[libmultipath] move assemble_map() in libmultipath/dmparser.c
Now it rests near its sister-function disassemble_map().
Edward Goggin, EMC
Christophe Varoqui [Wed, 16 Nov 2005 16:24:48 +0000 (17:24 +0100)]
[libmultipath] extend the scope of the "rr_min_io" keyword to hwe and mpe
Can now specify per device instance or device type rr repeat counts in
the config file.
Edward Goggin, EMC, and me.
Christophe Varoqui [Wed, 16 Nov 2005 15:26:10 +0000 (16:26 +0100)]
[libmultipath] don't re-select the getprio fn when not needed
The pp->getprio was used
1) to store the prioritizer function pointer
2) to determine if the prioritizer was already selected
But NULL is a valid value for already selected getprio.
Which causes uneeded re-selection.
So introduce a pp->getprio_selected flag to straight this out.
Edward Goggin, EMC
Christophe Varoqui [Wed, 16 Nov 2005 14:19:48 +0000 (15:19 +0100)]
[multipath] sysfs_get_bus() should return an int
Christophe Varoqui [Wed, 16 Nov 2005 09:49:20 +0000 (10:49 +0100)]
[multipathd] print "immediate" as failback val in "show maps" cli command
Edward Goggin, EMC
Christophe Varoqui [Wed, 16 Nov 2005 09:27:21 +0000 (10:27 +0100)]
[multipathd] find_mp_by_minor() fix
Do not refer to variable mpp before it is set.
Edward Goggin, EMC
Christophe Varoqui [Wed, 16 Nov 2005 09:23:28 +0000 (10:23 +0100)]
[multipathd] path group priority calculation fix
Used local variable to tally path group priority in select_path_group
since the current code uses an accumulative algorithm thereby increasing
the path groups priority every time this function is called.
Edward Goggin, EMC
Christophe Varoqui [Wed, 16 Nov 2005 09:14:58 +0000 (10:14 +0100)]
[multipathd] show maps/paths to grow its output buffer
Thus adapt to large setups needs : Up to or greater than a 8,500 byte
buffer to handle 140 paths spread over 35 maps.
Edward Goggin, EMC
Christophe Varoqui [Wed, 16 Nov 2005 08:57:04 +0000 (09:57 +0100)]
[multipathd] set the netlink uevent socket's rcv buf to 262,142
Doing so will help avoid dropping uevents during the time that the
listen pthread does not have a receive buffer posted.
Edward Goggin, EMC
Christophe Varoqui [Wed, 16 Nov 2005 08:43:38 +0000 (09:43 +0100)]
[multipathd] superfluous unlock() in uevent discard code path
Removed.
Found and fixed by Edward Goggin, EMC
Christophe Varoqui [Wed, 16 Nov 2005 08:29:44 +0000 (09:29 +0100)]
[multipathd] fix a segv in enable_group()
pp->mpp->pg should not be NULL when entering enable_group().
Failing update_multipath_strings() can lead to such a situation.
So check its return value and abord early.
Christophe Varoqui [Tue, 15 Nov 2005 14:38:48 +0000 (15:38 +0100)]
[multipath] fill in the wwid field for path discovered by the map parser
There is a false assumption in the involved code path :
- the devmap parser adds paths to the vector and fills only the dev_t field
- update_paths() fills the rest but assumes that the wwid is already set
by the parser. It could have, as the map uuid is available, but it did
not because we can't trust the map.
So teach update_paths() to refresh the wwid too.
Christophe Varoqui [Tue, 15 Nov 2005 09:52:55 +0000 (10:52 +0100)]
[priority] new NetApp prioritizer small fixes
- tame build warnings about uncasted string in strncmp and strlen
- add the FAILBACK_UNDEF default field in hwtable
Christophe Varoqui [Tue, 15 Nov 2005 09:43:40 +0000 (10:43 +0100)]
[priority] new NetApp prioritizer
Dave Wysochanski, NetApp
Christophe Varoqui [Tue, 15 Nov 2005 09:16:52 +0000 (10:16 +0100)]
[legal] seed the copyright headers
I tried to get it right from the first shot.
But experience showed it never works that way.
So please send corrections for inaccuracies and forgotten credits.
Regards,
cvaroqui
Christophe Varoqui [Sat, 12 Nov 2005 07:52:19 +0000 (08:52 +0100)]
[libmultipath] new hardware defaults
Pillardata hardware info submitted by Brian Wong.
Christophe Varoqui [Sat, 12 Nov 2005 00:09:18 +0000 (01:09 +0100)]
[multipathd] fix offline devices reported as active
multipathd(8) continues calling reinstate_path() in checkerloop(),
if multipathd(8) is started on the system which has multipath maps
including offline devices.
The reason is pp->checkfn() returns -1 for offline devices and
pp->state of these paths are 1.
(I'm using "echo offline > /sys/block/sd?/device/state" for the testing.)
As a result, multipathd(8) makes offline devices active state.
And this behavior also affects the no_path_retry feature, since
struct multipath.nr_active is incremented in reinstate_path().
The following patch fixes this problem.
If the return value from pp->checkfn is -1, the path isn't available.
So I think that we can ignore it.
Kiyoshi Ueda, NEC
Christophe Varoqui [Fri, 11 Nov 2005 23:14:30 +0000 (00:14 +0100)]
[build] fix the "rpm" make target
John Steinman reported "make rpm" was broken.
This is due to files disappearing and others spawning.
This patch bringd the spec file in sync with reality.
Christophe Varoqui [Fri, 11 Nov 2005 15:46:20 +0000 (16:46 +0100)]
[multipath] set version and date strings
Getting ready to release.
Christophe Varoqui [Fri, 11 Nov 2005 12:50:18 +0000 (13:50 +0100)]
[multipathd] remove daemonize() unused variable
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>
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
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
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.
Christophe Varoqui [Fri, 4 Nov 2005 09:06:06 +0000 (10:06 +0100)]
[libmultipath] move the async logger in libmultipath, part2
Remove old files
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.
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.
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.
Christophe Varoqui [Mon, 31 Oct 2005 11:12:05 +0000 (12:12 +0100)]
[multipathd] "add map" cli command to accept 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
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
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()
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.
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()
Christophe Varoqui [Mon, 31 Oct 2005 08:16:06 +0000 (09:16 +0100)]
[multipathd] add "reinstate/fail path $path" CLI commands
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()".
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
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
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.
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.
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
Christophe Varoqui [Fri, 28 Oct 2005 08:44:03 +0000 (10:44 +0200)]
[multipathd] don't print headers when there is nothing to list
Christophe Varoqui [Fri, 28 Oct 2005 08:18:59 +0000 (10:18 +0200)]
Christophe Varoqui [Fri, 28 Oct 2005 08:12:58 +0000 (10:12 +0200)]
[multipathd] more useful error message in setup_multipath() error path
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.
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.
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.
Christophe Varoqui [Thu, 27 Oct 2005 09:57:08 +0000 (11:57 +0200)]
[libmultipath] fix regfree fix in config.c:find_hwe()
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() :/
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
Christophe Varoqui [Thu, 27 Oct 2005 08:42:46 +0000 (10:42 +0200)]
[libmultipath] remove exit() 1 : discovery.c
Christophe Varoqui [Thu, 27 Oct 2005 08:14:03 +0000 (10:14 +0200)]
[libmultipath] remove exit() 1 : pgpolicies.c
Christophe Varoqui [Thu, 27 Oct 2005 07:56:58 +0000 (09:56 +0200)]
[libmultipath] remove exit() 1 : uevent.c
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
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
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.
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
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.
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
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.
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.
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.
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.
Christophe Varoqui [Tue, 25 Oct 2005 14:12:56 +0000 (16:12 +0200)]
[multipathd] add 'show maps' header
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}
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 ...)
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
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
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.
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.
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
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
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
Christophe Varoqui [Thu, 20 Oct 2005 13:28:45 +0000 (15:28 +0200)]
[kpartx] partition type check was flawed
Lars Soltau, IBM
Christophe Varoqui [Thu, 20 Oct 2005 13:24:05 +0000 (15:24 +0200)]
[config] rr_min_io typo fix
Should closes RH Bugzilla #171286
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()
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
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.
Christophe Varoqui [Tue, 18 Oct 2005 09:28:44 +0000 (11:28 +0200)]
[multipathd] diff friendly / cosmetic cli command defines
Christophe Varoqui [Tue, 18 Oct 2005 08:52:37 +0000 (10:52 +0200)]
[priority] remove pp_random shellism
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'
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 ?
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()
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 :)
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
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
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 :)
Christophe Varoqui [Fri, 14 Oct 2005 14:23:37 +0000 (16:23 +0200)]
[multipathd] invalidate path dmstate when orphaning
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."
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
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
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.
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