Merge branch 'vendor/OPENSSH'
[dragonfly.git] / contrib / lvm2 / dist / WHATS_NEW
1 Version 2.02.56 - 24th November 2009
2 ====================================
3   Add missing vg_release to pvs and pvdisplay to fix memory leak.
4   Do not try to unlock VG which is not locked in _process_one_vg.
5   Move is_long_lived persistent_filter_dump to happen after every full scan.
6   Refresh device filters before full device rescan in lvmcache.
7   Return error status if vgchange fails to activate some volume.
8   Fix suspend/resume lock type test causing unbalanced memory locking.
9   Revert vg_read_internal change as clvmd was not ready for vg_read. (2.02.55)
10
11 Version 2.02.55 - 19th November 2009
12 ====================================
13   Fix deadlock when changing mirrors due to unpaired memlock refcount changes.
14   Use separate memlock counter for dmeventd handlers to permit device scanning.
15   Directly restrict vgchange to activating visible LVs.
16   Fix pvmove region_size overflow for very large PVs.
17   Fix lvcreate and lvresize %PVS argument always to use sensible total size.
18   Tidy some uses of arg_count and introduce arg_is_set.
19   Export outnl and indent functions for modules.
20   Flush stdout after yes/no prompt.
21   Update vgsplit and vgcreate to use vg_set_clustered.
22   Add vg_mda_count and vg_set_clustered library functions.
23   Add more vgcreate and vgsplit nightly tests.
24   Insert some missing stack macros into activation code.
25   Recognise DRBD devices and handle them like md devices.
26
27 Version 2.02.54 - 26th October 2009
28 ===================================
29   Update lvcreate/lvconvert man pages to explain PhysicalVolume parameter.
30   Document --all option in man pages, cleanup {pv|vg|lv}{s|display} man pages.
31   Permit snapshots of mirrors.
32   Cleanup mimagetmp LV if allocation fails for new lvconvert mimage.
33   Fix clvmd segfault when refresh_toolcontext fails.
34   Remember to clear 'global lock held during cache refresh' state after use.
35   Use udev flags support in LVM and apply various fixes to udev rules.
36   Delay announcing mirror monitoring to syslog until initialisation succeeded.
37   Handle metadata with unknown segment types more gracefully.
38   Set default owner and group to null.
39   Add dmeventd.static to the build.
40   Disable realtime support code by default.
41   Make clvmd return 0 on success rather than 1.
42   Add --pvmetadatacopies for pvcreate, vgcreate, vgextend, vgconvert.
43   Add implict pvcreate support to vgcreate and vgextend.
44   Correct example.conf to indicate that lvm2 not lvm1 is the default format.
45   Remove an unused stray LVM1_SUPPORT ifdef.
46   Only include selinux libs in libdevmapper.pc when selinux build enabled.
47   Allow for a build directory separate from the source.
48   Update distclean target for rename clogd to cmirrord. (2.02.52)
49   Only do lock conversions in clvmd if we are explicitly asked for one.
50   Introduce percent_range_t and centralise snapshot full/mirror in-sync checks.
51   Factor out poll_mirror_progress and introduce progress_t.
52   Distinguish between powers of 1000 and powers of 1024 in unit suffixes.
53   Restart lvconverts in vgchange by sharing lv_spawn_background_polling.
54   Generalise polldaemon code by changing mirror-specific variable names.
55   Don't attempt to deactivate an LV if any of its snapshots are in use.
56   Return error if lv_deactivate fails to remove device from kernel.
57   Provide alternative implementation of obsolete siginterrupt().
58   Consolidate LV allocation into alloc_lv().
59   Treat input units of both 's' and 'S' as 512-byte sectors.  (2.02.49)
60   Use standard output units for 'PE Size' and 'Stripe size' in pv/lvdisplay.
61   Add configure --enable-units-compat to set si_unit_consistency off by default.
62   Add global/si_unit_consistency to enable cleaned-up use of units in output.
63
64 Version 2.02.53 - 25th September 2009
65 =====================================
66   Create any directories in /dev with DM_DEV_DIR_UMASK (022).
67   Enable dmeventd monitoring section of config file by default.
68   Update lvm2 monitoring script to lvm2_monitoring_init_red_hat.in.
69   Fix lvm2app test to run under test/api subdirectory only when configured.
70   Add vg_is_resizeable() and cleanup reference to VG_RESIZEABLE.
71
72 Version 2.02.52 - 15th September 2009
73 =====================================
74   Update _process_one_vg to cleanup properly after vg_read_error.
75   Add lots of missing stack debug messages to tools.
76   Make readonly locking available as locking type 4.
77   Fix readonly locking to permit writeable global locks (for vgscan). (2.02.49)
78   Add DM_UDEV_RULES_VSN environment variable to udev rules.
79   Update vgsplit, vgmerge, and vgrename to obey new vgname ordering rules.
80   Make lvm2app pv_t, lv_t, vg_t handle definitions consistent with lvm_t.
81   Enforce an alphabetical lock ordering on vgname locking.
82   Prioritise write locks over read locks by default for file locking.
83   Add local lock files with suffix ':aux' to serialise locking requests.
84   Fix global locking in PV reporting commands (2.02.49).
85   Fix pvcreate string termination in duplicate uuid warning message.
86   Don't loop reading sysfs with pvcreate on a non-blkext partition (2.02.51).
87   Fix vgcfgrestore error paths when locking fails (2.02.49).
88   Update Makefile distclean target.
89   Add libudev configuration check.
90   Make clvmd check corosync to see what cluster interface it should use.
91   Add clvmd autodetection check and cleanup related configure messages.
92   Rewrite clvmd configuration code to cope with all combinations of libs.
93   Added configure --enable-cmirrord to build the cluster mirror log daemon.
94   Rename clogd to cmirrord.
95   Make lvchange --refresh only take a read lock on volume group.
96   Fix race where non-blocking file locks could be granted in error.
97   Fix vgextend error path - if ORPHAN lock fails, unlock / release vg (2.02.49).
98   Fix compile warning in clvmd.
99   Clarify use of PE ranges in lv{convert|create|extend|resize} man pages.
100   Remove useless _pv_write wrapper.
101   Add lvm2app.sh to tests conditional upon configure --enable-applib.
102   Add lvm_vg_is_clustered, lvm_vg_is_exported, and lvm_vg_is_partial.
103   Update lvm_vg_remove to require lvm_vg_write to commit remove to disk.
104   Update test/api/test.c to call lvm_vg_create and lvm_vg_remove.
105
106 Version 2.02.51 - 6th August 2009
107 =================================
108   Fix locking in clvmd (2.02.50).
109   Add --noudevsync option for relevant LVM tools.
110   Add activation/udev_sync to lvm.conf.
111   Only change LV symlinks on ACTIVATE not PRELOAD.
112   Make lvconvert honour log mirror options combined with downconversion.
113   Allow LV suspend while --ignorelockingfailure is in force.
114   Update synopsis in lvconvert manpage to mention --repair.
115   Set cookies in activation code and wait for udev to complete processing.
116   Added configure --enable-udev_rules --enable-udev_sync.
117   Added configure --with-udev-prefix --with-udevdir.
118   Added udev dir to hold udev rules.
119   Add devices/data_alignment_detection to lvm.conf.
120   Add devices/data_alignment_offset_detection to lvm.conf.
121   Add --dataalignmentoffset to pvcreate to shift start of aligned data area.
122   Fix _mda_setup() to not check first mda's size before pe_align rounding.
123   Document -I option of clvmd in the man page.
124   Fix configure script to handle multiple clvmd selections.
125   Fix lvm2app.pc installation filename.
126   Remove pv_t, vg_t & lv_t handles from lib.  Only liblvm uses them.
127   Rename lvm.h to lvm2app.h for now.
128
129 Version 2.02.50 - 28th July 2009
130 ================================
131   Change test/api/test.c prompt so it's not confused with the main lvm prompt.
132   Update liblvm unit tests in test/api to cover latest liblvm changes.
133   Add unimplemented lvm_lv_resize and lvm_pv_resize skeletons to liblvm.
134   Add lvm_library_get_version to liblvm.
135   Add lvm_config_override to liblvm to allow caller to override LVM config.
136   Add lvm_lv_is_active and lvm_lv_is_suspended to liblvm.
137   Add lvm_lv_activate and lvm_lv_deactivate to liblvm.
138   Add lvm_scan, lvm_vg_reduce and lvm_vg_remove_lv to liblvm.
139   Add functions to get numeric properties to liblvm.
140   Add lvm_{pv|vg|lv}_get_{name|uuid} to liblvm.
141   Add lvm_vg_list_pvs and lvm_vg_list_lvs to liblvm.
142   Add lvm_vg_open and lvm_vg_create_lv_linear to liblvm.
143   Add lvm_list_vg_names/uuids to liblvm.
144   Add lvm_errno and lvm_errmsg to liblvm to obtain failure information.
145   Rename lvm_create/destroy to lvm_init/quit.
146   Rename lvm_reload_config to lvm_config_reload.
147   Refactor _override_settings to use new override_config_tree_from_string.
148   Add vg_reduce to metadata.c and metadata-exported.h.
149   Update lvm.h to clarify API behavior and return codes.
150   Update lvm_vg_extend to do an implicit pvcreate on the device.
151   Update display.c to use vg_free(vg) instead of duplicating the calculation.
152   Refactor vg_size, vg_free, and pv_mda_count field calculations for liblvm.
153   Refactor pvcreate and lvcreate for liblvm.
154   Add global/wait_for_locks to lvm.conf so blocking for locks can be disabled.
155   All LV locks are non-blocking so remove LCK_NONBLOCK from separate macros.
156   Fix race condition with vgcreate and vgextend on same device (2.02.49).
157   Remove redundant validate_name call from vgreduce.
158   Remove unused handles lvseg, pvseg inside liblvm/lvm.h.
159   Add liblvm2app Makefile installation targets.
160   Add liblvm pkgconfig file.
161   Use newly-independent LVM_LIBAPI in liblvm soname.  E.g. liblvm2app.so.2.1.
162   Add an API version number, LVM_LIBAPI, to the VERSION string for liblvm.
163   Pass a pointer to struct cmd_context to init_multiple_segtypes
164   Return EINVALID_CMD_LINE not success when invalid VG name format is used.
165   Remove unnecessary messages after vgcreate/vgsplit refactor (2.02.49).
166   Add log_errno to set a specific errno and replace log_error in due course.
167   Change create_toolcontext to still return an object if it fails part-way.
168   Add EUNCLASSIFIED (-1) as the default LVM errno code.
169   Store any errno and error messages issued while processing each command.
170   Use log_error macro consistently throughout in place of log_err.
171
172 Version 2.02.49 - 15th July 2009
173 ================================
174   Add readonly locking type to replace implementation of --ignorelockingfailure.
175   Exclude VG_GLOBAL from vg_write_lock_held so scans open devs read-only again.
176   Add unit test case for liblvm VG create/delete APIs.
177   Add liblvm APIs to implement creation and deletion of VGs.
178   Initialize cmd->cmd_line to "liblvm" in new liblvm library.
179   Place handles to liblvm objects for pv, vg, lv, lvseg, pvseg inside lvm.h.
180   Refactor vgsplit and vgextend to remove READ_REQUIRE_RESIZEABLE flag.
181   Use _exit() not exit() after forking to avoid flushing libc buffers twice.
182   Add cast to log_info arg in _find_labeller to avoid Sparc64 warning.
183   Make cmd->cmd_line const.
184   Fix dev name mismatch in vgcreate man page example.
185   Refactor vg_remove_single for use in liblvm.
186   Make all tools use consistent lock ordering obtaining VG_ORPHAN lock second.
187   Check md devices for a partition table during device scan.
188   Add extended device (blkext) and md partition (mdp) types to filters.
189   Make text metadata read errors for segment areas more precise.
190   Fix text segment metadata read errors to mention correct segment name.
191   Include segment and LV names in text segment import error messages.
192   Add parent node to config_node structure.
193   Update vgsplit and vgcreate to call new vg_create and 'set' functions.
194   Change vg_create to take minimal parameters, obtain a lock, and return vg_t.
195   Refactor vgchange extent_size, max_lv, max_pv, and alloc_policy for liblvm.
196   Update t-vgcreate-usage.sh to test for default vg properties.
197   Fix memory leak in vgsplit when re-reading the vg.
198   Make various exit/cleanup paths more robust after lvm init failures.
199   Use LCK_NONBLOCK implicitly instead of explicit vg_read() flag.
200   Remove unnecessary locking and existence tests from new vg_read() interface.
201   Permit several segment types to be registered by a single shared object.
202   Update the man pages to document size units uniformly.
203   Allow commandline sizes to be specified in terms of bytes and sectors.
204   Update 'md_chunk_alignment' to use stripe-width to align PV data area.
205   Update test/t-inconsistent-metadata.sh to match new vg_read interface.
206   Add lvmcache_init() to polldaemon initialization.
207   Convert tools to use new vg_read / vg_read_for_update.
208   Fix segfault in vg_release when vg->cmd is NULL.
209
210 Version 2.02.48 - 30th June 2009
211 ================================
212   Abort if automatic metadata correction fails when reading VG to update it.
213   Explicitly request fallback to default major number in device mapper.
214   Ignore suspended devices during repair.
215   Call vgreduce --removemissing automatically to fix missing PVs in dmeventd.
216   Suggest using lvchange --resync when adding leg to not-yet-synced mirror.
217   Destroy toolcontext on clvmd exit to avoid memory pool leaks.
218   Fix lvconvert not to poll mirror if no conversion in progress.
219   Fix memory leaks in toolcontext error path.
220   Reinstate partial activation support in clustered mode. (2.02.40)
221   Allow metadata correction even when PVs are missing.
222   Use 'lvm lvresize' instead of 'lvresize' in fsadm.
223   Do not use '-n' realine option in fsadm for busybox compatiblity.
224   Add vg_lock_newname() library function for vgrename, vgsplit and vgcreate.
225   Round up requested readahead to at least one page and print warning.
226   Try to repair vg before actual vgremove when force flag provided.
227   Fix possible double release of VG after recovery.
228   Add parameter to process_each_vg specifying what to do with inconsistent VG.
229   Unify error messages when processing inconsistent volume group.
230   Use lvconvert --repair instead of vgreduce in mirror dmeventd DSO.
231   Introduce lvconvert --use_policies (repair policy according to lvm.conf).
232   Update clvmd-corosync to match new corosync API.
233   Fix lib Makefile to include any shared libraries in default target.
234   Fix rename of active snapshot with virtual origin.
235   Fix convert polling to ignore LV with different UUID.
236   Cache underlying device readahead only before activation calls.
237   Fix segfault when calculating readahead on missing device in vgreduce.
238   Remove verbose 'visited' messages.
239   Handle multi-extent mirror log allocation when smallest PV has only 1 extent.
240   Add LSB standard headers and functions (incl. reload) to clvmd initscript.
241   When creating new LV, double-check that name is not already in use.
242   Remove /dev/vgname/lvname symlink automatically if LV is no longer visible.
243   Rename internal vorigin LV to match visible LV.
244   Suppress 'removed' messages displayed when internal LVs are removed.
245   Fix lvchange -a and -p for sparse LVs.
246   Fix lvcreate --virtualsize to activate the new device immediately.
247   Make --snapshot optional with lvcreate --virtualsize.
248   Generalise --virtualoriginsize to --virtualsize.
249   Skip virtual origins in process_each_lv_in_vg() without --all.
250   Fix counting of virtual origin LVs in vg_validate.
251   Attempt to load dm-zero module if zero target needed but not present.
252
253 Version 2.02.47 - 22nd May 2009
254 ===============================
255   Rename liblvm.so to liblvm2app.so and use configure --enable-applib.
256   Reinstate version in liblvm2cmd.so soname. (2.02.44)
257
258 Version 2.02.46 - 21st May 2009
259 ===============================
260   Inherit readahead setting from underlying devices during activation.
261   Detect LVs active on remote nodes by querying locks if supported.
262   Enable online resizing of mirrors.
263   Use suspend with flush when device size was changed during table preload.
264   Implement query_resource_fn for cluster_locking.
265   Support query_resource_fn in locking modules.
266   Introduce CLVMD_CMD_LOCK_QUERY command for clvmd.
267   Fix pvmove to revert operation if temporary mirror creation fails.
268   Fix metadata export for VG with missing PVs.
269   Add vgimportclone and install it and the man page by default.
270   Force max_lv restriction only for newly created LV.
271   Remove unneeded import parameter from lv_create_empty.
272   Merge lv_is_displayable and lv_is_visible functions.
273   Introduce lv_set_visible & lv_set_hidden functions.
274   Fix lv_is_visible to handle virtual origin.
275   Introduce link_lv_to_vg and unlink_lv_from_vg functions.
276   Remove lv_count from VG and use counter function instead.
277   Fix snapshot segment import to not use duplicate segments & replace.
278   Do not query nonexistent devices for readahead.
279   Remove NON_BLOCKING lock flag from tools and set a policy to auto-set.
280   Remove snapshot_count from VG and use function instead.
281   Fix first_seg() call for empty segment list.
282   Add install_lvm2 makefile target to install only the LVM2 components.
283   Reject missing PVs from allocation in toollib.
284   Fix PV datalignment for values starting prior to MDA area. (2.02.45)
285   Add sparse devices: lvcreate -s --virtualoriginsize (hidden zero origin).
286   Fix minimum width of devices column in reports.
287   Add lvs origin_size field.
288   Fix linux configure --enable-debug to exclude -O2.
289   Implement lvconvert --repair for repairing partially-failed mirrors.
290   Fix vgreduce --removemissing failure exit code.
291   Fix remote metadata backup for clvmd.
292   Introduce unlock_and_release_vg macro.
293   Introduce vg_release() to be called to free every struct volume_group.
294   Alloc PV internal structure from VG mempool if possible.
295   Fix metadata backup to run after vg_commit always.
296   Tidy clvmd volume lock cache functions.
297   Fix pvs report for orphan PVs when segment attributes are requested.
298   Fix pvs -a output to not read volume groups from non-PV devices.
299   Add MMC (mmcblk) device type to filters.
300   Introduce memory pools per volume group (to reduce memory for large VGs).
301   Use copy of PV structure when manipulating global PV lists.
302   Always return exit error status when locking of volume group fails.
303   Fix mirror log convert validation question.
304   Avoid referencing files from DESTDIR during build process.
305   Avoid creating some static libraries unless configured --enable-static_link.
306   Enable use of cached metadata for pvs and pvdisplay commands.
307   Add missing 'device-mapper' internal subdir build dependency.
308   Fix memory leak in mirror allocation code.
309   Save and restore the previous logging level when log level is changed.
310   Fix error message when archive initialization fails.
311   Make sure clvmd-corosync releases the lockspace when it exits.
312   Fix segfault for vgcfgrestore on VG with missing PVs.
313   Block SIGTERM & SIGINT in clvmd subthreads.
314   Detect and conditionally wipe swapspace signatures in pvcreate.
315   Fix maximal volume count check for snapshots if max_lv set for volume group.
316   Fix lvcreate to remove unused cow volume if the snapshot creation fails.
317   Fix error messages when PV uuid or pe_start reading fails.
318   Build new liblvm application-level library.
319   Rename liblvm.a to liblvm-internal.a.
320   Flush memory pool and fix locking in clvmd refresh and backup command.
321   Fix unlocks in clvmd-corosync. (2.02.45)
322   Fix error message when adding metadata directory to internal list fails.
323   Fix size and error message of memory allocation at backup initialization.
324   Remove old metadata backup file after renaming VG.
325   Restore log_suppress state when metadata backup file is up-to-date.
326
327 Version 2.02.45 - 3rd March 2009
328 ================================
329   Avoid scanning empty metadata areas for VG names.
330   Attempt proper clean up in child before executing new binary in exec_cmd().
331   Do not scan devices if reporting only attributes from PV label.
332   Use pkgconfig to obtain corosync library details during configuration.
333   Fix error returns in clvmd-corosync interface to DLM.
334   Add --refresh to vgchange and vgmknodes man pages.
335   Pass --test from lvresize to fsadm as --dry-run.
336   Supply argv[] list to exec_cmd() to allow for variable number of parameters.
337   Prevent fsadm from checking mounted filesystems.
338   No longer treats any other key as 'no' when prompting in fsadm.
339   Tidy fsadm command line processing.
340   Add lib/lvm.h and lib/lvm_base.c for the new library interface.
341   Move tools/version.h to lib/misc/lvm-version.h.
342   Split LVM_VERSION into MAJOR, MINOR, PATCHLEVEL, RELEASE and RELEASE_DATE.
343   Add system_dir parameter to create_toolcontext().
344   Add --dataalignment to pvcreate to specify alignment of data area.
345   Exclude LCK_CACHE locks from _vg_lock_count, fixing interrupt unblocking.
346   Provide da and mda locations in debug message when writing text format label.
347   Mention the restriction on file descriptors at invocation on the lvm man page.
348   Index cached vgmetadata by vgid not vgname to cope with duplicate vgnames.
349   No longer require kernel and metadata major numbers to match.
350   Add a fully-functional get_cluster_name() to clvmd corosync interface.
351   Remove duplicate cpg_initialize from clvmd startup.
352   Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
353   Allow clvmd to start up if its lockspace already exists.
354   Separate PV label attributes which do not need parse metadata when reporting.
355   Remove external dependency on the 'cut' command from fsadm.
356   Fix pvs segfault when pv mda attributes requested for not available PV.
357   Add fsadm support for reszing ext4 filesysystems.
358   Move locking_type reading inside init_locking().
359   Rename get_vgs() to get_vgnames() and clarify related error messages.
360   Allow clvmd to be built with all cluster managers & select one on cmdline.
361   Mention --with-clvmd=corosync in ./configure.
362   Replace internal vg_check_status() implementation.
363   Rename vg_read() to vg_read_internal().
364
365 Version 2.02.44 - 26th January 2009
366 ===================================
367   Fix --enable-static_link after the recent repository changes.
368   Add corosync/DLM cluster interface to clvmd.
369   Add --nameprefixes, --unquoted, --rows to pvs, vgs, lvs man pages.
370   Fix lvresize size conversion for fsadm when block size is not 1K.
371   Fix pvs segfault when run with orphan PV and some VG fields.
372   Display a 'dev_size' of zero for missing devices in reports.
373   Add pv_mda_size to pvs and vg_mda_size to vgs.
374   Fix lvmdump /sys listing to include virtual devices directory.
375   Add "--refresh" functionality to vgchange and vgmknodes.
376   Avoid exceeding LV size when wiping device.
377   Calculate mirror log size instead of using 1 extent.
378   Ensure requested device number is available before activating with it.
379   Fix incorrect exit status from 'help <command>'.
380   Fix vgrename using UUID if there are VGs with identical names.
381   Fix segfault when invalid field given in reporting commands.
382   Move is_static from cmd to global is_static().
383   Refactor init_lvm() for lvmcmdline and clvmd.
384   Add liblvm interactive test infrastructure to build.
385   Add skeleton lvm2.h file in preparation for a shared library interface.
386   Use better random seed value in temp file creation.
387   Add read_urandom to read /dev/urandom. Use in uuid calculation.
388   Use displayable_lvs_in_vg and lv_is_displayable for consistency throughout.
389   Fix race in vgcreate that would result in second caller overwriting first.
390   Fix uninitialised lv_count in vgdisplay -c.
391   Don't skip updating pvid hash when lvmcache_info struct got swapped.
392   Add tinfo to termcap search path for pld-linux.
393   Fix startup race in clvmd.
394   Generate Red Hat clvmd startup script at config time with correct paths.
395   Fix clvmd & dmeventd builds after tree restructuring.
396   Cope with snapshot dependencies when removing a whole VG with lvremove.
397   Make man pages and tool help text consistent using | for alternative options.
398
399 Version 2.02.43 - 10th November 2008
400 ====================================
401   Merge device-mapper into the lvm2 tree.
402   Correct prototype for --permission on lvchange and lvcreate man pages.
403   Exit with non-zero status from vgdisplay if couldn't show any requested VG.
404   Move list.c into libdevmapper and rename functions.
405   Rename a couple of variables that matched function names.
406   Use simplified x.y.z version number in libdevmapper.pc.
407   Remove ancient debian directory.
408   Split out lvm-logging.h from log.h and lvm-globals.[ch] from log.[ch].
409
410 Version 2.02.42 - 26th October 2008
411 ===================================
412   Accept locking fallback_to_* options in the global section as documented.
413   Fix temp table activation in mirror conversions not to happen in other cmds.
414   Fix temp table in mirror conversions to use always-present error not zero.
415
416 Version 2.02.41 - 17th October 2008
417 ===================================
418   Use temp table to set device size when converting mirrors.
419   In resume_mirror_images replace activate_lv with resume_lv as workaround.
420   Avoid overwriting in-use on-disk text metadata by forgetting MDA_HEADER_SIZE.
421   Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
422   Generate man pages from templates and include version.
423   Add usrlibdir and usrsbindir to configure.
424   Fix conversion of md chunk size into sectors.
425   Free text metadata buffer after a failure writing it.
426   Fix misleading error message when there are no allocatable extents in VG.
427   Fix handling of PVs which reappeared with old metadata version.
428   Fix mirror DSO to call vgreduce with proper parameters.
429   Fix validation of --minor and --major in lvcreate to require -My always.
430   Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
431
432 Version 2.02.40 - 19th September 2008
433 =====================================
434   Allow lvremove to remove LVs from VGs with missing PVs.
435   In VG with PVs missing, by default allow activation of LVs that are complete.
436   Track PARTIAL_LV and MISSING_PV flags internally.
437   Require --force with --removemissing in vgreduce to remove partial LVs.
438   No longer write out PARTIAL flag into metadata backups.
439   Treat new default activation/missing_stripe_filler "error" as an error target.
440   Remove internal partial_mode.
441   Add devices/md_chunk_alignment to lvm.conf.
442   Pass struct physical_volume to pe_align and adjust for md chunk size.
443   Store sysfs location in struct cmd_context.
444   Avoid shuffling remaining mirror images when removing one, retaining primary.
445   Add missing LV error target activation in _remove_mirror_images.
446   Prevent resizing an LV while lvconvert is using it.
447   Avoid repeatedly wiping cache while VG_GLOBAL is held in vgscan & pvscan.
448   Fix pvresize to not allow resize if PV has two metadata areas.
449   Fix setting of volume limit count if converting to lvm1 format.
450   Fix vgconvert logical volume id metadata validation.
451   Fix lvmdump metadata gather option (-m) to work correctly.
452   Fix allocation bug in text metadata format write error path.
453   Fix vgcfgbackup to properly check filename if template is used.
454   configure aborts if lcov or genhtml are missing with --enable-profiling
455   vgremove tries to remove lv snapshot first.
456   Added function lv_remove_with_dependencies().
457   Improve file descriptor leak detection to display likely culprit and filename.
458   Change clustered mirror kernel module name from cmirror to dm-log-clustered.
459   Avoid looping forever in _pv_analyze_mda_raw used by pvck.
460   Change lvchange exit status to indicate if any part of the operation failed.
461   Fix pvchange and pvremove to handle PVs without mdas.
462   Refactor _text_pv_read and always return mda list if requested.
463   Fix configure to work w/o readline unless --enable-readline used. (2.02.39)
464   Remove is_lvm_partition template which has not yet been coded.
465   Refactor pvcreate to separate parameter parsing from validation logic.
466   Check for label_write() failure in _text_pv_write().
467   Add pvcreate tests and update vgsplit tests to handle lvm1 and lvm2 metadata.
468   Fix pvchange -M1 -u to preserve existing extent locations when there's a VG.
469   Cease recognising snapshot-in-use percentages returned by early devt kernels.
470   Add backward-compatible flags field to on-disk format_text metadata.
471   Fix dmeventd monitoring libraries to link against liblvm2cmd again. (2.02.39)
472
473 Version 2.02.39 - 27th June 2008
474 ================================
475   Enable readline by default if available.
476   Update autoconf to 2008-01-16.
477   Add $DISTCLEAN_DIRS to make.tmpl.in.
478   Create coverage reports with --enable-profiling and make lcov or lcov-dated.
479   Fix up cache for PVs without mdas after consistent VG metadata is processed.
480   Update validation of safe mirror log type conversions in lvconvert.
481   Fix lvconvert to disallow snapshot and mirror combinations.
482   Fix reporting of LV fields alongside unallocated PV segments.
483   Add --unquoted and --rows to reporting tools.
484   Add and use uninitialized_var() macro to suppress invalid compiler warnings.
485   Introduce enum for md minor sb version to suppress compiler warning.
486   Avoid undefined return value after _memlock manipulation in lvm2_run.
487   Avoid link failure if configured without --enable-cmdlib or --enable-readline.
488   Make clvmd return at once if other nodes down in a gulm or openais cluster.
489   Fix and improve readahead 'auto' calculation for stripe_size.
490   Fix lvchange output for -r auto setting if auto is already set.
491   Add test case for readahead.
492   Avoid ambiguous use of identifier error_message_produced.
493   Begin syncing configure.in for merge/unification with device-mapper.
494   Fix add_mirror_images not to dereference uninitialized log_lv upon failure.
495   Don't call openlog for every debug line output by clvmd.
496   Add --force to lvextend and lvresize.
497   Fix vgchange not to activate component mirror volumes directly.
498   Fix test directory clean up in make distclean.
499
500 Version 2.02.38 - 11th June 2008
501 ================================
502   Fix tracking of validity of PVs with no mdas in lvmcache.
503   Fix return values for reporting commands when run with no PVs, LVs, or VGs.
504   Add omitted unlock_vg() call when sigint_caught() during vg processing.
505   Fix free_count when reading pool metadata.
506   Fix segfault when using pvcreate on a device containing pool metadata.
507   Fix segfault after _free_vginfo by remembering to remove vginfo from list.
508   Tweak detection of invalid fid after changes to PVs in VG in _vg_read.
509   Revert assuming precommitted metadata is live when activating (unnecessary).
510   Drop cached metadata for disappearing VG in vgmerge.
511   In script-processing mode, stop if any command fails.
512   Warn if command exits with non-zero status code without a prior log_error.
513   Check lv_count in vg_validate.
514   Add --nameprefixes to reporting tools for field name prefix output format.
515
516 Version 2.02.37 - 6th June 2008
517 ===============================
518   Make clvmd-cman use a hash rather than an array for node updown info.
519   Correct config file line numbers in messages when parsing comments.
520   Drop cached metadata when renaming a VG.
521   Allow for vginfo changing during _vg_read.
522   Decode numbers in clvmd debugging output.
523   Add missing deactivation after activation failure in lvcreate -Zy.
524   When activating, if precommitted metadata is still cached, assume it's live.
525   When removing LV symlinks, skip any where the VG name is not determined.
526   Drop metadata cache if update fails in vg_revert or vg_commit.
527   Avoid spurious duplicate VG messages referring to VGs that are gone.
528   Drop dev_name_confirmed error message to debug level.
529   Fix setpriority error message to signed int.
530   Temporarily disable dmeventd mirror monitoring during lvchange --resync.
531   Refactor some vginfo manipulation code.
532   Add assertions to trap deprecated P_ and V_ lock usage.
533   Add missing mutex around clvmd lvmcache_drop_metadata library call.
534   Fix uninitialised mutex in clvmd if all daemons are not running at startup.
535   Avoid using DLM locks with LCK_CACHE type P_ lock requests.
536   When asked to drop cached committed VG metadata, invalidate cached PV labels.
537   Drop metadata cache before writing precommitted metadata instead of after.
538   Don't touch /dev in vgrename if activation is disabled.
539
540 Version 2.02.36 - 29th April 2008
541 =================================
542   Fix fsadm.sh to work with older blockdev, blkid & readlink binaries.
543   Fix lvresize to pass new size to fsadm when extending device.
544   Remove unused struct in clvmd-openais, and use correct node count.
545   Fix nodes list in clvmd-openais, and allow for broadcast messages.
546   Exclude VG_GLOBAL from internal concurrent VG lock counter.
547   Fix vgsplit internal counting of snapshot LVs.
548   Fix vgmerge snapshot_count when source VG contains snapshots.
549   Simplify clvmd-openais by using non-async saLckResourceLock.
550   Fix internal LV counter when a snapshot is removed.
551   Fix metadata corruption writing lvm1-formatted metadata with snapshots.
552   Fix lvconvert -m0 allocatable space check.
553
554 Version 2.02.35 - 15th April 2008
555 =================================
556   Drop cached VG metadata before and after committing changes to it.
557   Rename P_global to P_#global.
558   Don't attempt remote metadata backups of non-clustered VGs. (2.02.29)
559   Don't store fid in VG metadata cache to avoid clvmd segfault. (2.02.34)
560   Update vgsplit tests to verify loosening of active LV restriction.
561   Update vgsplit to only restrict split with active LVs involved in split.
562   Add lv_is_active() to determine whether an lv is active.
563
564 Version 2.02.34 - 10th April 2008
565 =================================
566   Improve preferred_names lvm.conf example.
567   Fix vgdisplay 'Cur LV' field to match lvdisplay output.
568   Fix lv_count report field to exclude hidden LVs.
569   Add vg_is_clustered() helper function.
570   Fix vgsplit to only move hidden 'snapshotN' LVs when necessary.
571   Update vgsplit tests for lvnames on the cmdline.
572   Update vgsplit man page to reflect lvnames on the cmdline.
573   Update vgsplit to take "-n LogicalVolumeName" on the cmdline.
574   Use clustered mirror log with pvmove in clustered VGs, if available.
575   Fix some pvmove error status codes.
576   Fix vgsplit error paths to release vg_to lock.
577   Indicate whether or not VG is clustered in vgcreate log message.
578   Mention default --clustered setting in vgcreate man page.
579   Add config file overrides to clvmd when it reads the active LVs list.
580   Fix vgreduce to use vg_split_mdas to check sufficient mdas remain.
581   Add (empty) orphan VGs to lvmcache during initialisation.
582   Fix orphan VG name used for format_pool.
583   Create a fid for internal orphan VGs.
584   Update lvmcache VG lock state for all locking types now.
585   Fix output if overriding command_names on cmdline.
586   Add detection of clustered mirror log capability.
587   Add check to vg_commit() ensuring VG lock held before writing new VG metadata.
588   Add validation of LV name to pvmove -n.
589   Make clvmd refresh the context correctly when lvm.conf is updated.
590   Add some basic internal VG lock validation.
591   Add per-command flags to control which commands use the VG metadata cache.
592   Fix vgsplit locking of new VG (2.02.30).
593   Avoid erroneous vgsplit error message for new VG. (2.02.29)
594   Suppress duplicate message when lvresize fails because of invalid vgname.
595   Cache VG metadata internally while VG lock is held.
596   Fix redundant lvresize message if vg doesn't exist.
597   Fix another allocation bug with clvmd and large node IDs.
598   Add find_lv_in_lv_list() and find_pv_in_pv_list().
599   Fix uninitialised variable in clvmd that could cause odd hangs.
600   Add vgmerge tests.
601   Add pvseg_is_allocated() for identifying a PV segment allocated to a LV.
602   Add list_move() for moving elements from one list to another.
603   Add 'is_reserved_lvname()' for identifying hidden LVs.
604   Correct command name in lvmdiskscan man page.
605   clvmd no longer crashes if it sees nodeids over 50.
606   Fix potential deadlock in clvmd thread handling.
607   Refactor text format initialisation into _init_text_import.
608   Escape double quotes and backslashes in external metadata and config data.
609   Add functions for escaping double quotes in strings.
610   Rename count_chars_len to count_chars.
611   Use return_0 in a couple more places.
612   Correct a function name typo in _line_append error message.
613   Include limits.h in clvmd so it compiles with newer headers.
614   Add VirtIO disks (virtblk) to filters.
615   Fix resetting of MIRROR_IMAGE and VISIBLE_LV after removal of LV. (2.02.30)
616   Fix remove_layer_from_lv to empty the LV before removing it. (2.02.30)
617   Add missing no-longer-used segs_using_this_lv test to check_lv_segments.
618   Remove redundant non-NULL tests before calling free in clvmd.c.
619   Avoid a compiler warning: make is_orphan's parameter const.
620   Fix lvconvert detection of mirror conversion in progress. (2.02.30)
621   Avoid automatic lvconvert polldaemon invocation when -R specified. (2.02.30)
622   Fix 'pvs -a' to detect VGs of PVs without metadata areas.
623   Divide up internal orphan volume group by format type.
624   Update usage message for clvmd.
625   Fix clvmd man page not to print <br> and clarified debug options.
626   Fix lvresize to support /dev/mapper prefix in the LV name.
627   Fix unfilled parameter passed to fsadm from lvresize.
628   Update fsadm to call lvresize if the partition size differs (with option -l).
629   Fix fsadm to support VG/LV names.
630
631 Version 2.02.33 - 31st January 2008
632 ===================================
633   Fix mirror log name construction during lvconvert. (2.02.30)
634   Make monitor_dev_for_events recurse through the stack of LVs.
635   Clean up some more compiler warnings.
636   Some whitespace tidy-ups.
637   Use stack return macros throughout.
638   Rely upon internally-cached PV labels while corresponding VG lock is held.
639
640 Version 2.02.32 - 29th January 2008
641 ===================================
642   Fix two check_lv_segments error messages to show whole segment.
643   Refactor mirror log attachment code.
644   Fix internal metadata corruption in lvchange --resync. (2.02.30)
645   Fix new parameter validation in vgsplit and test mode. (2.02.30)
646   Remove redundant cnxman-socket.h file from clvmd directory.
647   Fix pvs, vgs, lvs error exit status on some error paths.
648
649 Version 2.02.31 - 19th January 2008
650 ===================================
651   Fix lvcreate --nosync not to wait for non-happening sync. (2.02.30)
652   Add very_verbose lvconvert messages.
653   Avoid readahead error message with default setting of lvcreate -M1. (2.02.29)
654
655 Version 2.02.30 - 17th January 2008
656 ===================================
657   Set default readahead to twice maximium stripe size.
658   Reinstate VG extent size and stripe size defaults (halved). (2.02.29)
659   Add lists of stacked LV segments using each LV to the internal metadata.
660   Change vgsplit -l (for unimplemented --list) into --maxlogicalvolumes.
661   Fix process_all_pvs to detect non-orphans with no MDAs correctly.
662   Don't use block_on_error with mirror targets version 1.12 and above.
663   Update vgsplit to accept vgcreate options when new VG is destination.
664   Update vgsplit to accept existing VG as destination.
665   lvconvert waits for completion of initial sync by default.
666   Refactor vgcreate for parameter validation and add tests.
667   Add new convert_lv field to lvs output.
668   Print warning when lvm tools are running as non-root.
669   Add snapshot dmeventd library (enables dmeventd snapshot monitoring).
670   Prevent pvcreate from overwriting MDA-less PVs belonging to active VGs.
671   Fix a segfault if using pvs with --all argument. (2.02.29)
672   Update --uuid argument description in man pages.
673   Fix vgreduce PV list processing not to process every PV in the VG. (2.02.29)
674   Extend lvconvert to use polldaemon.
675   Add support for stacked mirrors.
676   Major restructuring of pvmove and lvconvert layer manipulation code.
677   Replace tools/fsadm with scripts/fsadm.sh.
678   Append fields to report/pvsegs_cols_verbose.
679   Permit LV segment fields with PV segment reports.
680   Add seg_start_pe and seg_pe_ranges to reports.
681
682 Version 2.02.29 - 5th December 2007
683 ===================================
684   Make clvmd backup vg metadata on remote nodes.
685   Refactor pvmove allocation code.
686   Decode cluster locking state in log message.
687   Change file locking state messages from debug to very verbose.
688   Fix --addtag to drop @ prefix from name.
689   Stop clvmd going haywire if a pre_function fails.
690   Convert some vg_reads into vg_lock_and_reads.
691   Avoid nested vg_reads when processing PVs in VGs and fix associated locking.
692   Accept sizes with --readahead argument.
693   Store size arguments as sectors internally.
694   Attempt to remove incomplete LVs with lvcreate zeroing/activation problems.
695   Add read_ahead activation code.
696   Add activation/readahead configuration option and FMT_RESTRICTED_READAHEAD.
697   Extend readahead arg to accept "auto" and "none".
698   Add lv_read_ahead and lv_kernel_read_ahead fields to reports and lvdisplay.
699   Prevent lvconvert -s from using same LV as origin and snapshot.
700   Fix human-readable output of odd numbers of sectors.
701   Add pv_mda_free and vg_mda_free fields to reports for raw text format.
702   Add LVM2 version to 'Generated by' comment in metadata.
703   Show 'not usable' space when PV is too large for device in pvdisplay.
704   Ignore and fix up any excessive device size found in metadata.
705   Fix error message when fixing up PV size in lvm2 metadata (2.02.11).
706   Fix orphan-related locking in pvdisplay and pvs.
707   Fix missing VG unlocks in some pvchange error paths.
708   Add some missing validation of VG names.
709   Rename validate_vg_name() to validate_new_vg_name().
710   Change orphan lock to VG_ORPHANS.
711   Change format1 to use ORPHAN as orphan VG name.
712   Convert pvchange, pvdisplay, pvscan to use is_orphan()
713   Add is_orphan_vg() and change all hard-coded checks to use it.
714   Detect md superblocks version 1.0, 1.1 and 1.2.
715   Add _alloc_pv() and _free_pv() from _pv_create() code and fix error paths.
716   Add pv_dev_name() to access PV device name.
717   Add const attributes to pv accessor functions.
718   Refactor vg_add_snapshot() and lv_create_empty().
719   Handle new sysfs subsystem/block/devices directory structure.
720   Run test with LVM_SYSTEM_DIR pointing to private root and /dev dirs.
721   Fix a bug in lvm_dump.sh checks for lvm/dmsetup binaries.
722   Fix underquotations in lvm_dump.sh.
723   Refactor lvcreate stripe and mirror parameter validation.
724   Print --help output to stdout, not stderr.
725   After a cmdline processing error, don't print help text but suggest --help.
726   Add %PVS extents option to lvresize, lvextend, and lvcreate.
727   Add 'make check' to run tests in new subdirectory 'test'.
728   Moved the obsolete test subdirectory to old-tests.
729   Cope with relative paths in configure --with-dmdir.
730   Remove no-longer-correct restrictions on PV arg count with stripes/mirrors.
731   Fix strdup memory leak in str_list_dup().
732   Link with -lpthread when static SELinux libraries require that.
733   Detect command line PE values that exceed their 32-bit range.
734   Include strerror string in dev_open_flags' stat failure message.
735   Move guts of pvresize into library.
736   Avoid error when --corelog is provided without --mirrorlog. (2.02.28)
737   Correct --mirrorlog argument name in man pages (not --log).
738   Clear MIRROR_NOTSYNCED LV flag when converting from mirror to linear.
739   Modify lvremove to prompt for removal if LV active on other cluster nodes.
740   Add '-f' to vgremove to force removal of VG even if LVs exist.
741
742 Version 2.02.28 - 24th August 2007
743 ==================================
744   Fix clvmd logging so you can get lvm-level debugging out of it.
745   Introduce VG_GLOBAL lock type for vgscan/pvscan to trigger clvmd -R.
746   Change locking_flags from int to uint32_t.
747   Fix clvmd -R, so it fully refreshes the caches.
748   Change lvconvert_mirrors to use mirror segtype not striped.
749   Fix lvconvert_mirrors detection of number of existing mirrors.
750   Clean up numerous compiler warnings that appeared in recent releases.
751   Remove several unused parameters from _allocate().
752   Only permit --force, --verbose and --debug arguments to be repeated.
753   Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1.
754   Move guts of vgremove and lvremove into library, including yes_no_prompt.
755   Allow clvmd debug to be turned on in a running daemon using clvmd -d [-C].
756   Update to use autoconf 2.61, while still supporting 2.57.
757   Add more cluster info to lvmdump.
758   Add further const attributes throughout.
759   Add support for renaming mirrored LVs.
760   Factor out core of lvrename() to library function.
761   Add --mirrorlog argument to specify log type for mirrors.
762   Don't attempt to monitor devices if their creation failed in _lv_activate.
763   Don't leak a file descriptor in fcntl_lock_file() when fcntl fails.
764   Replace create_dir with dm_create_dir.
765   Detect stream write failure reliably with lvm_fclose using dm_fclose.
766   Fix clvmd if compiled with gulm support. (2.02.26)
767   Fix lvdisplay man page to say LV size is reported in sectors, not KB.
768   Add vg_lock_and_read() external library function.
769   Fix loading of persistent cache if cache_dir is used. (2.02.23)
770   Reduce _compare_paths lstat error message from log_error to log_very_verbose.
771   Create util.h with last_path_component replacing strdup + basename.
772   Use gcc's printf attribute wherever possible.
773   In _line_append, use "sizeof buf - 1" rather than equivalent "4095".
774   Introduce is_same_inode macro, now including a comparison of st_dev.
775   Don't leak a file descriptor in _lock_file() when flock fails.
776   Add SUN's LDOM virtual block device (vdisk) and ps3disk to filters.
777   Split metadata-external.h out from metadata.h for the tools to use.
778
779 Version 2.02.27 - 17th July 2007
780 ================================
781   Fix snapshot cow area deactivation if origin is not active. (2.02.13)
782   Fix configure libdevmapper.h check when --with-dmdir is used.
783   Turn _add_pv_to_vg() into external library function add_pv_to_vg().
784   Add pv_by_path() external library function.
785   Tidy clvmd-openais of redundant bits, and improve an error report.
786   Cope with find_seg_by_le() failure in check_lv_segments().
787   Call dev_iter_destroy() if _process_all_devs() is interrupted by sigint.
788   Add vg_mda_count and pv_mda_count columns to reports.
789   Fix dumpconfig to use log_print instead of stdout directly.
790   Remove unused parameter 'fid' from _add_pv_to_vg.
791   Add kernel and device-mapper targets versions to lvmdump.
792   Replace BSD (r)index with C89 str(r)chr.
793   Handle vgsplit of an entire VG as a vgrename.
794   Reinitialise internal lvmdiskscan variables when called repeatedly.
795   Fix missing lvm_shell symbol in lvm2cmd library. (2.02.23)
796   Add vg_status function and clean up vg->status in tools directory.
797   Add --ignoremonitoring to disable all dmeventd interaction.
798   Remove get_ prefix from get_pv_* functions.
799   clvmd-openais now uses cpg_local_get() to get nodeid, rather than Clm.
800   Print warnings to stderr instead of stdout.
801
802 Version 2.02.26 - 15th June 2007
803 ================================
804   Update vgcfgrestore man page.
805   Allow keyboard interrupt during user prompts when appropriate.
806   Remove unused clvmd system-lv code.
807   Replace many physical_volume struct dereferences with new get_pv_* functions.
808   Suppress a benign compile-time warning.
809   Convert find_pv_in_vg_by_uuid and pv_create to use PV handles.
810   Add wrappers to some functions in preparation for external LVM library.
811   Add -f to vgcfgrestore to list metadata backup files.
812   Add vg_check_status to consolidate vg status checks and error messages.
813   Add pvdisplay --maps implementation.
814   Remove unsupported LVM1 options from vgcfgrestore man page.
815   Update vgcfgrestore man page to show mandatory VG name.
816   Update vgrename man page to include UUID and be consistent with lvrename.
817   Add (experimental) OpenAIS support to clvmd.
818   Fix deactivation code to follow dependencies and remove symlinks.
819   Fix and clarify vgsplit error messages.
820   Fix a segfault in device_is_usable() if a device has no table.
821   Add some more debug messages to clvmd startup.
822   Misc clvmd cleanups.
823
824 Version 2.02.25 - 27th April 2007
825 =================================
826   Fix get_config_uint64() to read a 64-bit value not a 32-bit one.
827   Add -Wformat-security and change one fprintf() to fputs().
828   Move regex functions into libdevmapper.
829   Change some #include lines to search only standard system directories.
830   Add devices/preferred_names config regex list for displayed device names.
831   Free a temporary dir string in fcntl_lock_file() after use.
832   Fix a dm_pool_destroy() in matcher_create().
833   Introduce goto_bad macro.
834   Fix warnings on x86_64 involving ptrdiff_t in log_error messages.
835   Update pvck to include text metadata area and record detection.
836   Add support functions for token counting in config file extracts.
837   Update pvck to read labels on disk, with --labelsector parameter.
838   Add count_chars and count_chars_len functions.
839   Add /sys/block listings to lvm_dump.sh.
840   Make lvm_dump.sh list /dev recursively.
841   Fix thread race in clvmd.
842   Add scan_sector param to label_read and _find_labeller.
843   Make clvmd cope with quorum devices.
844   Add extra internal error checking to clvmd.
845   Add dev_read_circular.
846   Add pvck command stub.
847   Update lists of attribute characters in man pages.
848   Change cling alloc policy attribute character from 'C' to l'.
849   Fix creation and conversion of mirrors with tags.
850   Fix vgsplit for lvm1 format (set and validate VG name in PVs metadata).
851   Split metadata areas in vgsplit properly.
852
853 Version 2.02.24 - 19th March 2007
854 =================================
855   Fix processing of exit status in init scripts
856   Fix vgremove to require at least one vg argument.
857   Fix reading of striped LVs in LVM1 format.
858   Flag nolocking as clustered so clvmd startup sees clustered LVs. (2.02.10)
859   Add a few missing pieces of vgname command line validation.
860   Support the /dev/mapper prefix on most command lines.
861
862 Version 2.02.23 - 8th March 2007
863 ================================
864   Fix vgrename active LV check to ignore differing vgids.
865   Remove no-longer-used uuid_out parameter from activation info functions.
866   Fix two more segfaults if an empty config file section encountered.
867   Move .cache file into a new /etc/lvm/cache directory by default.
868   Add devices/cache_dir & devices/cache_file_prefix, deprecating devices/cache.
869   Create directory in fcntl_lock_file() if required.
870   Exclude readline support from lvm.static.
871   Fix a leak in a reporting error path (2.02.19).
872
873 Version 2.02.22 - 13th February 2007
874 ====================================
875   Correct -b and -P on a couple of man pages.
876   Add global/units to example.conf.
877   Fix loading of segment_libraries.
878   If a PV reappears after it was removed from its VG, make it an orphan.
879   Don't update metadata automatically if VGIDs don't match.
880   Fix some vgreduce --removemissing command line validation.
881
882 Version 2.02.21 - 30th January 2007
883 ===================================
884   Add warning to lvm2_monitoring_init_rhel4 if attempting to stop monitoring.
885   Fix vgsplit to handle mirrors.
886   Reorder fields in reporting field definitions.
887   Fix vgs to treat args as VGs even when PV fields are displayed.
888   Fix md signature check to handle both endiannesses.
889
890 Version 2.02.20 - 25th January 2007
891 ===================================
892   dmeventd mirror sets ignore_suspended_devices and avoids scanning mirrors.
893   Add devices/ignore_suspended_devices to ignore suspended dm devices.
894   Add some missing close() and fclose() return code checks.
895   Fix exit statuses of reporting tools (2.02.19).
896   Add init script for dmeventd monitoring.
897   lvm.static no longer interacts with dmeventd unless explicitly asked to.
898   Add field definitions to report help text.
899   Remove unnecessary cmd arg from target_*monitor_events().
900   Add private variable to dmeventd shared library interface.
901   Long-lived processes write out persistent dev cache in refresh_toolcontext().
902   Fix refresh_toolcontext() always to wipe persistent device filter cache.
903   Add is_long_lived to toolcontext.
904   Add --clustered to man pages.
905   Streamline dm_report_field_* interface.
906   Change remaining dmeventd terminology 'register' to 'monitor'.
907   Update reporting man pages.
908   No longer necessary to specify alignment type for report fields.
909
910 Version 2.02.19 - 17th January 2007
911 ===================================
912   Fix a segfault if an empty config file section encountered.
913   Move basic reporting functions into libdevmapper.
914   Fix partition table processing after sparc changes (2.02.16).
915   Fix cmdline PE range processing segfault (2.02.13).
916   Some libdevmapper-event interface changes.
917   Report dmeventd mirror monitoring status.
918   Fix dmeventd mirror status line processing.
919
920 Version 2.02.18 - 11th January 2007
921 ===================================
922   Revised libdevmapper-event interface for dmeventd.
923   Remove dmeventd mirror status line word limit.
924   Use CFLAGS when linking so mixed sparc builds can supply -m64.
925   Prevent permission changes on active mirrors.
926   Print warning instead of error message if lvconvert cannot zero volume.
927   Add snapshot options to lvconvert man page.
928   dumpconfig accepts a list of configuration variables to display.
929   Change dumpconfig to use --file to redirect output to a file.
930   Avoid vgreduce error when mirror code removes the log LV.
931   Remove 3 redundant AC_MSG_RESULTs from configure.in.
932   Free memory in _raw_read_mda_header() error paths.
933   Fix ambiguous vgsplit error message for split LV.
934   Fix lvextend man page typo.
935   Add configure --with-dmdir to compile against a device-mapper source tree.
936   Use no flush suspending for mirrors.
937   Add dmeventd_mirror register_mutex, tidy initialisation & add memlock.
938   Fix create mirror with name longer than 22 chars.
939   Fix some activate.c prototypes when compiled without devmapper.
940   Fix dmeventd mirror to cope if monitored device disappears.
941
942 Version 2.02.17 - 14th December 2006
943 ====================================
944   Add missing pvremove error message when device doesn't exist.
945   When lvconvert allocates a mirror log, respect parallel area constraints.
946   Use loop to iterate through the now-ordered policy list in _allocate().
947   Check for failure to allocate just the mirror log.
948   Introduce calc_area_multiple().
949   Support mirror log allocation when there is only one PV: area_count now 0.
950   Fix detection of smallest area in _alloc_parallel_area() for cling policy.
951   Add manpage entry for clvmd -T
952   Fix gulm operation of clvmd, including a hang when doing lvchange -aey
953   Fix hang in clvmd if a pre-command failed.
954
955 Version 2.02.16 - 1st December 2006
956 ===================================
957   Fix VG clustered read locks to use PR not CR.
958   Adjust some alignments for ia64/sparc.
959   Fix mirror segment removal to use temporary error segment.
960   Always compile debug logging into clvmd.
961   Add startup timeout to RHEL4 clvmd startup script.
962   Add -T (startup timeout) switch to clvmd.
963   Improve lvm_dump.sh robustness.
964   Update lvm2create_initrd to support gentoo.
965
966 Version 2.02.15 - 21st November 2006
967 ====================================
968   Fix clvmd_init_rhel4 line truncation (2.02.14).
969   Install lvmdump by default.
970   Fix check for snapshot module when activating snapshot.
971   Fix pvremove error path for case when PV is in use.
972   Warn if certain duplicate config file entries are seen.
973   Enhance lvm_dump.sh for sysreport integration and add man page.
974   Fix --autobackup argument which could never disable backups.
975   Fix a label_verify error path.
976
977 Version 2.02.14 - 10th November 2006
978 ====================================
979   Fix adjusted_mirror_region_size() to handle 64-bit size.
980   Add some missing bounds checks on 32-bit extent counters.
981   Add Petabyte and Exabyte support.
982   Fix lvcreate error message when 0 extents requested.
983   lvremove man page: volumes must be cluster inactive before being removed.
984   Protect .cache manipulations with fcntl locking.
985   Change .cache timestamp comparisons to use ctime.
986   Fix mirror log LV writing to set all bits in whole LV.
987   Fix clustered VG detection and default runlevels in clvmd_init_rhel4.
988   Fix high-level free space check for partial allocations.
989
990 Version 2.02.13 - 27th October 2006
991 ===================================
992   Add couple of missing files to tools/Makefile CLEAN_TARGETS.
993   When adding snapshot leave cow LV mapped device active after zeroing.
994   Fix a clvmd debug message.
995   Add dev_flush() to set_lv().
996   Add lvchange --resync.
997   Perform high-level free space check before each allocation attempt.
998   Don't allow a node to remove an LV that's exclusively active on anther node.
999   Cope if same PV is included more than once in cmdline PE range list.
1000   Set PV size to current device size if it is found to be zero.
1001   Add segment parameter to target_present functions.
1002
1003 Version 2.02.12 - 16th October 2006
1004 ===================================
1005   Fix pvdisplay to use vg_read() for non-orphans.
1006   Fall back to internal locking if external locking lib is missing or fails.
1007   Retain activation state after changing LV minor number with --force.
1008   Propagate clustered flag in vgsplit and require resizeable flag.
1009
1010 Version 2.02.11 - 12th October 2006
1011 ===================================
1012   Add clvmd function to return the cluster name. not used by LVM yet.
1013   Add cling allocation policy.
1014   Change _check_contiguous() to use _for_each_pv().
1015   Extend _for_each_pv() to allow termination without error.
1016   Abstract _is_contiguous().
1017   Remove duplicated pv arg from _check_contiguous().
1018   Accept regionsize with lvconvert.
1019   Add report columns with underscore before field names ending 'size'.
1020   Correct regionsize default on lvcreate man page (MB).
1021   Fix clvmd bug that could cause it to die when a node with a long name crashed.
1022   Add device size to text metadata.
1023   Fix format_text mda_setup pv->size and pv_setup pe_count calculations.
1024   Fix _for_each_pv() for mirror with core log.
1025   Add lvm_dump.sh script to create a tarball of debugging info from a system.
1026   Capture error messages in clvmd and pass them back to the user.
1027   Remove unused #defines from filter-md.c.
1028   Make clvmd restart init script wait until clvmd has died before starting it.
1029   Add -R to clvmd which tells running clvmds to reload their device cache.
1030   Add LV column to reports listing kernel modules needed for activation.
1031   Show available fields if report given invalid field. (e.g. lvs -o list)
1032   Add timestamp functions with --disable-realtime configure option.
1033   Add %VG, %LV and %FREE suffices to lvcreate/lvresize --extents arg.
1034   Fix two potential NULL pointer derefs in error cases in vg_read().
1035   Separate --enable-cluster from locking lib options in lvmconf.sh.
1036   Add a missing comma in lvcreate man page.
1037
1038 Version 2.02.10 - 19th September 2006
1039 =====================================
1040   Fix lvconvert mirror change case detection logic.
1041   Fix mirror log detachment so it correctly becomes a standalone LV.
1042   Extend _check_contiguous() to detect single-area LVs.
1043   Include mirror log (untested) in _for_each_pv() processing.
1044   Use MIRROR_LOG_SIZE constant.
1045   Remove struct seg_pvs from _for_each_pv() to generalise.
1046   Avoid adding duplicates to list of parallel PVs to avoid.
1047   Fix several incorrect comparisons in parallel area avoidance code.
1048   Fix segment lengths when flattening existing parallel areas.
1049   Log existing parallel areas prior to allocation.
1050   Fix mirror log creation when activation disabled.
1051   Don't attempt automatic recovery without proper locking.
1052   When using local file locking, skip clustered VGs.
1053   Add fallback_to_clustered_locking and fallback_to_local_locking parameters.
1054   lvm.static uses built-in cluster locking instead of external locking.
1055   Don't attempt to load shared libraries if built statically.
1056   Change default locking_lib to liblvm2clusterlock.so.
1057   Add skip_dev_dir() to process command line VGs.
1058   Stop clvmd complaining about nodes that have left the cluster.
1059   Move lvm_snprintf(), split_words() and split_dm_name() into libdevmapper.
1060   Add lvconvert man page.
1061   Add mirror options to man pages.
1062   Prevent mirror renames.
1063   Move CMDLIB code into separate file and record whether static build.
1064
1065 Version 2.02.09 - 17th August 2006
1066 ==================================
1067   Fix PE_ALIGN for pagesize over 32KB.
1068   Separate out LVM1_PE_ALIGN and pe_align().
1069   Add lvm_getpagesize wrapper.
1070   Add --maxphysicalvolumes to vgchange.
1071
1072 Version 2.02.08 - 15th August 2006
1073 ==================================
1074   Add checks for duplicate LV name, lvid and PV id before writing metadata.
1075   Report all sanity check failures, not just the first.
1076   Fix missing lockfs on first snapshot creation.
1077   Add unreliable --trustcache option to reporting commands.
1078   Fix locking for mimage removal.
1079   Fix clvmd_init_rhel4 'status' exit code.
1080
1081 Version 2.02.07 - 17th July 2006
1082 ================================
1083   Fix activation logic in lvchange --persistent.
1084   Don't ignore persistent minor numbers when activating.
1085   Use RTLD_GLOBAL when loading shared libraries.
1086   Add some forgotten memlock checks to _vg_read to protect against full scans.
1087   Add mutex to dmeventd_mirror to avoid concurrent execution.
1088   Fix vgreduce --removemissing to return success if VG is already consistent.
1089   Fix return code if VG specified on command line is not found.
1090   Fix PV tools to include orphaned PVs in default output again.
1091   Fixed unaligned access when using clvm.
1092   Fix an extra dev_close in a label_read error path.
1093   Append patches to commit emails.
1094   Fix target_register_events args.
1095   Prevent snapshots of mirrors.
1096   Add DISTCLEAN_TARGETS to make template for configure.h.
1097   More fixes to error paths.
1098   Fix lvcreate corelog validation.
1099   Add --config for overriding most config file settings from cmdline.
1100   Quote arguments when printing command line.
1101   Remove linefeed from 'initialising logging' message.
1102   Add 'Completed' debug message.
1103   Don't attempt library exit after reloading config files.
1104   Always compile with libdevmapper, even if device-mapper is disabled.
1105
1106 Version 2.02.06 - 12th May 2006
1107 ===============================
1108   Propagate --monitor around cluster.
1109   Add --monitor to vgcreate and lvcreate to control dmeventd registration.
1110   Filter LCK_NONBLOCK in clvmd lock_vg.
1111   Add --nosync to lvcreate with LV flag NOTSYNCED.
1112   Use mirror's uuid for a core log.
1113   Add mirror log fault-handling policy.
1114   Improve mirror warning messages and tidy dmeventd syslog output.
1115   Propagate nosync flag around cluster.
1116   Allow vgreduce to handle mirror log failures.
1117   Add --corelog to lvcreate and lvconvert.
1118   Create a log header for replacement in-sync mirror log.
1119   Use set_lv() and dev_set() to wipe sections of devices.
1120   Add mirror_in_sync() flag to avoid unnecessary resync on activation.
1121   Add mirror_library description to example.conf.
1122   Fix uuid_from_num() buffer overrun.
1123   Make SIZE_SHORT the default for display_size().
1124   Fix some memory leaks in error paths found by coverity.
1125   Use C99 struct initialisers.
1126   Move DEFS into configure.h.
1127   Clean-ups to remove miscellaneous compiler warnings.
1128   Improve stripe size validation.
1129   Increase maximum stripe size limit to physical extent size for lvm2 metadata.
1130   Fix activation code to check for pre-existing mirror logs.
1131   Tighten region size validation.
1132   Ignore empty strings in config files.
1133   Require non-zero regionsize and document parameter on lvcreate man page.
1134   Invalidate cache if composition of VG changed externally.
1135
1136 Version 2.02.05 - 21st April 2006
1137 =================================
1138   Fix vgid string termination in recent cache code.
1139
1140 Version 2.02.04 - 19th April 2006
1141 =================================
1142   Check for libsepol.
1143   Add some cflow & scope support.
1144   Separate out DEFS from CFLAGS.
1145   Remove inlines and use unique function names.
1146
1147 Version 2.02.03 - 14th April 2006
1148 =================================
1149   vgrename accepts vgid and exported VG.
1150   Add --partial to pvs.
1151   When choosing between identically-named VGs, also consider creation_host.
1152   Provide total log suppression with 2.
1153   Fix vgexport/vgimport to set/reset PV exported flag so pv_attr is correct.
1154   Add vgid to struct physical_volume and pass with vg_name to some functions.
1155   If two or more VGs are found with the same name, use one that is not exported.
1156   Whenever vgname is captured, also capture vgid and whether exported.
1157   Remove an incorrect unlock_vg() from process_each_lv().
1158   Update extent size information in vgchange and vgcreate man pages.
1159   Introduce origin_from_cow() and lv_is_visible().
1160   pvremove without -f now fails if there's no PV label.
1161   Support lvconvert -s.
1162   Suppress locking library load failure message if --ignorelockingfailure.
1163   Propagate partial mode around cluster.
1164   Fix archive file expiration.
1165   Fix dmeventd build.
1166   clvmd now uses libcman rather than cman ioctls.
1167   clvmd will allow new cman to shutdown on request.
1168
1169 Version 2.02.02 - 7th February 2006
1170 ===================================
1171   Add %.so: %.a make template rule.
1172   Switchover library building to use LIB_SUFFIX.
1173   Only do lockfs filesystem sync when suspending snapshots.
1174   Always print warning if activation is disabled.
1175   vgreduce removes mirror images.
1176   Add --mirrorsonly to vgreduce.
1177   vgreduce replaces active LVs with error segment before removing them.
1178   Set block_on_error parameter if available.
1179   Add target_version.
1180   Add details to format1 'Invalid LV in extent map' error message.
1181   Fix lvscan snapshot full display.
1182   Bring lvdisplay man page example into line.
1183   Add mirror dmeventd library.
1184   Add some activation logic to remove_mirror_images().
1185   lvconvert can remove specified PVs from a mirror.
1186   lvconvert turns an existing LV into a mirror.
1187   Allow signed mirrors arguments.
1188   Move create_mirror_log() into toollib.
1189   Determine parallel PVs to avoid with ALLOC_NORMAL allocation.
1190   Fix lv_empty.
1191
1192 Version 2.02.01 - 23rd November 2005
1193 ====================================
1194   Fix lvdisplay cmdline to accept snapshots.
1195   Fix open RO->RW promotion.
1196   Fix missing vg_revert in lvcreate error path.
1197
1198 Version 2.02.00 - 10th November 2005
1199 ====================================
1200   Extend allocation areas to avoid overflow with contiguous with other PVs.
1201   Stop lvcreate attempting to wipe zero or error segments.
1202   Added new lvs table attributes.
1203   Separated out activation preload.
1204   Moved activation functions into libdevmapper.
1205   Fixed build_dm_name.
1206   Add return macros.
1207   Added xen xvd devices.
1208   Clear up precommitted metadata better.
1209   A pvresize implementation.
1210   Fix contiguous allocation when there are no preceding segments.
1211   Add mirror_seg pointer to lv_segment struct.
1212   Only keep a device open if it's known to belong to a locked VG.
1213   Fix lvdisplay to show all mirror destinations.
1214   Replacement suspend code using libdevmapper dependency tree.
1215   Add DEFS to make.tmpl.
1216   Use dm_is_dm_major instead of local copy.
1217   Allow mapped devices to be used as PVs.
1218   Move set_selinux_context into libdevmapper.
1219   Fix automatic text metadata buffer expansion (using macro).
1220   Cache formatted text metadata buffer between metadata area writes.
1221   Add pe_start field to pvs.
1222   Add 'LVM-' prefix to uuids.
1223   Split lv_segment_area from lv_segment to permit extension.
1224   Replacement deactivation code using libdevmapper dependency tree.
1225   Simplify dev_manager_info().
1226   Attempt to load missing targets using modprobe.
1227   Add -a to lvscan.
1228   Move mknodes into libdevmapper.
1229   Move bitset, hash, pool and dbg_malloc into libdevmapper.
1230
1231 Version 2.01.15 - 16th October 2005
1232 ===================================
1233   Refuse to run pvcreate/pvremove on devices we can't open exclusively.
1234   Use ORPHAN lock definition throughout.
1235   Validate chunksize in lvcreate.
1236   Reduce chunksize limit to 512k.
1237   Fix chunksize field in reports.
1238   Don't hide snapshots from default 'lvs' output.
1239   Add is_dm_major() for use in duplicate device detection in lvmcache_add().
1240   Really switch device number in lvmcache when it says it is doing so.
1241   Option for bitset memory allocation using malloc as well as pool.
1242   Don't assume exactly two mirrors when parsing mirror status.
1243   Suppress fsync() error message on filesystems that don't support it.
1244   Fix yes_no_prompt() error handling.
1245   Add lvm.conf comment warning against multiple filter lines.
1246   Tidy lvmconf.sh.
1247   Add format1 dev_write debug messages.
1248   Add clustered VG attribute to report.
1249   Move lvconvert parameters into struct lvconvert_params.
1250   Add clustered VG flag to LV lock requests.
1251   Change LV locking macros to take lv instead of lvid.
1252   Prepend 'cluster' activation parameter to mirror log when appropriate.
1253   Pass exclusive flag to lv_activate and on to target activation code.
1254   Prevent snapshot creation in a clustered VG for now.
1255   Factor out adjusted_mirror_region_size() and generate_log_name_format().
1256   Move compose_log_line() into mirror directory.
1257   Factor out _get_library_path().
1258   Don't kill idling clvmd threads.
1259   clvmd no longer takes out locks for non-clustered LVs.
1260   Recognise ATA over Ethernet (aoe) devices.
1261
1262 Version 2.01.14 - 4th August 2005
1263 =================================
1264   Fix lvconvert PV parameter in help string.
1265   Prevent snapshots getting activated in a clustered VG.
1266   Separate out _build_dev_string.
1267   Move zero_lv to toollib.
1268   Fix pool format handler to work with pv segment code.
1269
1270 Version 2.01.13 - 13th July 2005
1271 ================================
1272   Fix pvmove segment splitting.
1273   Abstract vg_validate.
1274   Only make one attempt at contiguous allocation.
1275   Fix lvm1 format metadata read.
1276   Fix lvm1 format non-mirror lvcreate.
1277
1278 Version 2.01.12 - 14th June 2005
1279 ================================
1280   Various allocation-related pvmove fixes.
1281   Log an error if clvmd can't resolve a host name got from CCS.
1282   Fix potential spin loop in clvmd.
1283
1284 Version 2.01.11 - 13th June 2005
1285 ================================
1286   Added lvmconf.sh.
1287   Use matchpathcon mode parameter.
1288   Don't defer closing dead FDs in clvmd.
1289   Remove hard-coded 64k text metadata writing restriction.
1290   Make VG name restrictions consistent.
1291   Introduce lvconvert.  So far only removes mirror images.
1292   Allow mirror images to be resized.
1293   Allow mirror images to have more than one segment.
1294   Centralise restrictions on LV names.
1295   Always insert an intermediate layer for mirrors.
1296   Suppress hidden LVs from reports unless --all is given.
1297   Use square brackets for hidden LVs in reports.
1298   Allow the creation of mirrors with contiguous extents.
1299   Always perform sanity checks against metadata before committing it to disk.
1300   Split lv_extend into two steps: choosing extents + allocation to LV(s).
1301   Add mirror log region size to metadata.
1302   Use list_iterate_items throughout and add list*back macros.
1303   Introduce seg_ macros to access areas.
1304   Add segtype_is_ macros.
1305   Support tiny metadata areas for pool conversions.
1306   Mirror activation handles disk log as well as core.
1307   Activation code recognises mirror log dependency.
1308   Add mirror_log and regionsize fields to report.
1309   Fix non-orphan pvchange -u.
1310   Fix vgmerge to handle duplicate LVIDs.
1311   Move archiver code from tools into library.
1312   vgscan/change/display/vgs automatically create metadata backups if needed.
1313   Merge cloned allocation functions.
1314   Fix contiguous allocation policy with linear.
1315   Cope with missing format1 PVs again.
1316   Remove lists of free PV segments.
1317   Simplify pv_maps code and remove slow bitset algorithm.
1318   Red-Hat-ify the clvmd rhel4 initscript.
1319   %Zu->%zu
1320   Fix loopfiles alias alloc & mem debugging.
1321   Un-inline dbg_strdup.
1322   lv_reduce tidying.
1323   Remove some unnecessary parameters.
1324   Introduce seg_is macros.
1325
1326 Version 2.01.10 - 3rd May 2005
1327 ==============================
1328   Don't create backup and archive dirs till needed.
1329   Reinstate full PV size when removing from VG.
1330   Support loopfiles for testing.
1331   Tidy lv_segment interface.
1332   pv_segment support.
1333   vgchange --physicalextentsize
1334   Internal snapshot restructuring.
1335   Remove unused internal non-persistent snapshot option.
1336   Allow offline extension of snapshot volumes.
1337   Move from 2-step to 3-step on-disk metadata commit.
1338   Scan ramdisks too and allow non-O_DIRECT fallback.
1339   Annotate, tidy and extend list.h.
1340   Alignment tidying.
1341   Make clvmd work around some "bugs" in gulm's node state notifications.
1342   Tidy clvmd's SIGHUP handler
1343
1344 Version 2.01.09 - 4th April 2005
1345 ================================
1346   Add --ignorelockingfailure to vgmknodes.
1347   clvmd: Don't allow user operations to start until the lvm thread is fully up.
1348   clvmd-gulm: set KEEPALIVE on sockets.
1349
1350 Version 2.01.08 - 22nd March 2005
1351 =================================
1352   Add clustered attribute so vgchange can identify clustered VGs w/o locking.
1353   Improve detection of external changes affecting internal cache.
1354   Add 'already in device cache' debug message.
1355   Add -a to pvdisplay -C.
1356   Avoid rmdir opendir error messsages when dir was already removed.
1357   Tighten signal handlers.
1358   Avoid some compiler warnings.
1359   Additional rename failure error message.
1360   read/write may be macros.
1361   clvmd: don't take out lvm thread lock at startup, it only protects jobs list.
1362
1363 Version 2.01.07 - 8th March 2005
1364 ================================
1365   Cope with new devices appearing by rescanning /dev if a uuid can't be found.
1366   Remove DESTDIR from LVM_SHARED_PATH.
1367   clvmd fixes: make FDs close-on-exec
1368                gulm unlocks VG & orphan locks at startup in case they are stale
1369                gulm now unlocks VG & orphan locks if client dies.
1370
1371 Version 2.01.06 - 1st March 2005
1372 ================================
1373   Suppress 'open failed' error messages during scanning.
1374   Option to suppress warnings of file descriptors left open.
1375   Fix default value of metadatacopies in documentation (2->1).
1376   Fix clvmd-gulm locking.
1377   ./configure --enable-debug now enables debugging code in clvmd.
1378   Fix clvmd-gulm node up/down code so it actually works.
1379   clvmd-gulm now releases locks when shut down.
1380
1381 Version 2.01.05 - 18th February 2005
1382 ====================================
1383   Static binary invokes dynamic binary if appropriate.
1384   Make clvmd config check a little more tolerant.
1385   gulm clvmd can now cope with >1 message arriving in a TCP message.
1386
1387 Version 2.01.04 - 9th February 2005
1388 ===================================
1389   Add fixed offset to imported pool minor numbers.
1390   Update binary pathnames in clvmd_init_rhel4.
1391   lvm2cmd.so should skip the check for open fds.
1392   Remove unused -f from pvmove.
1393   Gulm clvmd doesn't report "connection refused" errors.
1394   clvmd does a basic config file sanity check at startup.
1395   Fix potential thread shutdown race in clvmd.
1396
1397 Version 2.01.03 - 1st February 2005
1398 ===================================
1399   More 64-bit display/report fixes.
1400   More informative startup mesg if can't create /etc/lvm.
1401   Fix snapshot device size bug (since 2.01.01).
1402   clvmd announces startup and cluster connection in syslog.
1403   Gulm clvmd doesn't hang trying to talk to a rebooted node.
1404   Gulm clvmd doesn't print cman error on startup.
1405
1406 Version 2.01.02 - 21st January 2005
1407 ===================================
1408   Update clvmd_init_rhel4: use lvm.static and don't load dlm.
1409   Fix some size_t printing.
1410   Fix 64 bit xlate consts.
1411   Split out pool sptype_names to avoid unused const.
1412   Always fail if random id generation fails.
1413   Recognise gnbd devices.
1414   Fix clvmd startup bug introduced in cman/gulm amalgamation.
1415   Improve reporting of node-specific locking errors.
1416
1417 Version 2.01.01 - 19th January 2005
1418 ===================================
1419   Fix clvmd lv_info_by_lvid open_count.
1420   Store snapshot and origin sizes separately.
1421   Update vgcreate man page.
1422
1423 Version 2.01.00 - 17th January 2005
1424 ===================================
1425   Fix vgscan metadata auto-correction.
1426   Only ask libdevmapper for open_count when we need it.
1427   Adjust RHEL4 clvmd init script priority.
1428   Enable building of CMAN & GULM versions of clvmd into a single binary
1429
1430 Version 2.00.33 - 7th January 2005
1431 ==================================
1432   pvcreate wipes first 4 sectors unless given --zero n.
1433   gulm clvmd now uses new ccsd key names.
1434   gulm clvmd now doesn't ignore the first node in cluster.conf
1435   Improve clvmd failure message if it's already running.
1436   Allow user to kill clvmd during initialisation.
1437   Fix off-by-one error in cluster_locking that could cause read hangs.
1438
1439 Version 2.00.32 - 22nd December 2004
1440 ====================================
1441   Drop static/dl restriction for now.
1442   Fix an error fprintf.
1443   Fix vgdisplay -s. Breaks (undocumented) lvs/pvs/vgs -s instead for now.
1444   Fix device reference counting on re-opens.
1445   Ignore sysfs symlinks when DT_UNKNOWN.
1446   Add clvmd init script for RHEL4.
1447   Skip devices that are too small to be PVs.
1448   Fix pvchange -x segfault with lvm2-format orphan.
1449   Cope with empty msdos partition tables.
1450   Add CONTRIBUTORS file.
1451
1452 Version 2.00.31 - 12th December 2004
1453 ====================================
1454   Reopen RO file descriptors RW if necessary.
1455
1456 Version 2.00.30 - 10th December 2004
1457 ====================================
1458   Additional device-handling debug messages.
1459   Additional verbosity level -vvvv includes line numbers and backtraces.
1460   Verbose messages now go to stderr not stdout.
1461   Close any stray file descriptors before starting.
1462   Refine partitionable checks for certain device types.
1463   Allow devices/types to override built-ins.
1464   Fix lvreduce man page .i->.I
1465   Fix vgsplit man page title.
1466   Fix clvmd man makefile.
1467   Extend dev_open logging.
1468   Make clvmd_fix_conf.sh UNDOable.
1469
1470 Version 2.00.29 - 27th November 2004
1471 ====================================
1472   xlate compilation fix.
1473
1474 Version 2.00.28 - 27th November 2004
1475 ====================================
1476   Fix partition table & md signature detection.
1477   Minor configure/makefile tidy.
1478   Export version.h from tools for clvmd.
1479
1480 Version 2.00.27 - 24th November 2004
1481 ====================================
1482   Trap large memory allocation requests.
1483   Fix to partition table detection code.
1484   Improve filter debug mesgs.
1485   Make clvmd_fix_conf.sh UNDOable
1486
1487 Version 2.00.26 - 23rd November 2004
1488 ====================================
1489   Improve pool debugging stats.
1490   Detect partition table signature.
1491   pvcreate wipes md superblocks. (With --uuid or --restorefile it prompts.)
1492   Separate out md superblock detection code.
1493   Prevent snapshot origin resizing.
1494   Improve a vgremove error message.
1495   Update some man pages.
1496   Allow y/n with -ae args (exclusive activation).
1497   Fixes to lvcreate vgname parsing.
1498   Fix dm_name string size calculation.
1499   Improve clvmd error reporting during startup.
1500   Make clvmd cope with large gaps in node numbers IDs.
1501   Make clvmd initialisation cope better with debugging output.
1502   Tidy clvmd socket callbacks so all work happens outside main loop.
1503   clvmd -V now displays lvm version too.
1504   Add optional gulm build for clvmd
1505
1506 Version 2.00.25 - 29th September 2004
1507 =====================================
1508   Fix return code from rm_link for vgmknodes.
1509   Make clvmd LV hash table thread-safe.
1510   Fix clvmd locking so it will lock out multiple users on the same node.
1511   Fix clvmd VG locking to it can cope with multiple VG locks.
1512   Remove spurious trailing dot in lvreduce man page.
1513   Fix vgremove locking.
1514
1515 Version 2.00.24 - 16th September 2004
1516 =====================================
1517   Fix pool_empty so it really does empty the memory pool.
1518   Rename old segtypes files to segtype.
1519   Some fixes to memory debugging code.
1520   Exclude internal commands formats & segtypes from install.
1521
1522 Version 2.00.23 - 15th September 2004
1523 =====================================
1524   Export dm name build & split functions.
1525   Use O_NOATIME on devices if available.
1526   Write log message when each segtype/format gets initialised.
1527   New commands 'segtypes' and 'formats'.
1528   Suppress pvmove abort message in test mode.
1529   Improve pvcreate/remove device not found error message.
1530   Allow pvmove to move data within the same PV.
1531   Describe how pvmove works on man page.
1532   Test for incompatible format/segtype combinations in lv_extend.
1533   Fix lvchange example on man page.
1534
1535 Version 2.00.22 - 3rd September 2004
1536 ====================================
1537   Fix /dev/vgname perms.
1538   Restructure xlate.h.
1539   Add clvmd man page.
1540
1541 Version 2.00.21 - 19th August 2004
1542 ==================================
1543   Update cnxman-socket.h from cman.
1544   Recognise iseries/vd devices.
1545   Use 'make install_cluster' to install cluster extensions only.
1546   Cope with DT_UNKNOWN in sysfs.
1547   Fix extents_moved metadata size comment.
1548   Remove duplicate line in pvremove help text.
1549   Support variable mirror region size.
1550   Support PE ranges in pvmove source PV.
1551   Fixes to as-yet-unused LV segment splitting code.
1552   Change alloc_areas to pe_ranges and allow suppression of availability checks.
1553   Add dev_size column to pvs.
1554   Add report columns for in-kernel device number.
1555
1556 Version 2.00.20 - 3 July 2004
1557 =============================
1558   More autoconf fixes.
1559   Fix device number handling for 2.6 kernels.
1560
1561 Version 2.00.19 - 29 June 2004
1562 ==============================
1563   Reduce severity of setlocale failure message.
1564   Recognise argv[0] "initrd-lvm" (pld-linux).
1565   Make -O2 configurable.
1566   Added --disable-selinux to configure script.
1567   LD_FLAGS->LDFLAGS & LD_DEPS->LDDEPS in configure script.
1568   Add init_debug to clvmd.
1569
1570 Version 2.00.18 - 24 June 2004
1571 ==============================
1572   Fix vgchange activation.
1573   Add cluster support.
1574
1575 Version 2.00.17 - 20 June 2004
1576 ==============================
1577   configure --enable-fsadm to try out fsadm.  fsadm is not tested yet.
1578   Display all filtered devices, not just PVs, with pvs -a.
1579   Fix sync_dir() when no / in filename
1580   vgcfgbackup -f accepts template with %s for VG name.
1581   Extend hash functions to handle non-null-terminated data.
1582   Add local activation support.
1583   Tidy relative paths in makefile includes.
1584   fsadm support for fsck and resizing - needs testing.
1585   Add read-only GFS pool support.
1586   Add lvm2create_initrd script from http://poochiereds.net/svn/lvm2/
1587   Fix rounding of large diplayed sizes.
1588   Suppress decimal point when using units of sectors/bytes.
1589   Additional kernel target checks before pvmove & snapshot creation.
1590   Add i2o_block.
1591
1592 Version 2.00.16 - 24 May 2004
1593 =============================
1594   Set area_count within alloc_lv_segment.
1595   Remove error labels from lvresize.
1596   Fix a pvs error path.
1597   xxchange -ae for exclusive activation.
1598   Don't return non-zero status if there aren't any volume groups.
1599   Add --alloc argument to tools.
1600   Rename allocation policies to contiguous, normal, anywhere, inherit.
1601   nextfree becomes normal; anywhere isn't implemented yet.
1602   LV inherits allocation policy from VG. Defaults: LV - inherit; VG - normal
1603   Additional status character added to vgs to indicate allocation policy.
1604   Add reset_fn to external_locking.
1605   Ensure presence of virtual targets before attempting activating.
1606   Attempt to fix resizing of snapshot origins.
1607   Restructure lvresize, bringing it closer to lvcreate.
1608   A quick sanity check on vg_disk struct when read in.  More checks needed.
1609   Only include visible LVs in active/open counts.
1610   Add virtual segment types, zero and error.  A large sparse device can be
1611 constructed as a writeable snapshot of a large zero segment.
1612   Add --type to lvcreate/resize.
1613   Push lv_create & alloc policy up to tool level.
1614   Fix pvdisplay return code.
1615   Detect invalid LV names in arg lists.
1616   Reporting uses line-at-a-time output.
1617   lvm2 format sets unlimited_vols format flag.
1618   Internal-only metadata flag support.
1619   Basic checking for presence of device-mapper targets.
1620   Separate out polldaemon.
1621   Revise internal locking semantics.
1622   Move find_pv_by_name to library.
1623   Rename move->copy.
1624   Add devices to segments report.
1625   Begin separating out segment code. There's a lot of change here.
1626   Compress any (obsolete) long LVM1 pvids encountered.
1627   Support for tagged config files.
1628   Don't abort operations if selinux present but disabled.
1629   Fix typo in configure which left HAVE_LIBDL unset.
1630
1631 Version 2.00.15 - 19 Apr 2004
1632 =============================
1633   configure --with-owner= --with-group= to avoid -o and -g args to 'install'
1634
1635 Version 2.00.14 - 16 Apr 2004
1636 =============================
1637   Use 64-bit file functions by default.
1638
1639 Version 2.00.13 - 16 Apr 2004
1640 =============================
1641   Set devices/md_component_detection = 1 to ignore devices containing md
1642   superblocks. [Luca Berra]
1643   Ignore error setting selinux file context if fs doesn't support it.
1644
1645 Version 2.00.12 - 14 Apr 2004
1646 =============================
1647   Install a default lvm.conf into /etc/lvm if there isn't one already.
1648   Allow different installation dir for lvm.static (configure --staticdir=)
1649   Fix inverted selinux error check.
1650   Recognise power2 in /proc/devices.
1651   Fix counting in lvs_in_vg_opened. [It ignored devices open more than once.]
1652
1653 Version 2.00.11 - 8 Apr 2004
1654 ============================
1655   Set fallback_to_lvm1 in lvm.conf (or configure --enable-lvm1_fallback)
1656   to run lvm1 binaries if running a 2.4 kernel without device-mapper.
1657
1658 Version 2.00.10 - 7 Apr 2004
1659 ============================
1660   More fixes for static build.
1661   Add basic selinux support.
1662   Fix sysfs detection.
1663
1664 Version 2.00.09 - 31 Mar 2004
1665 =============================
1666   Update copyright notices for Red Hat.
1667   Fix vgmknodes to remove dud /dev/mapper entries. (libdevmapper update reqd).
1668   Add LVM1-style colon output to vgdisplay.
1669   lvchange --refresh to reload active LVs.
1670   Add string display to memory leak dump.
1671   Add locking flags & memlock option.
1672   Add list_versions to library.
1673   Ignore open hidden LVs when checking if deactivation is OK.
1674   Suppress move percentage when device inactive.
1675   Add lv_info_by_lvid.
1676   Various tidy-ups to the build process.
1677   Rebaseline internal verbose level.
1678   Add --nolocking option for read operations if locking is failing.
1679   Add option to compile into a library.
1680   When compiled without libdevmapper, only print warning message once.
1681   Fix lvreduce PV extent calculations.
1682   Fix DESTDIR to work with configure path overrides.
1683   Always use / as config file separator & rename internal config file variables.
1684   Add support for tagging PV/VG/LVs and hosts.
1685   Fix rare bug in recognition of long cmdline argument forms.
1686   Add basic internationalisation infrastructure.
1687   Don't recurse symlinked dirs such as /dev/fd on 2.6 kernels.
1688   Update autoconf files.
1689   Add sysfs block device filtering for 2.6 kernels.
1690   Update refs for move to sources.redhat.com.
1691
1692 Friday 14th November 2003
1693 =========================
1694 Some bug fixes & minor enhancements, including:
1695   Backwards compatibility with LVM1 metadata improved.
1696   Missing man pages written.
1697   Tool error codes made more consistent.
1698   vgmknodes written.
1699   O_DIRECT can be turned off if it doesn't work in your kernel.
1700   dumpconfig to display the active configuration file
1701
1702 You need to update libdevmapper before using 'vgmknodes' or 'vgscan --mknodes'.
1703 If your root filesystem is on an LV, you should run one of those two
1704 commands to fix up the special files in /dev in your real root filesystem
1705 after finishing with your initrd.  Also, remember you can use
1706 'vgchange --ignorelockingfailure' on your initrd if the tool fails because
1707 it can't write a lock file to a read-only filesystem.
1708
1709 Wednesday 30th April 2003
1710 =========================
1711 A pvmove implementation is now available for the new metadata format.
1712
1713 When running a command that allocates space (e.g. lvcreate), you can now
1714 restrict not only which disk(s) may be used but also the Physical Extents
1715 on those disks.  e.g. lvcreate -L 10 vg1 /dev/hda6:1000-2000:3000-4000
1716
1717
1718 Monday 18th November 2002
1719 ========================
1720
1721 The new format of LVM metadata is ready for you to test!
1722   We expect it to be more efficient and more robust than the original format.
1723   It's more compact and supports transactional changes and replication.
1724   Should things go wrong on a system, it's human-readable (and editable).
1725
1726 Please report any problems you find to the mailing list,
1727 linux-lvm@sistina.com.  The software has NOT yet been thoroughly
1728 tested and so quite possibly there'll still be some bugs in it.
1729 Be aware of the disclaimer in the COPYING file.
1730
1731 While testing, we recommend turning logging on in the configuration file
1732 to provide us with diagnostic information:
1733   log {
1734         file="/tmp/lvm2.log"
1735         level=7
1736         activation=1
1737   }
1738
1739 You should schedule regular backups of your configuration file and
1740 metadata backups and archives (normally kept under /etc/lvm).
1741
1742 Please read docs/example.conf and "man lvm.conf" to find out more about
1743 the configuration file.
1744
1745 To convert an existing volume group called vg1 to the new format using
1746 the default settings, use "vgconvert -M2 vg1".  See "man vgconvert".
1747
1748 -M (or --metadatatype in its long form) is a new flag to indicate which
1749 format of metadata the command should use for anything it creates.
1750 Currently, the valid types are "lvm1" and "lvm2" and they can be
1751 abbreviated to "1" and "2" respectively.  The default value for this
1752 flag can be changed in the global section in the config file.
1753
1754 Backwards-compatible support for the original LVM1 metadata format is
1755 maintained, but it can be moved into a shared library or removed
1756 completely with configure's --with-lvm1 option.
1757
1758 Under LVM2, the basic unit of metadata is the volume group.  Different
1759 volume groups can use different formats of metadata - vg1 could use
1760 the original LVM1 format while vg2 used the new format - but you can't
1761 mix formats within a volume group.  So to add a PV to an LVM2-format
1762 volume group you must run "pvcreate -M2" on it, followed by "vgextend".
1763
1764 With LVM2-format metadata, lvextend will let you specify striping
1765 parameters.  So an LV could consist of two or more "segments" - the
1766 first segment could have 3 stripes while the second segment has just 2.
1767
1768 LVM2 maintains a backup of the current metadata for each volume group
1769 in /etc/lvm/backup, and puts copies of previous versions in
1770 /etc/lvm/archive.  "vgcfgbackup" and "vgcfgrestore" can be used to
1771 create and restore from these files.  If you fully understand what
1772 you're doing, metadata can be changed by editing a copy of a current
1773 backup file and using vgcfgrestore to reload it.
1774
1775 Please read the pvcreate man page for more information on the new
1776 format for metadata.
1777
1778 All tools that can change things have a --test flag which can be used
1779 to check the effect  of a set of cmdline args without really making the
1780 changes.
1781
1782
1783 What's not finished?
1784 ====================
1785 The internal cache.  If you turn on debugging output you'll see lots of
1786 repeated messages, many of which will eventually get optimised out.
1787
1788 --test sometimes causes a command to fail (e.g. vgconvert --test) even
1789 though the real command would work: again, fixing this is waiting for
1790 the work on the cache.
1791
1792 Several of the tools do not yet contain the logic to handle full
1793 recovery: combinations of pvcreate and vgcfgrestore may sometimes be
1794 needed to restore metadata if a tool gets interrupted or crashes or
1795 finds something unexpected.  This applies particularly to tools that
1796 work on more than one volume group at once (e.g. vgsplit).
1797
1798 Display output.  Some metadata information cannot yet be displayed.
1799
1800 Recovery tools to salvage "lost" metadata directly from the disks:
1801 but we hope the new format will mean such tools are hardly ever needed!