xref: /dragonfly/contrib/lvm2/dist/WHATS_NEW (revision dadd6466)
1Version 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
11Version 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
27Version 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
64Version 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
72Version 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
106Version 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
129Version 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
172Version 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
210Version 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
253Version 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
258Version 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
327Version 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
365Version 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
399Version 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
410Version 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
416Version 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
432Version 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
473Version 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
500Version 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
516Version 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
540Version 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
554Version 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
564Version 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
631Version 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
640Version 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
649Version 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
655Version 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
682Version 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
742Version 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
779Version 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
802Version 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
824Version 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
853Version 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
862Version 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
873Version 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
882Version 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
890Version 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
910Version 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
920Version 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
942Version 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
955Version 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
966Version 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
977Version 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
990Version 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
1003Version 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
1010Version 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
1038Version 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
1065Version 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
1072Version 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
1081Version 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
1106Version 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
1136Version 2.02.05 - 21st April 2006
1137=================================
1138  Fix vgid string termination in recent cache code.
1139
1140Version 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
1147Version 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
1169Version 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
1192Version 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
1198Version 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
1231Version 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
1262Version 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
1270Version 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
1278Version 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
1284Version 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
1326Version 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
1344Version 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
1350Version 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
1363Version 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
1371Version 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
1381Version 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
1387Version 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
1397Version 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
1406Version 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
1417Version 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
1423Version 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
1430Version 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
1439Version 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
1452Version 2.00.31 - 12th December 2004
1453====================================
1454  Reopen RO file descriptors RW if necessary.
1455
1456Version 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
1470Version 2.00.29 - 27th November 2004
1471====================================
1472  xlate compilation fix.
1473
1474Version 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
1480Version 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
1487Version 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
1506Version 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
1515Version 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
1522Version 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
1535Version 2.00.22 - 3rd September 2004
1536====================================
1537  Fix /dev/vgname perms.
1538  Restructure xlate.h.
1539  Add clvmd man page.
1540
1541Version 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
1556Version 2.00.20 - 3 July 2004
1557=============================
1558  More autoconf fixes.
1559  Fix device number handling for 2.6 kernels.
1560
1561Version 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
1570Version 2.00.18 - 24 June 2004
1571==============================
1572  Fix vgchange activation.
1573  Add cluster support.
1574
1575Version 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
1592Version 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
1611constructed 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
1631Version 2.00.15 - 19 Apr 2004
1632=============================
1633  configure --with-owner= --with-group= to avoid -o and -g args to 'install'
1634
1635Version 2.00.14 - 16 Apr 2004
1636=============================
1637  Use 64-bit file functions by default.
1638
1639Version 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
1645Version 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
1653Version 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
1658Version 2.00.10 - 7 Apr 2004
1659============================
1660  More fixes for static build.
1661  Add basic selinux support.
1662  Fix sysfs detection.
1663
1664Version 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
1692Friday 14th November 2003
1693=========================
1694Some 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
1702You need to update libdevmapper before using 'vgmknodes' or 'vgscan --mknodes'.
1703If your root filesystem is on an LV, you should run one of those two
1704commands to fix up the special files in /dev in your real root filesystem
1705after finishing with your initrd.  Also, remember you can use
1706'vgchange --ignorelockingfailure' on your initrd if the tool fails because
1707it can't write a lock file to a read-only filesystem.
1708
1709Wednesday 30th April 2003
1710=========================
1711A pvmove implementation is now available for the new metadata format.
1712
1713When running a command that allocates space (e.g. lvcreate), you can now
1714restrict not only which disk(s) may be used but also the Physical Extents
1715on those disks.  e.g. lvcreate -L 10 vg1 /dev/hda6:1000-2000:3000-4000
1716
1717
1718Monday 18th November 2002
1719========================
1720
1721The 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
1726Please report any problems you find to the mailing list,
1727linux-lvm@sistina.com.  The software has NOT yet been thoroughly
1728tested and so quite possibly there'll still be some bugs in it.
1729Be aware of the disclaimer in the COPYING file.
1730
1731While testing, we recommend turning logging on in the configuration file
1732to provide us with diagnostic information:
1733  log {
1734        file="/tmp/lvm2.log"
1735	level=7
1736	activation=1
1737  }
1738
1739You should schedule regular backups of your configuration file and
1740metadata backups and archives (normally kept under /etc/lvm).
1741
1742Please read docs/example.conf and "man lvm.conf" to find out more about
1743the configuration file.
1744
1745To convert an existing volume group called vg1 to the new format using
1746the 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
1749format of metadata the command should use for anything it creates.
1750Currently, the valid types are "lvm1" and "lvm2" and they can be
1751abbreviated to "1" and "2" respectively.  The default value for this
1752flag can be changed in the global section in the config file.
1753
1754Backwards-compatible support for the original LVM1 metadata format is
1755maintained, but it can be moved into a shared library or removed
1756completely with configure's --with-lvm1 option.
1757
1758Under LVM2, the basic unit of metadata is the volume group.  Different
1759volume groups can use different formats of metadata - vg1 could use
1760the original LVM1 format while vg2 used the new format - but you can't
1761mix formats within a volume group.  So to add a PV to an LVM2-format
1762volume group you must run "pvcreate -M2" on it, followed by "vgextend".
1763
1764With LVM2-format metadata, lvextend will let you specify striping
1765parameters.  So an LV could consist of two or more "segments" - the
1766first segment could have 3 stripes while the second segment has just 2.
1767
1768LVM2 maintains a backup of the current metadata for each volume group
1769in /etc/lvm/backup, and puts copies of previous versions in
1770/etc/lvm/archive.  "vgcfgbackup" and "vgcfgrestore" can be used to
1771create and restore from these files.  If you fully understand what
1772you're doing, metadata can be changed by editing a copy of a current
1773backup file and using vgcfgrestore to reload it.
1774
1775Please read the pvcreate man page for more information on the new
1776format for metadata.
1777
1778All tools that can change things have a --test flag which can be used
1779to check the effect  of a set of cmdline args without really making the
1780changes.
1781
1782
1783What's not finished?
1784====================
1785The internal cache.  If you turn on debugging output you'll see lots of
1786repeated messages, many of which will eventually get optimised out.
1787
1788--test sometimes causes a command to fail (e.g. vgconvert --test) even
1789though the real command would work: again, fixing this is waiting for
1790the work on the cache.
1791
1792Several of the tools do not yet contain the logic to handle full
1793recovery: combinations of pvcreate and vgcfgrestore may sometimes be
1794needed to restore metadata if a tool gets interrupted or crashes or
1795finds something unexpected.  This applies particularly to tools that
1796work on more than one volume group at once (e.g. vgsplit).
1797
1798Display output.  Some metadata information cannot yet be displayed.
1799
1800Recovery tools to salvage "lost" metadata directly from the disks:
1801but we hope the new format will mean such tools are hardly ever needed!
1802