From 3de39d6e77ec71494c8a9db99bf000c853837ee3 Mon Sep 17 00:00:00 2001 From: Christophe Varoqui Date: Mon, 21 Nov 2005 22:46:33 +0100 Subject: [PATCH] [build] legacy files update - ChangeLog purged, now points to the web - README was too outdated to live - FAQ points to the web --- ChangeLog | 1072 +------------------------------------------------------------ FAQ | 2 + README | 53 +-- TODO | 2 - 4 files changed, 8 insertions(+), 1121 deletions(-) diff --git a/ChangeLog b/ChangeLog index e22781c..73026b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,1068 +1,6 @@ -2005-05-23 multipath-tools-0.4.5 +Change logs are at : - * [libmultipath] default_prio and prio_callout keyword can be - explicitly set to "none". Suggested by Kiyoshi Ueda, NEC - * [path_prio] don't exit pp_balance_units with error when - find_controler() is not successful. It just means no other - path is currently active on this controler. - * [path_prio] move balance_units in its own dir - * [multipathd] proactively fail_path upon checker up->down - transitions. Suggested by Edward Goggin, EMC - * [libmultipath] .priority is clearly an int, not an unsigned - int. /bin/false is now personna non grata as a prio callout. - Kiyoshi Ueda, NEC - * [libmultipath] callout.c argv parsing fix. Kiyoshi Ueda, - NEC - * [multipathd] check return codes in init_paths(), split out - init_event(). - * [libmultipath] add find_slot(vec, addr) to vector lib. - * [multipath] remove signal sending - * [multipathd] use uevent to do paths list housekeeping for - checkers. Remove signal handling. - * [libmultipath] add uevent.[ch] - -2005-04-23 multipath-tools-0.4.4 - - * [path_prio] clarify pp_alua licensing. Stefan Bader, IBM. - * [devmap_name] add a target_type filter (suggested by Hannes) - and set DM task device by major:minor rather than parsing - the full map list. - * [libmultipath] propagate an error on getprio callout - failures, so that multipath can mark the map as immutable. - Reported by Lars Marowsky-Brée, Suse. - * [libmultipath] move push_callout() from dict.c to config.c - Use it in store_hwe() to get in multipathd's ramfs the - callout defined in hwtable.c when no config file is used. - Reported by Lars Marowsky-Brée, Suse. - * [checkers] zero sense buffers before use in EMC checker. - Lars Marowsky-Brée, Suse. - * [all] pre-release bugfixing effort from Alasdair, Hannes, - Lars, Benjamin Marzinski - * [multipathd] set oom_adj to -17 when kernel permits. - Immune to OOM killer ? agk says : watch out for mem - leaks :/ - * [multipathd] safety nets from udevd : exit early if - not root, chdir to / to avoid pining a mount. - * [multipathd] multipathd could loose events coming from - sighup or DM waitev. Add a pending_event counter to - track that. - * [path_prio] add pp_emc from Lars M Bree, Suse. - * [path_prio] add pp_alua from Stefan Bader, IBM. - * [libmultipath] add config.c:load_config(), which sucks - a big chunk of code out of multipath/main.c. - * [libmultipath] don't allocate memory in : - * devmapper.c:dm_get_map() - * devmapper.c:dm_get_status() - * [libmultipath] devinfo() a la carte fetching - * [libmultipath] merge keepalived memory audit framework - (Thanks again, M. Cassen). Already found and fixed a - couple of leaks. - * [libmultipath] flatten/optimize dm_map_present() and - dm_mapname(). Inspired by Alasdair Kergon, RedHat. - * [kpartx] dm_map_name() free before use bugfix. Kiyoshi - Ueda, NEC - * [kpartx] add hotplug mode. To enable name the binary - "kpartx.dev". Kiyoshi Ueda, NEC - * [multipathd] don't loose events in event waiter thread. - Suggested and prototyped by Edward Goggin, EMC - * [libmultipath] add return values to vector manipulation - fonctions. Mem alloc return code audit. - * [libmultipath] Use "config->udev_dir + path->dev" as - a path devnode to open instead of mknod'ing for each - one. Fix some DoS issues regarding usage of /tmp in - libmultipath/discovery.c:opennode(). Kill unlinknode() - * [multipathd] merged the redhat init script and stop - installing one on "make install" - * [libmultipath] fold safe_sprintf.h into util.h - * [libmultipath] move blacklist to a real regex matcher - Example config files updated : check yours !! - * [multipath] fix path group compare logic to not stop - comparing at first path in each PG. - * [multipathd] check if pidfile is a dead remnent of a - crashed daemon. If so, overwrite it. Suggested by - Alasdair Kergon, RedHat. Code heavily based on work - by Andrew Tridgell, Samba Fame. - * [build] dropped libdevmapper/ and libsysfs/ from the - package. klibc build is now broken until distributors - provide klibc compiled static libraries in their - respective packages. - * [libmultipath] dm_task_no_open_count() before each DM - ioctl. Not doing that is reported to cause deadlocks - in kernel-space. Reported by Edward Goggin, EMC, fix - suggested by Alasdair Kergon, RedHat - Note minimal libdevmapper version bumped up to 1.01. - * [multipath] switched to condlog(). "make DEBUG=N" is - deprecated. Debug is spat with "-v3" or more. - * [multipathd] "multipathd -vN" cmdline arg to control - daemon verbosity. 0 < N < 4. "make LOGLEVEL=N" is - deprecated. - * [libmultipath] provide a common condlog() primitive to - switch lib messages to syslog or stdout depending on - who uses the lib (daemon or tool). - * [kpartx] give kpartx a private, slim copy of devmap.[ch] - * [multipath] allow wwid in blacklist{} config section. - Kiyoshi Ueda, NEC. - * [multipathd] set mode value before use (S_IRWXU). Fixes - RedHat Bugzilla Bug 150665. - * [all] add ->fd to "struct path *". remove fd from all - checker context declaration. remove lots of duplicate - logic. Now a fd is opened only once for path. It should - also bring a bit safety in contended memory scenarii - * [libcheckers] remove redundant sg_include.h - * [libmultipath] merge multipath:dict.[ch] with - multipathd:dict.[ch] into libmultipath/. move config.h - there too, add some helper functions to alloc/free - "struct config *" in a new config.c. Start using a - config in the daemon. - * [libmultipath] move dm_geteventnr(), dm_get_maps() and - dm_switchgroup() in devmapper.[ch] - * [libmultipath] move path discovery logic in - libmultipath. merge devinfo.[ch] and sysfs_devinfo.[ch] - into discovery.[ch] - * [libmultipath] move config.h in libmultipath. Move - find_[mp|hw]e in a new config.c. Move "struct hwtable" - declaration in config.h. Move propsel.[ch] in the - lib too. - * [multipathd] use libmultipath:dm_type() instead of - duplacate and bogus devmap discovery code. - * [multipathd] asynchronous & non-blocking logger - thread. Implementation split into a generic log - lib and a pthread wrapper for locking and events. - An ipc wrapper could be easily created by - interested parties. - * [multipath] add "multipath -l -v2 [devname|devt]" - support in complement to [mapname|wwid] - * [kpartx] suppress loop.h private copy. Should fix - the reported build problems - * [multipath] do sysfs_get_mnt_path() only one time - and store in a global var. - * [multipath] further path discovery optimzation - * [multipath] purge superfluous includes in main.c - * [libmultipath] introduce a cache file. expiry set - to 5 secondes to covert the hotplug event storms. - * [multipath] split get_pathvec_sysfs(). Introduce - get_refwwid() and filter_pathvec() - -2005-03-19 multipath-tools-0.4.3 - - * [libmultipath] rename find_[mp|hw] to find_[mp|hw]e and - introduce a real find_mp(). - * [priority] provison for recursive compilation of prio - subdirs, in preparation of merging more signicant - prioritizers. Stephan Bader, IBM - * [libmultipath] add a netapp controler to the hwtable - * [libmultipath] blacklist() not to discard sda[0-9]* - when sda is blacklisted - * [multipath] add a rr_min_io keyword in config file. - Suggested by Igor Feoktistov, NetApp - * [multipath] stop trying to avoid running in parallel - * [multipath] bump up params size to 1024 - * [multipathd] put prio callouts in to ramfs. Stephan - Bader, IBM - * [multipath] simplify multibus pgpolicy : no need to - copy mp->paths into mp->pg->paths then free source : - just copy the ptr and set source to NULL. - * [multipath] sort PG by descending prio value in - group_by_prio. Stephan Bader, IBM - * [multipath] fix a bug in group_by_prio that lead to - creation of multiple PG for a single prio value - * [multipath] don't store multipaths in a vector anymore : - free the "struct multipath" after usage. - * [multipath] multiple optimizations in the exec plan - * [multipath] allow "multipath -l -v2 [mapname|wwid]" - * [build] rip off klibc and move to klcc, at last. - Good job hpa. multipath-tools now depend on klibc - > 1.0 to build with BUILD=klibc flag. - * [multipath] never reload a map if no path is up in the - computed new map - * [multipath] don't flush maps with open count != 0 - * [libmultipath] add "int *dm_get_opencount(char *map)" - to devmapper.c - * [multipath] plug leaks and optimize devinfo.c. From - Edward Goggin, EMC - * [multipath] fix the multipath.dev hotplug script to not - do kpartx stuff in the same run as multipath stuff. - Igor Feoktistov, NetApp, noted the devmap symlink was - not yet present for kpartx to use. - * [devmap_name] accept major:minor synthax - * [libmultipath] add "char *dm_mapname(int maj, int min)", - needed to fail paths from checker thread - * [libmultipath] move dm_reinstate() in the lib, and add - dm_fail_path() - * [multipathd] mark failed path as failed upon DM - event. This should fix the design bug noticed by - Ramesh Caushik, Intel, where the daemon didn't run - multipath when a path went down and up in between 2 - checks. - * [libmultipath] allow NULL as a pathvec in disassemble_map - as is passed only for memory optimization - * [libmultipath] add structs.c to store alloc_*() and - free_*() - * [libmultipath] move dmparser.[ch] to the lib. - remove devinfo.[ch] dependency. - * [build] fix compilation glitch with BUILD=klibc, - flags to force use of local libs, remove the link - dependency in klibc, try to guess kernel sources - and build dirs. Stefan Bader, IBM - * [libmultipath] find_hw matching logic to take str - lengths in account. Noticed by Ramesh Caushik, Intel - * [multipath] select_action matching logic to take str - length in account. - * [multipath] lookup mp alias name earlier (in coalesce) - Edward Goggin, EMC, noticed we tried to use it before - it was set up. - -2005-01-23 multipath-tools-0.4.2 - - * [libmultipath] add symmetrix controler family to the - hwtable. Edward Goggin, EMC - * [libmultipath] factorize core structs (path, ...) - and defaults (pidfile, configfile, ...). Convert - callers. - * [multipath] fix dmparser to properly fetch non-default - hwhandler. Edward Goggin, EMC - * [multipath] fix devt2devname matching 8:1 with 8:10 - for example. Edward Goggin, EMC - * [multipath] switch_pg upon devmap create or reload - Noticed by Ake. - * [libmultipath] move find_hw() the library. Convert - users. Now multipathd understand '*' as a product - string - * [multipath] dissaemble_map() fix to avoid to - interpret 'D' as a disable PG (not 'F'). Edward - Goggin, EMC - * [multipath] find_path() fix to avoid matching 8:1 - with 8:10 for example. Edward Goggin, EMC - * [libmultipath] move some sysfs fetching routines - to library, under sysfs_devinfo.[ch]. Convert - callers. - * [multipath] fix -v0 : avoids the daemon waiting - for the initial multipath run to complete, which - will never happen because of a flooded pipe - * [multipathd] add scsi_id to default binvec - * [libmultipath] move hwtable related logic to the - library. Convert multipath and multipathd - * [multipath] move first blacklist call down after - setup_default_blist() - * [libmultipath] move basename() to the lib. Convert - multipath and multipathd. - * [libmultipath] move blacklist related logic to the - library. Convert multipath and multipathd - * [multipath] fix bug in the default hardware table - matching logic (Lars M-B, Suse) - * [multipath] allow "*" as scsi model string wildcard - (Lars M-B, Suse) - * [multipath] provide a macro to fill all hwe fields, - use it to declare Clariion models (Lars M-B, Suse) - * [multipath] use DEFAULT_GETUID instead of hardcoded - *and* incorrect "/bin/scsi_id -g -s" (Lars M-B, Suse) - * [multipath] kill superfluous suspend before table - reload. The code was unsafe, as spotted by Edward - Goggin (EMC) - * [multipath] exit early if device parameter is - blacklisted - * [multipath] don't check for prefix in initrd's - multipath.dev : this is the tool responsability to - exit early based on its blacklist. - * [multipath] don't signal the daemon in initrd - (Guido Guenther, Debian tracker) - * [multipath] better fail to run kpartx in initrd - than crashing the whole system. So don't sleep - waiting for udev to create the DM node. Maybe udev - has made progress I this regard ... (noticed by - Paul Wagland, Debian tracker) - * [multipath] don't reinstate when listing, ie list - implies dry_run - * [checkers] fix the emc checker (Hergen Lange) - * [multipath] node_name fetching shouldn't exit on - error. FC SAN are not the only multipathed context - (noticed by Ramesh Caushik) - -2004-12-20 multipath-tools-0.4.1 - - * [multipath] bump SERIAL_SIZE to 19 - * [multipath] add a new group_by_node_name pgpolicy - * [multipath] move getopt policy parser to - get_policy_id() - * [multipath] remove get_evpd_wwid() - * [checkers] fix the wwn_set test in emc checker - (Hergen Lange) - * [checkers] treat the emc checker in the name to - index translator function (Hergen Lange) - * [multipath] print to stderr DM unmet requirement - (Guido Guenther) - * [multipath] fix realloc return value store not - propagated to caller by merge_word() (Nicola Ranaldo) - -2004-12-10 multipath-tools-0.4.0 - - * [checkers] forgot to return back to caller the newly - allocated context. Lead to fd leak notably. - * [checkers] heavy check logic fix - * [checkers] really malloc the checker context size, - not the pointer size (stupidy may kill) - * [multipathd] check more sysfs calls return values - * [multipathd] search for sysfs mount point only once, - not on each updatepaths() iteration - * [multipathd] plug (char *) leak in the daemon - * [multipath] change pgcmp logic : we want to reload a - map only if a path is in computed map but not in cur - map (ie accept to load a map if it brings more paths) - * [multipath] undust coalesce_paths() - * [multipath] don't print unchanged multipath - * [multipath] store the action to take in the multipath - struct - * [multipath] print mp size with kB, MB, GB or TB units - * [multipath] compilation fix for merge_words() (Andy) - * [multipath] don't feed the kernel DM maps with paths of - different sizes : DM fails and we end up with an empty - map ... not fun - * [multipath] cover a new corner case : path listed in - status string but disappeared from sysfs - * [multipath] remove the "-D" command line flag : now - we can pass major:minor directly as last argument, like - device names or device map names. Update multipathd - accordingly. - * [multipath] try reinstate again paths after a switchpg - * [multipath] reinstate condition change : - -2004-12-05 multipath-tools-0.3.9 - - * [multipath] add a "-l" flag to list the current - multipath maps and their status info - * [priority] zalloc controler to avoid random path_count - at allocation time - * [multipath] add configlet pointers in struct multipath - to avoid searching for an entry over and over again - * [multipath] new reinstate policy : on multipath exec, - reinstate all failed paths the checkers report as ready - if they belong to enabled path groups (not disabled, not - active path group) - * [multipath] fork a print_mp() out of print_all_mp() - * [multipath] introduce PG priority, which is the sum of - its path priorities. Set first_pg in the map string to - the highest prio PG index. - * [multipath] assemble maps scaning PG top down now that - PG vector is unsorted - * [multipath] move select_*() to propsel.c - * [multipath] move devinfo() to devinfo.c - * [multipath] move h/b/t/l fetching to sysfs_devinfo() - * [multipath] move devt2devname() to devinfo.c so we can - use it from dmparser.c too - * [multipath] introduce select_alias() and clarify a bit - of code - * [multipath] don't sort PG anymore. We want the map as - static as possible. - * [multipath] fix a segfault in apply_format() triggered - when no config file found. - * [multipath] kill unused vars all over the place - * [multipath] add a struct pathgroup in struct multipath - Store the pathvec in it. We now have a place to store - PG status, etc ... - * [multipath] new dmparser.c, with disassemble_map(), - disassemble_status() - * [multipath] suppress *selector_args keywords. Merge - in the selector string. Update config file templates. - -2004-11-26 multipath-tools-0.3.8 - - * [priority] teach multipath to read callout keywords - formatted as /sbin/scsi_id -g -u -s /block/%n - Apply one substitutions out of : - * %n : blockdev basename (ie sdb) - * %d : blockdev major:minor string (ie 8:16) - update sample config files - * [priority] fix find_controler(). Now works, verified - on IBM T200 at OSDL (thanks again, Dave). Add to the - main build process - * [multipath] add a controler specific "prio_callout" - keyword. Noticed by Ake - * [multipath] normalize the debug ouput - * [multipath] add select_getuid(). De-spaghetti - devinfo() thanks to that helper. - * [libmultipath] add VECTOR_LAST_SLOT macro. - multipath/dict.h now use it heavily. - * [multipath] policies selectors speedup and cleanup - (pgpolicy, features, hwhandler, selector) - * [multipath] new "flush" command flag - * [libmultipath] add dm_type() and dm_flush_maps() - * [multipath] move dm_get_map() to libmultipath - * [multipath] rename iopolicy to pgpolicy everywhere. - Dual terminology was getting confusing. - * [multipath] assemble_map() to always set next_pg to 1 - for now. - * [multipath] update config file to show new keywords. - Add an IBM array tested at OSDL. - * [multipath] fork select_iopolicy() from setup_map() - * [multipath] introduce select_features() and - select_hwhandler(). Should merge select_* one day ... - * [multipath] add features and hardware_handler keywords - and use them in the map setup - * [build] make clean really clean. Noticed by Dave Olien, - OSDL - * [multipath] group_by_serial bugfix - * [multipath] dm_addmap() return value fix. Now multipath - really creates the maps - * [multipath] try dm_log_init_verbose() instead of dup() - + close() to silence libdevmapper (Ake at umu) - * [libcheckers] remove checkpath() wrapper, obsoleted by - the "fd in context" changes - * [multipathd] let pathcheckers allocate their context. - No more over or unneeded allocation. Suggested by Lars, - Suse - * [multipathd] store the pathcheckers fd in their context. - No more open / close on each check. Suggested by Lars, - Suse - -2004-11-05 multipath-tools-0.3.7 - - * [multipathd] fix off by one memory allocation (Hannes, - Suse) - * [multipathd] introduce a default callout handler that - just remembers to put the callout in ramfs, even if the - daemon has no direct use of them. multipath need some - that where forgotten, so parse them and use that default - handler. - * [libcheckers] emc_clariion checker update (Lars, Suse) - * [build] exit build process on failure (Lars, Suse) - * [kpartx] exit early if DM prereq not met - * [multipath] exit early if DM prereq not met - * [libmultipath] new dm_prereq() fn to check out if all DM - prerequisites are met - * [libmultipath] move callout.[ch] function in there. - multipath and multipathd impacted - * [libmultipath] move dm_* function in there. kpartx, - multipath are impacted - * [priority] pp_balance_lun should use DM_DEVICE_TABLE ioctl - instead of DM_DEVICE_STATUS to find out paths from the - primary path groups. - * [klibc] drop in "Stable" version 0.190 - * [build] add manpages for kpartx and multipathd (Patrick - Caulfield) - * [build] use system's sysfs for multipathd linking - * [build] make glibc the default build - * [build] "make BUILD=klibc" is enough, deprecate the - "make BUILD=klibc klibc" synthax - -2004-10-30 multipath-tools-0.3.6 - - * Patrick Caulfield took over debian packaging. Showing - evident expertise, his first wish is to see debian/ - disappear. :) So be it. - * [libmultipath] add a vector_foreach_slot macro. Still - needs an iterator but saves 1 line per loop occurence and - tame this UPPERCASE MACROS bad taste. - * [multipathd] don't load sg anymore on multipathd startup - * [multipathd] change killall for kill `cat $PIDFILE` in - init script (Jaime Peñalba & Cesar Solera) - * [multipathd] the fork fallback was borked (just exiting) - noticed by Jaime Peñalba & Cesar Solera - * [multipathd] try without the FLOATING_STACKS flag. Does - it matter anyway ? - * [multipathd] merge clone_platform.h from LTP and cover - the hppa special case. - * [multipath] since we will be able to create a devmap with - paths too small, don't rely anymore on the first path's - size blindly : verify the path is up, before assigning its - size to the multipath - * [priority] add a path priority fetcher to balance LU accross - controlers based on the controler serial detection. Untested - but provides a good example of what can be done with the - priority framework. - * [priority] create subdir and drop a test pp_random - * [multipath] add dev_t reporting to print_path() to ease - devmap decoding by humans - * [multipath] change default path priority to 1 - * [multipath] add wits to the sort_by_prio policy, so that - sort_pathvec_by_prio() is now useless. Remove it. - * [multipath] invert sort_pg_by_summed_prio sort order : - highest prio leftmost - * [libmultipath] add vector_del_slot - * revert multipath.rules change : devmap_name still takes - "major minor" and not "major:minor" as argument - * Makefile refinement : you can now enter any tool directory - and build from here, deps are solved - -2004-10-26 multipath-tools-0.3.5 - - * [multipathd] fix broken test for path going up or shaky - that kept executing multipath when it shouldn't - * change multipath.dev to exit early when udev' DEVNAME is - a devmap (/dev/dm-*). This avoids a recursion case when - the kernel devmapper keeps removing a map after multipath - configures it. - * change multipath.rules to follow the new -D synthax - * [multipath] "-D major minor" synthax changed to - "-D major:minor" to match the sysfs attribute value. - This change removes a few translations in multipath and - multipathd. - * [multipath] fix segfault in test if conf->dev is a devmap - (the one forwarded by MikeAnd) - * SG_IO ioctl seem to work in lk 2.6.10+, so remove all sg - device knowledge and advertise (here) the new dependency. - * [multipath] remove unused do_tur() - * [multipath] fix sort_pg_by_summed_prio(), and don't add up - failed path priority - -2004-10-26 multipath-tools-0.3.4 - - * [multipathd] exec multipath precisely : pass in the path - or the devmap to update. No more full reconfiguration, and - really use the reinstate feature of multipath. - * [multipathd] check all paths, not only failed ones. Path - checker now trigger on state change (formerly triggred on - state == UP condition) - * [multipathd] incremental updatepaths() instead of scrap / - refresh all logic. - * [multipathd] path checkers now take *msg and *context - params. consensus w/ lmb at suse. tur.c modified as example - * [multipath] assemble maps in PG vector descending order to - fit the layered policies design - * [multipath] stop playing with strings in pgpolicies, as it - uses more memory and looses info for no gain - * [multipath] remove lk2.4 scsi ioctl scsi_type remnant - * [multipath] layered pgpolicies : (see pgpolicies.c) - * group_by_status - * group_by_serial | multibus | failover | group_by_prio - * sort_pg_by_summed_prio - thus remove duplicated failedpath logic in pgpolicies - * [libmultipath] add vector_insert_slot - * [checkers] framework for arbitrate checkers return values - * [multipathd] scrap yet another reinvented wheel in the - name of the LOG macro : learn the existance of setloglevel - and LOG_UPTO macro - * glibc make with "make BUILD=glibc", asked by lmb at suse - -2004-10-20 multipath-tools-0.3.3 - - * [checkers] add the emc_clariion path checker (lmb at Suse) - * [multipath] introduce safe_snprintf macro to complement the - safe_sprintf. Needed to cover the sizeof(pointer) cases - pointed by Dave Olien at OSDL - * [multipath] move to the common libchecker framework and - activate the selector - * [multipath] fix an iopolicy selector bug (initialized lun - iopolicy overrode controler-wide iopolicy) - * [multipathd] cleanly separate out the checker selector, as - done with iopolicy selector - * [multipathd] move out the checkers into a common libcheckers - * [multipath] fix the anti-parallel-exec logic : use a write - lease for the task. From Dave Olien at osdl. - * [multipath] fix reinstate : pass a devt, not a devname - -2004-10-16 multipath-tools-0.3.2 - - * [multipath] add path reinstate logic : - * if a path is given as multipath arg - * if the map containing that path already exists - * if this map is the same as the that would be - created by this multipath run - * THEN reinstate the path - multipathd is is thus unchanged, while now supporting - reinstate - * audit and ensafe all sprintf usage - * [multipath] fix the annoying \n after each dev_t in - params string reporting - * [multipath] print out devmaps in "-v2 -d" mode - * [kpartx] bump up the params string size (lmb at suse) - * [kpartx] replace sprintf by snprintf (lmb at suse) - * [kpartx] initialize some more vars (lmb at suse) - * [multipath] mp->pg == NULL safety net before calling - assemble_map() (for Andy who happen to hit the bug) - * [multipath] last rampant bug in map CREATE or UPDATE switch - logic due to the device alias feature - * [kpartx] zeroe "struct slice all" (lmb at suse) - -2004-10-11 multipath-tools-0.3.1 - - * [kpartx] move back to getopt, originaly removed from the - original partx because of lack of implementation in klibc - * [kpartx] don't map extended partitions - * [kpartx] add a -p command flag to allow admin to force a - delimiting string between disk name and part number. When - specified always use it, when unspecified use 'p' as a delim - when last char of disk name is a digit, NUL otherwise. - * [kpartx] clean up - * bump klibc to 0.182 - * one step further : use klibc MCONFIG for all klibc specific - FLAGS definitions, ie massive Makefile.inc cleanup - * follow the klibc compilation rules by appending its OPTFLAGS - to multipath-tools' CFLAGS. This corrects the segfaults seen - on i386 where klibc is built with regparm=3 and tools are not - * [multipathd] fall back to fork when clone not available - like in Debian Woody - * [kpartx] move .start and .size from uint to ulong (Ake) - * briefly document system-disk-on-multipath in the FAQ file - -2004-10-06 multipath-tools-0.3.0 - - * first cut at making scripts to create multipath-aware initrds - those scripts are tested on Debian SID, and must be copied into - /etc/mkinitrd/scripts. it works here. - * [multipath] verify presence of the /sys/block/... node before - reading sysfs attributes. Avoids libsysfs and scsi_id stderr - garbage - * [multipath] move down the stderr close (Ake Sandgren at umu.se) - * [multipath] don't care about 0-sized mp (Ake Sandgren at umu.se) - * [multipath] bump mp size field to ulong (Ake Sandgren at umu.se) - * [multipath] replace quiet/verbose flags by a verbosity one. - introduce a new verbosity level : 1 == print only devmap names - thus we can feed kpartx with that output - * [multipath] update man page to reflect the hotplug.d -> dev.d - transition and replace the obsolete group_by_tur policy by the - forgotten group_by_prio - * [multipath] provide a /etc/udev/rules.d/multipath.rules for - multipath devices naming. Cleaner than the previously suggested - rule addition in the main udev.rules - * [multipath] move out of hotplug.d to dev.d : kill synchronisation - problems between device node creation and multipath execution. - Incidentally the unfriendly $DEVPATH param become a friendly - $DEVNAME (simply /dev/sdb) - * [multipath] rework the iopolicies name-to-id & id-to-name - translations. kills the last compilation warning here too - * [kpartx] kill last compilation warnings - * bump klibc to 0.181 - * add the debian/ packaging dir (make deb) - * prototype __clone & __clone2 - -2004-09-24 multipath-tools-0.2.9 - - * [multipathd] finally tame the clone compilation glitch on IA64 - move from sys_clone to __clone / __clone2 - * [kpartx] rework from Stephan Bader, IBM : - * handle s390x arch - * endianness fixes - * push the partname string size to handle wwwids - * quieten implicit cast warnings - * [multipath] add an 'alias' multipath keyword for friendlier device - names. This was "asked" by OSDL' CGL board of secret reviewers - * [multipath] last pass with JBOD and parallel SCSI support : - hard-code scsi_id as a fallback when disk strings doesn't match - any hwtable entry - * [multipath & multipathd] change the parser to not coalesce - consecutive spaces (Patrick Mansfield) - * [multipath] remove the [UN]: output prefix, so that stdout can be - easily fed to a tool like dmsetup - * [multipathd] DEBUG=3 logs more readable/usefull - * [multipathd] add a multipath_tool config keyword - * [multipathd] move to execute_program() like multipath already did - * [multipath] don't print the "no path" msg in quiet mode - * [multipathd] include linux/unistd.h for _syscall2 - definition on RedHat systems. Remove superfluous - asm/unistd.h include - * [libsysfs] forked : last version uses mntent, which - klibc doesn't provide. That, plus the fact we use - only 1/3 of the lib, pushed me to freeze the version - and strip all unused stuff. - * [multipathd] prepare_namespace() cleanup : no more "multipath" - special casing since we push it to binvec vector, like the other - callouts detected in the config file. - -2004-08-13 multipath-tools-0.2.8 - - * [multipathd] setsched prio to RT - * [multipath] massive include cleanup - * [multipath] add a "prio_callout" keyword - first user will be SPC-3 ALUA priority field fetcher - from IBM - * [multipath] reenable stdout on some error paths - * [build] spilt KERNEL_DIR into KERNEL_SOURCE & - KERNEL_BUILD as per 2.6 and SuSe convention - * [klibc] kill warnings due to awk parsing wrong locale in - arch/i386/MCONFIG - * [multipath] implement a generic group_by_prio pgpolicy - * [multipath] fix the broken failover pgpolicy - -2004-07-24 multipath-tools-0.2.7 - - * [multipath] args parser moved to getopt - - * [multipath] zero conf->hotplugdev at allocation - - * [multipath] clean up failed devmap creation attempt - * [libs] update to libdevmapper 1.00.19 - * [multipath] framework for claimed device skipping - still lacks a reliable way to know if the device is - claimed and by who (fs, swap, md, dm, ...). If you - think it is valid to let libdevmapper hit the wall, - please speak up and tell so. - * [multipath] shut down stderr when calling into libdm - * [multipath] reformat the verbose output - * [multipath] framework for path priority handling (ALUA) - * [multipath] kill all reference to group_by_tur - * [multipath] integrate path state logic into multibus & - failover pgpolicies. This obsoletes the group_by_tur one - which is now the same as multibus. - * [multipath] zalloc mp structs to avoid garbage in ->size - * bump version requisite for scsi_id to 0.6 to support the new - '-u' flag (s/ /_/ for proper JBOD device map naming) - * [multipath] correct the for(;;) limits to accept 1-slot - pathvecs - * [multipath] push WWID_SIZE to 64 char (scsi_id w/ JBODs) - * [multipath] add a exit_tool() wrapper fn for runfile unlink - * [multipath] add a "path_grouping_policy" keyword in the - "defaults" block. - * [multipath] add a "getuid_callout" keyword in the - "defaults" block. Now multipath is going to work with JBODs - * [multipath] fix segfault when pathvec is empty after - get_pathvec() - * move to template based specfile to avoid regular version skew - -2004-07-16 multipath-tools-0.2.6 - - * [multipathd] implement the system-disk-on-SAN safety net - * [multipathd] add exit_daemon() wrapper function - * [multipathd] mlockall() all daemon threads - * [multipath] fix a bug in the mp_iopolicy_handler that kept - the iopolicy per LUN override from working - * [multipath] display the tur bit value in print_path - as requested by SUN - * try to open /$udev/reverse/$major:$minor before falling back - to mknod - * add "udev_dir" to the defaults block in the config file - * merge "daemon" & "device_maps" config blocks into a new - "defaults" block - * [multipath] properly comment the config file - * [multipath] generalize the dbg() macro usage - Makefile now has a DEBUG flag - * [multipath] move to callout based WWID fetching. Default to - scsi_id callout. I merged execute_program from udev for that - (so credit goes to GregKH) - * [multipath] get rid of "devnodes in /dev" assumption - ie move to "maj:min" device mapper target synthax - -2004-07-10 multipath-tools-0.2.5 - - * [multipathd] fix misbehaviour noted by - improper tar directive in Makefile on some systems - * [multipathd] fix bug noted by - get_devmaps fills a private vector and forget to pass its - address to caller - * [multipath] extend EVPD 0x83 id fetching logic. - Code borrowed from scsi_id (thanks goes to Patrick - Mansfield @IBM) and merged by Hannes Reinecke @SUSE - * [multipathd] fix regression noted by - (segfault when no config file) - -2004-06-20 multipath-tools-0.2.4 - - * [multipathd] break free from system's libsysfs for now - as it is not that common these days - * [multipath] introduce per LUN policies in the config - file : path_grouping_policy, path_selector and - path_selector_args are supported. - See updated sample config file. - * [multipath] move ->iopolicy to multipath struct (from - path struct) - * [multipath] fill the voids left in the config file with - defaults - * [multipath] group config & flags in a global struct * - * [multipath] fix segfault when no config file (was a - regression since hwtable vectorisation in 0.2.2) - * [multipath] default path selector override in config file - * [multipath] don't play with strings in pgpolicies, leave - that to a new assemble_map fn. policies now use vector - * [multipathd] compilation fix for gentoo (Franck Denis) - * [multipath] strcmp fix (Franck Denis) - -2004-06-14 multipath-tools-0.2.3 - - * [multipath] group_by_serial try to be smart with LUN - balancing across controlers (for STK / LSI) : - 1st multipath : 1st pg made of path through 1st controler - 2nd multipath : 1st pg made of path through 2nd controler - 3rd multipath : 1st pg made of path through 1st controler - ... - * [multipath] drop .pindex[] in struct multipath in favor - of a *paths vector : much cleaner - * [multipath] fix group_by_serial pgpolicy broken by - vectorisation in 0.2.2 - * add a StorageTek array in the sample multipath.conf - * [multipathd] strcmp fix from Franck Denis - * [multipathd] convert to vector api - * [multipathd] add a configfile option for path checking - interval. See sample configfile for synthax. - -2004-06-07 multipath-tools-0.2.2 - - * [multipath] leave out 2.4 compat code. Is there - interest anyway ? - * [multipath] convert all_paths table to vector api. - Rename to pathvec. Get rid of max_devs - * [multipath] convert mp table to vector api - * convert blacklist to vector api - * 2.6.7-rc? adds _user annotations to scsi/sg.h, causing - compilation breakage. Add a "#define _user" in all - sg_include.h (and remove cruft) - * merge a real parser (from keepalived) courtesy of - Alexandre Cassen. Now multipath and multipathd share a - config file. This comes with a nice vector lib. - * devnode blacklist moved from hardcoded to config file - * Guy Coates noted -O2 CFLAGS lead to multipathd crashes - on IA64. Remove the needless optimisation for now. - -2004-06-05 multipath-tools-0.2.1 - - * [multipath] add a flag to inihibit the final SIGHUP to - multipathd. Needed to avoid recursion with the correction - below - * [multipathd] devmap event now triggers a multipath exec - in addition to the usual updatepaths() - * [multipathd] move checkers from sg_io on BLK onto CHR - readsector0 goes from read to sg_read - * [multipathd] rely on sysfs for failedpaths enum and no - longer on the device mapper - * [multipathd] convert get_lun_strings from ioctl to sysfs - so we can benefit from strings persistency for failed - paths - * [multipath] readconfig() to take only 8 char from vendor - string (ake) - * [multipath] remove unecessery and wrong getuid == NULL - check from devinfo() (ake) - * [multipathd] make readsector0 open path O_DIRECT - * [multipathd] sizeof(path) -> sizeof(struct path) (MikeC) - * [Makefile] don't try to install and uninstall libs - * [devmap_name] kill the wrong trailing '\n' - (Mike Christie) - * [kpartx] works with device nodes outside /dev - * [kpartx] correctly display the delimiter in partition - name outputs - -2004-05-17 multipath-tools-0.2.0 - - * change the default klibc by greg's : - corrects the segfaults reported by Ling Hwa Hing - -2004-05-16 multipath-tools-0.1.9 - - * break free from udev : package klibc and libsysfs - * add a spec file and a "make rpm" rule - * pensum on klibc changes needed : - * mmap.c & fork.c : invert includes - * make clean wipes .*.d - * auto create the linux symlink - * remove tools and specfiles (files and Makefile - targets) - -2004-05-15 multipath-tools-0.1.8 - - * Makefiles cleanup and factorisation - * Compilation fixes for non-ix86 archs, tested on x86_64 - * strip execs harder for a 10% size reduction - * blacklist /dev/fd* and /dev/loop* - * dmadm works with sysfs nodes with '!' (cciss for ex) - -2004-05-10 multipath-tools-0.1.7 - - * bugfixes from Andy : - * read the last line of the config file - * add an entry for the 3PARData storage ctlrs - * read the last char of vendor and model strings - -2004-04-25 multipath-tools-0.1.6 - - * add the dmadm WIP tool (read MD superblocks and create - corresponding devmaps when possible) - * plug fd leak in TUR path checker - -2004-03-25 multipath-tools-0.1.5 - - * kpartx to manage the nested bdevs as /dev/cciss/c0d0. - parts are named sysfs style : cciss!c0d0p* - * kpartx loop support - * kpartx do DM updates if part maps already present - * merge kpartx for partitioned multipath support - * add get_null_uid to getuid methods. assign it the "0" index - devices with this getuid are thus ignored by multipath. - warning : change /etc/multipath.conf (get_evpd_wwid == 1) - * mv all_scsi_ids out of the 2.6 code path, into the 2.4 one - * unlink runfile on malloc exit path - * update multipath manpage (MikeC) - -2004-03-17 multipath-tools-0.1.4 - - * multipath clean up - * split default hw table in hwtable.h - * split grouping policies in pgpolocies.c - * pass *mp to setup_map instead of mp[]+index - * ensure defhwtable is used if /etc/multipath.conf is buggy - * hwtable is not global anymore - * unlink the runfile in various error paths - -2004-03-13 multipath-tools-0.1.3 - - * multipath config tool now has a config file parser - (did I say I make the ugliest parsers ?) - * example multipath.conf to put in /etc (manualy) - -2004-03-12 multipath-tools-0.1.2 - - * detach the per devmap waiter threads - * set the thread stack size to lower limits - (VSZ down to 4MB from 85 MB here) - -2004-03-06 multipath-tools-0.1.1 - - * include dlist.h in multipath main.c (PM Hahn) - * typo in hotplug script (PM Hahn) - * pass -9 opt to gzip for manpages (PM Hahn) - -2004-03-05 multipath-tools-0.1.0 - - * add the group_by_tur policy - * add the multipathd daemon for pathchecking & DM hot-reconfig - * multipath doesn't run twice - * massive cleanups, and code restructuring - * Avoid Kernel Bug when passing too small a buffer in do_inq() - * Sync with 2.6.3-udm4 target synthax (no more PG prio) - -2004-02-21 multipath-018 - - * From the Debian SID inclusion review (Philipp Matthias Hahn) - * use DESTDIR install prefix in the Makefile - * add man pages for devmap_name & multipath - * correct libsysfs.h includes - * fork the hotplug script in its own shell - * Sync with the kernel device mapper code as of 2.6.3-udm3 - ie. Remove the test interval parameter and its uses - * Remove superfluous scsi parameter passed from hotplug - * Add the man pages to the [un]install targets - -2004-02-17 multipath-017 - - * remove the restrictive -f flag. - Introduce a more generic "-m iopolicy" one. - * remove useless "int with_sysfs" in env struct - -2004-02-04 multipath-016 - - * add a GROUP_BY_SERIAL flag. This should be useful for - controlers that activate they spare paths on simple IO - submition with a penalty. The StorageWorks HW defaults to - this mode, even if the MULTIBUS mode is OK. - * remove unused sg_err.c - * big restructuring : split devinfo.c from main.c. Export : - * void basename (char *, char *); - * int get_serial (int, char *); - * int get_lun_strings (char *, char *, char *, char *); - * int get_evpd_wwid(char *, char *); - * long get_disk_size (char *); - * stop passing struct env as param - * add devmap_name proggy for udev to name devmaps as per their - internal DM name and not only by their sysfs enum name (dm-*) - The corresponding udev.rules line is : - KERNEL="dm-[0-9]*", PROGRAM="/sbin/devmap_name %M %m", \ - NAME="%k", SYMLINK="%c" - * remove make_dm_node fn & call. Rely on udev for this. - * don't rely on the linux symlink in the udev/klibc dir since - udev build doesn't use it anymore. This corrects build breakage - -2004-01-19 multipath-013 - - * update the DM target synthax to the 2.6.0-udm5 style - -2003-12-29 multipath-012 - - * check hotplug event refers to a block device; if not exit early - * refresh doc - * add the uninstall target in Makefile - -2003-12-22 multipath-010 - - * tweak the install target in Makefile - * stop passing fds as argument : this change enable a strict - segregation of ugly 2.4 code - * sysfs version of get_lun_strings() - * be careful about the return of get_unique_id() since errors - formerly caught up by if(open()) in the caller fn are now returned - by get_unique_id() - * send get_serial() in unused.c - * introduce dm-simplecmd for RESUME & SUSPEND requests - * split add_map() in setup_map() & dm-addmap() - * setup_map() correctly submits "SUSPEND-RELOAD-RESUME or CREATE" - sequences instead of the bogus "RELOAD or CREATE" - * don't print .sg_dev if equal to .dev (2.6) in print_path() - * since the kernel code handles defective paths, remove all - code to cope with them : - * move do_tur() to unused.c - * remove .state from path struct - * remove .state settings & conditionals - * add a cmdline switch to force maps to failover mode, - ie 1 path per priority group - * add default policies to the whitelist array (spread io == - MULTIBUS / io forced to 1 path == FAILOVER) - * move get_disk_size() call out of add_map() to coalesce() - * comment tricky coalesce() fn - * bogus unsused.c file renamed to unused.c - -2003-12-20 multipath-010 - - * big ChangeLog update - * start to give a little control over target params : - introduce cmdline arg -i to control polling interval - * cope with hotplug-style calling convention : - ie "multipath scsi $DEVPATH" ... to avoid messing with - online maps not concerned by an event - * example hotplug agent to drop in /etc/hotplug.d/scsi - * revert the run & resched patch : unless someone proves me - wrong, this was overdesigned - * move commented out functions in unused.c - * update multipath target params to "udm[23] style" - * mp target now supports nr_path == 1, so do we - * add gratuitous free() - * push version forward - -2003-12-15 multipath-009 - - * Make the HW-specific get_unique_id switch pretty - * Prepare to field-test by whitelisting all known fibre array, - try to fetch WWID from the standard EVPD 0x83 off 8 for everyone - * configure the multipath target with round-robin path selector and - conservative default for a start (udm1 style) : - yes it makes this release the firstreally useful one. - * temporarily disable map creation for single path device - due to current restrictive defaults in the kernel target. - Sistina should work it out. - * correct the strncmp logic in blacklist function. - * update the Makefiles to autodetect libgcc.a & gcc includes - "ulibc-style". Factorisation of udevdirs & others niceties - * drop a hint about absent /dev/sd? on failed open() - * implement a reschedule flag in /var/run. - Last thing the prog do before exit is check if a call to multipath - was done (but canceled by /var/run/multipath.run check) during its - execution. If so restart themain loop. - * implement a blacklist of sysfs bdev to not bother with for now - (hd,md, dm, sr, scd, ram, raw). - This avoid sending SG_IO to unappropiate devices. - * Adds a /var/run/multipath.run handling to avoid simultaneous runs. - * Remove a commented-out "printf" - * drop a libdevmapper copy in extras/multipath; - maybe discussions w/Sistina folks will bring a better solution - in the future. - * drop a putchar usage in libdevmapper to compile cleanly with klibc - * drop another such usage of my own in main.c - * massage the Makefile to compile libdevmapper against klibc - * use "ld" to produce the binary rather than "gcc -static" - * stop being stupid w/ uneeded major, minor & dev in main.c:dm_mk_node() - * reverse to creating striped target for now because the multipath - target is more hairy than expected initialy - * push the version code to 009 to be in synch w/ udev - -2003-11-27 multipath-007 - - * removes sg_err.[ch] deps - * makes sure the core code play nice with klibc - * port the sysfs calls to dlist helpers - * links against udev's sysfs (need libsysfs.a & dlist.a) - * finally define DM_TARGET as "multipath" as Joe posted the code today - (not tested yet) - * push version forward (do you want it in sync with udev version?) - -2003-11-19 multipath-006 - - * merged in udev-006 tree - -2003-09-18 multipath-0.0.1 - - * multipath 0.0.1 released. - * Initial release. +- pre-0.4.5 + http://christophe.varoqui.free.fr/wiki/wakka.php?wiki=ChangeLog +- post-0.4.5 + http://www.kernel.org/git/gitweb.cgi?p=linux/storage/multipath-tools/.git;a=log diff --git a/FAQ b/FAQ index 75216a0..35dc2f9 100644 --- a/FAQ +++ b/FAQ @@ -1,3 +1,5 @@ +More at http://christophe.varoqui.free.fr/wiki/wakka.php?wiki=FAQ + 1. How to set up System-on-multipath ? ====================================== diff --git a/README b/README index 64bf214..b0b9dfa 100644 --- a/README +++ b/README @@ -1,52 +1 @@ -Dependancies : -============== - -These libs have been dropped in the multipath tree : - -o libdevmapper : comes with device-mapper-XXXX.tar.gz - See www.sistina.com -o libsysfs : comes with sysutils or udev - See ftp.kernel.org/pub/linux/utils/kernel/hotplug/ -o klibc - See ftp.kernel.org/pub/linux/libs/klibc/ - -External : - -o Linux kernel 2.6.10-rc with udm2 patchset (or greater) - ftp://sources.redhat.com/pub/dm/ - -How it works : -============== - -Get a path list in sysfs. - -For each path, a wwid is retrieved by a callout program. -Only White Listed HW can retrieve this info. - -Coalesce the paths according to pluggable policies and store - the result in mp array. - -Feed the maps to the kernel device mapper. - -The naming of the corresponding block device is handeld -by udev with the help of the devmap_name proggy. It is -called by the following rule in /etc/udev/udev.rules : - -KERNEL="dm-[0-9]*", PROGRAM="/sbin/devmap_name %M %m", \ -NAME="%k", SYMLINK="%c" - -Notes : -======= - -o 2.4.21 version of DM does not like even segment size. - if you enconter pbs with this, upgrade DM. - -Credits : -========= - -o Heavy cut'n paste from sg_utils. Thanks goes to D. - Gilbert. -o Light cut'n paste from dmsetup. Thanks Joe Thornber. -o Greg KH for the nice sysfs API. -o The klibc guys (Starving Linux Artists :), espacially - for their nice Makefiles and specfile +Things to read diff --git a/TODO b/TODO index f9ee0c8..690ea03 100644 --- a/TODO +++ b/TODO @@ -1,3 +1 @@ Things to do - -o activate group dm mesg fn -- 2.7.4