2004-08-01 multipath-tools-0.2.8
	* [multipathd] setsched prio to RT
	* [multipath] massive include cleanup
	* [multipath] add a "default_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
	  <genanr@emsphone.com>
	* [multipath] zero conf->hotplugdev at allocation
	  <genanr@emsphone.com>
	* [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 "default_path_grouping_policy" keyword in the
	  "defaults" block.
	* [multipath] add a "default_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 <genanr@emsphone.com>
	  improper tar directive in Makefile on some systems
	* [multipathd] fix bug noted by <genanr@emsphone.com>
	  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 <genanr@emsphone.com>
	  (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 <genanr@emsphone.com> :
		* 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
	* merged in udev-006 tree
2003-09-18  Christophe Varoqui <christophe.varoqui@free.fr>
	* multipath 0.0.1 released.
	* Initial release.
