import source from lvm2 2.02.79
[external/device-mapper.git] / WHATS_NEW
1 Version 2.02.79 - 20th December 2010
2 ====================================
3   Remove some unused variables.
4   Add missing test for reallocation error in _find_parallel_space().
5   Add checks for allocation errors in config node clonning.
6   Fix error path if regex engine cannot be created in _build_matcher().
7   Use char* arithmetic in target_version(), _process_all() & _targets().
8   Fixing const cast gcc warnings in the code.
9   Check read() and close() results in _get_cmdline().
10   Add const for struct config_node usage.
11   Fix NULL pointer check in error path in clvmd do_command(). (2.02.78)
12   Fix device.c #include to ensure 64-bit fopen64 use. (2.02.51)
13   Add copy_percent and snap_percent to liblvm.
14   Enhance vg_validate to ensure integrity of LV and PV structs referenced.
15   Enhance vg_validate to check composition of pvmove LVs.
16   Create /var/run/lvm directory during clvmd initialisation if missing.
17   Use new dm_prepare_selinux_context instead of dm_set_selinux_context.
18   Avoid revalidating the label cache immediately after scanning.
19   Support scanning for a single VG in independent mdas.
20   Don't skip full scan when independent mdas are present even if memlock is set.
21   Set cmd->independent_metadata_areas if metadata/dirs or disk_areas in use.
22   Cope better with an undefined target_percent operation in _percent_run.
23   Avoid writing to freed memory in vg_release and rename to free_vg.  (2.02.78)
24
25 Version 2.02.78 - 6th December 2010
26 ===================================
27   Abort if segment tag allocation fails in pool format _add_stripe_seg.
28   Abort in _mirrored_transient_status if referenced log/image LV is not active.
29   Add backtraces for dev_set() and dev_close_immediate() errors in set_lv().
30   Log any unlink() error in clvmd remove_lockfile().
31   Log any pipe write() or close() errors in clvmd child_init_signal().
32   Detect if orphan vginfo was lost from cache before _lvmcache_update_vgname().
33   Do a full rescan if some device is missing in lvm1 format read_pvs_in_vg.
34   Add missing check that dm_pool_create succeeded in write_config_node().
35   Use dm_snprintf in clvmd-command.c to ensure an overlong buffer is truncated.
36   Don't write to buffer if its reallocation failed in clvmd do_command().
37   Switch from float to fixed point percentage handling.
38   Avoid misleading missing PV warnings in vgextend --restoremissing.
39   Fix memory leak when VG allocation policy in metadata is invalid.
40   Ignore unrecognised allocation policy found in metadata instead of aborting.
41   Factor out tag printing into _out_tags and avoid leaking string buffer.
42   Remove some unused variables & assignments.
43   Add missing vg_release calls in _vg_read_by_vgid.
44   Fix debug logging of derived flag LCK_CACHE in clvmd.
45   Fix test for no system_dir in _init_backup().
46   Disallow lvconvert ops that both allocate & free supplied PEs in a single cmd.
47   Fix liblvm seg_size to give bytes not sectors.
48   Add functions to look up LV/PV by name/uuid to liblvm.
49   Free cmd_context if fallback to LVM1 fails in lvm2_main().
50   Free device name buffer in dmsetup parse_loop_device_name() error paths.
51   Close format lib if init_format_fn fails in _init_formats().
52   Don't leave /proc/mounts open after dmeventd snapshot event processing.
53   Fix out-of-scope arg_vgnames use in process_each_lv().
54   Remove incorrect dm_task_destroy(NULL) from _node_clear_table() error path.
55   Add missing closedir in _rm_blks after removing stray LVM1 VG files.
56   Suppress 'No PV label' message when removing several PVs without mdas.
57   Fix default /etc/lvm permissions to be 0755. (2.02.66)
58
59 Version 2.02.77 - 22nd November 2010
60 ====================================
61   Allocate a pool for dummy VG in _pvsegs_sub_single.
62   Add PV and LV segment types and functions to liblvm.
63   Add set_property functions to liblvm.
64   Remove tag length restriction and allow / = ! : # & characters.
65   Support repetition of --addtag and --deltag arguments.
66   Add infrastructure for specific cmdline arguments to be repeated in groups.
67   Split the_args cmdline arguments and values into arg_props and arg_values.
68   Fix fsadm no longer to require '-f' to resize an unmounted filesystem.
69   Fix fsadm to detect mounted filesystems on older systems. (2.0.75)
70   Extend cling allocation policy to recognise PV tags (cling_by_tags).
71   Add allocation/cling_tag_list to lvm.conf.
72   Regenerate configure with 'autoreconf' for --enable-ocf. (2.02.76)
73
74 Version 2.02.76 - 8th November 2010
75 ===================================
76   Clarify error messages when activation fails due to activation filter use.
77   Add pacemaker script VolumeGroup.ocf with configure --enable-ocf.
78   Import make.tmpl into include/ Makefile.
79   Fix handling of online filesystem resize (using new fsadm return code).
80   Add DIAGNOSTICS section to fsadm man page.
81   Modify fsadm to return different status code for check of mounted filesystem.
82   Update VG metadata only once in vgchange when making multiple changes.
83   Allow independent vgchange arguments to be used together.
84   Automatically unmount invalidated snapshots in dmeventd.
85   Suppress some superfluous messages from clang static analysis.
86   Fix a deadlock caused by double close in clvmd.
87   Fix NULL pointer dereference on too-large MDA error path in _vg_read_raw_area.
88   Use static for internal _align_chunk() and _new_chunk() from pool-fast.c.
89   Fix vgchange to process -a, --refresh, --monitor and --poll like lvchange.
90   Add lvm2app functions to query any pv, vg, or lv property / report field.
91
92 Version 2.02.75 - 25th October 2010
93 ===================================
94   Annotate more variables and parameters as const.
95   Fix missing variable initialization in cluster_send() function from cmirrord.
96   Fix pointer for VG name in _pv_resize_single error code path.
97   Fix warning for changed alignment requirements for dmeventd read/write func.
98   Add global/metadata_read_only to use unrepaired metadata in read-only cmds.
99   Don't take write lock in vgchange --refresh, --poll or --monitor.
100   Skip dm devices in scan if they contain only error targets or are empty.
101   Fix strict-aliasing compile warning in partition table scanning.
102   Fix pthread mutex usage deadlock in clvmd.
103   Automatically extend snapshots with dmeventd according to policy in lvm.conf.
104   Add activation/snapshot_autoextend_threshold/percent to lvm.conf.
105   Fix liblvm2cmd link order to support --as-needed.
106   Remove dependency on libm by replacing floor() by an integer-based algorithm.
107   Fix hang when repairing a mirrored-log that had both devs fail.
108   Convey need for snapshot-merge target in lvconvert error message and man page.
109   Add devices/disable_after_error_count config to limit access to failing devs.
110   Give correct error message when creating a too-small snapshot.
111   Implement vgextend --restoremissing to reinstate missing devs that return.
112   Make lvconvert respect --yes and --force when converting an inactive log.
113   Refactor and add 'get' functions for lv properties/fields.
114   Update script for fsadm testing.
115   Better support of noninteractive shell execution of fsadm.
116   Fix usage of --yes flag for ReiserFS resize in fsadm.
117   Fix detection of mounted filesystems for fsadm when udev is used.
118   Fix assignment of default value to LVM variable in fsadm.
119   Fix support for --yes flag for fsadm.
120   Do not execute lvresize from fsadm --dry-run.
121   Fix fsadm return error code from user's break action.
122   Allow CC to be overridden at build time (for 'scan-build make').
123   Rename 'flags' to 'status' in struct metadata_area.
124   Avoid segfault by limiting partial mode for lvm1 metadata. (2.02.74)
125   Use dm_zalloc and dm_pool_zalloc throughout.
126   Add pv_get_property and create generic internal _get_property function.
127   Add 'get' functions for pv and vg properties/fields.
128   Make generic GET_*_PROPERTY_FN macros with secondary macro for vg, pv & lv.
129   Add tags_format_and_copy() common function and call from _tags_disp.
130   Add id_format_and_copy() common function and call from _uuid_disp.
131   Refactor report.c '*_disp' functions to call supporting functions.
132   Move parts of metadata*.[ch] into new {pv|vg|lv}.[ch] files.
133   Fix vg_read memory leak with directory-based metadata.
134   Fix memory leak of config_tree in reinitialization code path.
135   Fix pool destruction order in dmeventd_lvm2_exit() to avoid leak debug mesg.
136   Read whole /proc/self/maps file before working with maps entries.
137   Speed up unquoting of quoted double quotes and backslashes.
138   Speed up CRC32 calculations by using a larger lookup table.
139
140 Version 2.02.74 - 24th September 2010
141 =====================================
142   Allow : and @ to be escaped with \ in device names of PVs.
143   Replace alloca with dm_malloc in _aligned_io to avoid stack corruption.
144   Fix partial mode operations for lvm1 metadata format.
145   Track recursive filter iteration to avoid refreshing while in use. (2.02.56)
146   Revert to old glibc vsnprintf behaviour in emit_to_buffer() to catch overflow.
147   Allocate buffer for metadata tags dynamically to remove 4k limit.
148   Add random suffix to archive file names to prevent races when being created.
149   Reinitialize archive and backup handling on toolcontext refresh.
150   Make poll_mirror_progress report PROGRESS_CHECK_FAILED if LV is not a mirror.
151   Like mirrors, don't scan origins if ignore_suspended_devices() is set.
152   Fix return type qualifier to avoid compiler warning. (2.02.69)
153   Automatically generate LSB Requires-Start for clvmd init script.
154   Fix return code of pvmove --abort PV.
155   Fix pvmove --abort to remove even for empty pvmove LV.
156   Add configure --with-default-data-alignment.
157   Update heuristic used for default and detected data alignment.
158   Add "devices/default_data_alignment" to lvm.conf.
159   Add implementation for simple numeric 'get' property functions.
160   Define GET_NUM_PROPERTY_FN macro to simplify numeric property 'get' function
161   Add properties.[ch] to lib/report using columns.h.
162   Add macro definitions to report infrastructure for character array length.
163   Remove explicit double quotes from columns.h 'id' entries.
164   Add 'flags' field to columns.h and define FIELD_MODIFIABLE.
165   Add vg_mda_size and vg_mda_free functions.
166   Simplify MD/swap signature detection in pvcreate and allow aborting.
167   Allow --yes to be used without --force mode.
168   Fix file descriptor leak in swap signature detection error path.
169   Detect and allow abort in pvcreate if LUKS signature is detected.
170   Always mask lock flags correctly when checking for LCK_WRITE.
171
172 Version 2.02.73 - 18th August 2010
173 ==================================
174   Fix potential for corruption during cluster mirror device failure.
175   Use 'SINGLENODE' instead of 'dead' in clvmd singlenode messages.
176   Ignore snapshots when performing mirror recovery beneath an origin.
177   Pass LCK_ORIGIN_ONLY flag around cluster.
178   Add suspend_lv_origin and resume_lv_origin using LCK_ORIGIN_ONLY.
179   Allow internal suspend and resume of origin without its snapshots.
180   Fix dev_manager_transient to access -real device not snapshot-origin.
181   Monitor origin -real device below snapshot instead of overlay device.
182   Don't really change monitoring status when in test mode.
183   Fix some exit statuses when starting/stopping monitoring fails.
184   Enable snapshot monitoring by default when dmeventd is enabled.
185   Move cloned libdevmapper-event client code from segments into lib/activate.
186   Fix 'lvconvert --splitmirrors' in cluster operation.
187   Fix clvmd init script exit code to return 4 when executed as non-root user.
188   Change default alignment of pe_start to 1MB.
189   Add --norestorefile option to pvcreate.
190   Require --restorefile when using pvcreate --uuid.
191   Recognise and give preference to md device partitions (blkext major).
192   Never scan internal LVM devices.
193   Don't ignore user-specified PVs in split-mirror operations. (2.02.71)
194   Fix data corruption bug in cluster mirrors.
195   Require logical volume(s) to be explicitly named for lvconvert --merge.
196   Avoid changing aligned pe_start as a side-effect of very verbose logging.
197   Use built-in rule for device aliases: block/ < dm- < disk/ < mapper/ < other.
198   Fix const warning in dev_manager_info() and _dev_manager_lv_rmnodes().
199   Fix const warning in archive_file structure from archive.c.
200   Clean generated files .exported_symbols_generated, example.conf for distclean.
201   Handle failure of all mirrored log devices and all but one mirror leg. 
202   Disallow 'mirrored' log type for cluster mirrors.
203   Do not use VPATH in include/Makefile.
204   Fix exported_symbols generation to use standard compiler arguments.
205   Use #include <> not "" in lvm2app.h which gets installed on the system.
206   Make lib and liblvm.device-mapper wait for include file generation.
207   Fix configure to supply DEFAULT_RUN_DIR to Makefiles.
208   Fix allocation of wrong number of mirror logs with 'remove' fault policy.
209
210 Version 2.02.72 - 28th July 2010  [CVE-2010-2526]
211 =================================================
212   Change clvmd to communicate with lvm2 via a socket in /var/run/lvm.
213   Return controlled error if clvmd is run by non-root user.
214   Add configure --default-run-dir for /var/run/lvm.
215   Never use clvmd singlenode unless explicitly requested with -Isinglenode.
216
217 Version 2.02.71 - 28th July 2010
218 ================================
219   Document LVM fault handling in doc/lvm_fault_handling.txt.
220   Make vgck warn about missing PVs.
221   Clarify help text for vg_mda_count.
222   Check if cluster log daemon is running before allowing cmirror create.
223   Add unit-tests dir.
224   Add configure --enable-testing and reports and report-generators dirs.
225   Correct LV list order used by lvconvert when splitting a mirror.
226   Check if LV with specified name already exists when splitting a mirror.
227   Fix suspend/resume logic for LVs resulting from splitting a mirror.
228   Update pvcreate, {pv|vg}change, and lvm.conf man pages about metadataignore.
229   Switch cmirrord and clvmd to use dm_create_lockfile.
230   Allow clvmd pidfile to be configurable.
231   Update comments about memory handling in lvm2app.h.
232   Add more verbose messages while checking volume_list and hosttags settings.
233   Add log_error when strdup fails in {vg|lv}_change_tag().
234   Remove unnecessary includes in liblvm files.
235   Use __attribute__ consistently throughout.
236   Fix redundant declarations and always compile with -Wredundant-decls.
237   Fix possible hang when all mirror images of a mirrored log fail.
238   Pass metadataignore to pv_create, pv_setup, _mda_setup, and add_mda.
239   Init mda->list in mda_copy.
240   Do not log backtrace in valid _lv_resume() code path.
241   Cleanup help strings in configure.in.
242   Prompt if metadataignore with vgextend or pvchange would adjust vg_mda_copies.
243   Adjust vg_mda_copies if metadataignore given with vgextend or pvchange.
244   Adjust auto-metadata repair and caching logic to try to cope with empty mdas.
245
246 Version 2.02.70 - 6th July 2010
247 ===============================
248   Remove log directly if all mirror images of a mirrored log fail.
249   Randomly select which mdas to use or ignore.
250   Add some missing standard configure.in checks.
251   Add printf format attributes to yes_no_prompt and fix a caller.
252   Always pass unsuspended dm devices through persistent filter to other filters.
253   Move test for suspended dm devices ahead of other filters.
254   Fix another segfault in clvmd -R if no response from daemon. (2.02.68)
255   Remove superfluous suspended device counter from clvmd.
256   Fix lvm shell crash when input is entirely whitespace.
257   Update partial mode warning message.
258   Preserve memlock balance in clvmd when activation triggers a resume.
259   Restore the removemissing behaviour of lvconvert --repair --use-policies.
260
261 Version 2.02.69 - 30th June 2010
262 ================================
263   Fix vgremove to allow removal of VG with missing PVs. (2.02.52)
264   Add metadata/vgmetadatacopies to lvm.conf.
265   Add --metadataignore to pvcreate and vgextend.
266   Add vg_mda_copies, pv_mda_used_count and vg_mda_used_count to reports.
267   Describe --vgmetadatacopies in lvm.conf and other man pages.
268   Add --[vg]metadatacopies to select number of mdas to use in a VG.
269   Make the metadata ignore bit control read/write metadata areas in a PV.
270   Add pvchange --metadataignore to set or clear a metadata ignore bit.
271   Refactor metadata code to prepare for --metadataignore / --vgmetadatacopies.
272   Ensure region_size of mirrored log does not exceed its full size.
273   Generate liblvm2app exported symbols from header file.
274   Preload libc locale messages to prevent reading it in memory locked state.
275   Fix handling of simultaneous mirror image and mirrored log image failure.
276
277 Version 2.02.68 - 23rd June 2010
278 ================================
279   Fix clvmd initscript status to print only active clustered LVs.
280   Add lv_path to reports to offer full /dev pathname.
281   Fix typo in warning message about missing device with allocated data areas.
282   Add device name and offset to raw_read_mda_header error messages.
283   Honour log argument when down-converting stacked mirror.
284   Sleep to workaround clvmd -S race: socket closed early and server drops cmd.
285   Use early udev synchronisation and update of dev nodes for clustered mirrors.
286   Remove incorrect inclusion of kdev_t.h from cmirrord/functions.h.
287   Add man pages for lvmconf and non-existent lvmsadc and lvmsar tools.
288   Exit successfully when using -o help (but not -o +help) with LVM reports.
289   Do not use internal DLM lock definitions in generic LVM2 clvmd code.
290   Add --force, --nofsck and --resizefs to lvresize/extend/reduce man pages.
291   Fix lvm2cmd example in documentation.
292   Allow use of lvm2app and lvm2cmd headers in C++ code.
293   Remove unused #includes from clvmd files and introduce clvmd-common.h.
294   Move common inclusions to clvmd-common.h.
295   Use #include "" for libdevmapper.h and configure.h throughout tree.
296   Fix LVM_PATH expansion when exec_prefix=NONE. (2.02.67)
297   Fix segfault in clvmd -R if no response from daemon received.
298
299 Version 2.02.67 - 4th June 2010
300 ===============================
301   Handle failed restart of clvmd using -S switch properly.
302   Fix clvmd initscript restart command to start clvmd if not yet running.
303   Use built-in absolute paths in clvmd (clvmd restart and PV and LV queries).
304   Require partial option in lvchange --refresh for partial LVs.
305   Do not fail lvm_init() if init_logging() or _init_rand() generates an errno.
306   Don't merge unchanged persistent cache file before dumping if tool scanned.
307   Fix incorrect memory pool deallocation while using vg_read for files.
308   Add --type parameter description to the lvcreate man page.
309   Replace strncmp kernel version number checks with proper ones.
310   Avoid selecting names under /dev/block if there is an alternative.
311   Update clustered log kernel module name to log-userspace for 2.6.31 onwards.
312   Add replicators' LVs to dtree for activation.
313   Supress activation message if there is a missing replicator VG.
314   Fix scripts/relpath.awk to work in mawk
315   Extend lock_vol to check for missing replicator VGs first.
316   Update _process_one_vg and process_each_lv_in_vg to populate cmd_vg.
317   Add cmd_vg structure and associated functions for replicator.
318   Extend _lv_each_dependency() to handle replicator dependencies.
319   Add check_replicator_segment() to catch internal replicator errors.
320   Initial support for replicator metadata.
321   Extend process_each_lv_in_vg() to provide list of failed lvnames.
322   Consistently return ECMD_FAILED if process_each_*lv() is interrupted.
323
324 Version 2.02.66 - 20th May 2010
325 ===============================
326   If unable to obtain snapshot percentage leave value blank on reports.
327   Add install_system_dirs and install_initscripts makefile targets.
328   Add configure options for system and locking directories.
329   Generate example.conf so default lvm.conf contents can be configured.
330   Install lvmconf script by default.
331   Remove unnecessary versioned dmeventd plugin symlinks.
332   Add tests for lvm_vgname_from_{pvid|device}.
333   Add lvm2app interfaces to lookup a vgname from a pvid and pvname.
334   Update pvchange to always obtain a vg handle for each pv to process.
335   Add find_vgname_from_{pvname|pvid} functions.
336   Add pvid_from_devname and lvmcache_vgname_from_pvid lvmcache functions.
337   Validate orphan and VG_GLOBAL lock order too.
338   Accept orphan VG names as parameters to lock_vol() and related functions.
339   Use is_orphan_vg in place of hard-coded prefix tests and add is_global_vg.
340
341 Version 2.02.65 - 17th May 2010
342 ===============================
343   Fix clvmd init script never to deactivate non-clustered volume groups.
344   Disallow vgchange --clustered if there are active mirrors or snapshots.
345   Introduce lv_is_mirrored.
346   Use /bin/bash for scripts with bashisms.
347   Skip internal lvm devices in scan if ignore_suspended_devices is set.
348   Do not merge old device cache after we run full scan. (2.02.56)
349   Add pkgconfigdir Makefile variable for make install override.
350   Configure pkgconfig udev and selinux dependencies.
351   Switch Libs.private to Requires.private in devmapper.pc and lvm2app.pc.
352   Use pkgconfig Requires.private for devmapper-event.pc.
353   Add libdevmapper to linked libdevmapper-event.so.
354   Link liblvm2cmd.so with libdevmapper-event and libdevmapper.
355   Fix truncated total size displayed by pvscan.
356   Add new --sysinit compound option to vgchange and lvchange.
357   Drop duplicate errors for read failures and missing devices to verbose level.
358   Use $(libdir)/lvm2 with make install_lvm2_plugin.
359   Use $(libdir)/device-mapper with make install_dm_plugin.
360   Add dm_list_splice() function to join two lists together.
361
362 Version 2.02.64 - 30th April 2010
363 =================================
364   Avoid pointless initialisation when the 'version' command is run directly.
365   Fix memory leak for invalid regex pattern input.
366   Display invalid regex pattern for filter configuration in case of error.
367   Remove no-longer-used arg_ptr_value.
368   Fix -M and --type to use strings, not pointers that change on config refresh.
369   Fix lvconvert error message when existing mirrored LV is not found.
370   Set appropriate udev flags for reserved LVs.
371   Disallow the direct removal of a merging snapshot.
372   Don't preload the origin when removing a snapshot whose merge is pending.
373   Disallow the addition of mirror images while a conversion is happening.
374   Disallow primary mirror image removal when mirror is not in-sync.
375   Remove obsolete --name parameter from vgcfgrestore.
376   Add -S command to clvmd to restart the daemon preserving exclusive locks.
377   Increment lvm2app version from 1 to 2 (memory allocation changes).
378   Change lvm2app memory alloc/free for pv/vg/lv properties.
379   Change daemon lock filename from lvm2_monitor to lvm2-monitor for consistency.
380   Install symbolic .so links with relative paths between usrlibdir and libdir.
381   Add awk script relpath.awk to calculate paths for relative symlinks.
382   Use @AWK@ in makefiles.
383   Fix double DESTDIR usage for infodir and mandir.
384
385 Version 2.02.63 - 14th April 2010
386 =================================
387   Rename lvm_dump.sh to lvmdump.sh.
388   Allow incomplete mirror restore in lvconvert --repair upon insufficient space.
389   Do not reset position in metadata ring buffer on vgrename and vgcfgrestore.
390   Allow VGs with active LVs to be renamed.
391   Use UUIDs instead of names while processing event handlers.
392   Only pass visible LVs to tools in cmdline VG name/tag expansions without -a.
393   Use typedefs for toollib process_each functions.
394   Use C locales and use_mlockall for clvmd.
395   Refactor code related to vg->pvs list and add pv->vg link.
396   Mask LCK_HOLD flag in cluster VG locks for backwards compatibility.
397   Add activation/polling_interval to lvm.conf as --interval default.
398   Don't ignore error if resuming any LV fails in resume_lvs.
399   Skip closing persistent filter cache file if open failed.
400   Install .a and .so links into $(usrlibdir).
401   Add --enable-write_install options to install user-writable files.
402   Use INSTALL_PROGRAM/DATA/WDATA target.
403   Switch from using VPATH  to vpath in Makefiles.
404   Permit mimage LVs to be striped in lvcreate, lvresize and lvconvert.
405   Fix pvmove allocation to take existing parallel stripes into account.
406   Add pvmove_source_seg to struct lv_segment.
407   Fix incorrect removal of symlinks after LV deactivation fails.
408   Fix is_partitioned_dev not to attempt to reopen device.
409   Fix another thread race in clvmd.
410   Refactor management of vg->pvs list.
411   Fix lcov rules and generate better coverage report.
412   Improve vg_validate to detect some loops in lists.
413   Change most remaining log_error WARNING messages to log_warn.
414   Always use blocking lock for VGs and orphan locks.
415   Allocate all memory for segments from private VG mempool.
416   Return newly allocated PV segment after segment split.
417   Optimise searching PV segments for seeking the most recently-added.
418   Remove vg_validate call when parsing cached metadata.
419   Use hash table of LVs to speed up parsing of text metadata with many LVs.
420   Fix two vg_validate messages, adding whitespace and parentheses.
421   When dmeventd is not forking because of -d flag, don't kill parent process.
422   Fix 'make install' when $(builddir) is different from $(srcdir).
423   Fix dso resource leak in error path of dmeventd.
424   Use C locales and use_mlockall for dmeventd.
425   Fix --alloc contiguous policy only to allocate one set of parallel areas.
426   Do not allow {vg|lv}change --ignoremonitoring if on clustered VG.
427   Improved dependency tracking for dmeventd and liblvm2cmd sources.
428   Improved Makefile rules for distclean and cflow targets.
429   Add ability to create mirrored logs for mirror LVs.
430   Fix clvmd cluster propagation of dmeventd monitoring mode.
431   Allow ALLOC_ANYWHERE to split contiguous areas.
432   Use INTERNAL_ERROR for internal errors throughout tree.
433   Add some assertions to allocation code.
434   Introduce pv_area_used into allocation algorithm and add debug messages.
435   Add activation/monitoring to lvm.conf.
436   Add --monitor and --ignoremonitoring to lvcreate.
437   Allow dynamic extension of array of areas selected as allocation candidates.
438   Export and use only valid cookie value in test suite.
439   Remove const modifier for struct volume_group* from process_each_lv_in_vg().
440   Don't allow resizing of internal logical volumes.
441   Fix libdevmapper-event pkgconfig version string to match libdevmapper.
442   Avoid scanning all pvs in the system if operating on a device with mdas.
443   Add configure --with-clvmd=singlenode to use clvmd w/o cluster infrastructure.
444   Get stacktrace if testsuite test drops core and lvm was built with debugging.
445   Disable long living process flag in lvm2app.
446   Fix pvcreate device md filter check.
447   Suppress repeated errors about the same missing PV uuids.
448   Bypass full device scans when using internally-cached VG metadata.
449   Only do one full device scan during each read of text format metadata.
450   Remove unnecessary full_scan parameter from get_vgids and get_vgnames calls.
451   Look up missing PVs by uuid not dev_name in _pvs_single to avoid invalid stat.
452   Make find_pv_in_vg_by_uuid() return same type as related functions.
453   Introduce is_missing_pv().
454   Fix clvmd Makefile to not overwrite LIBS from template definition.
455
456 Version 2.02.62 - 9th March 2010
457 ================================
458   Add use_mlockall and mlock_filter to activation section of lvm.conf.
459   Add default alternative to mlockall using mlock to reduce pinned memory size.
460   Remove -rdynamic from static builds.
461   Update checks for pthread, readline & selinux libs and link only when needed.
462   Introduce makefile vars UDEV_LIBS, DL_LIBS, SELINUX_LIBS, STATIC_LIBS.
463   Introduce makefile vars LVMINTERNAL_LIBS, READLINE_LIBS, PTHREAD_LIBS.
464   Toggle configure help to print --disable-fsadm.
465   Use $() instead of ${} consistently for all Makefile variables.
466   Replace CFLOW_CMD only in make.tmpl and use it as variable elsewhere.
467   Use $(top_builddir) for inclusion of make.tmpl in Makefiles.
468   Fix autoconf warning about ignored datarootdir.
469   Increase AC_PREREQ version to 2.61 (for AC_PROC_SED, AC_PROG_MKDIR_P).
470   Handle misaligned devices that report alignment_offset of -1.
471   Extend core allocation code in preparation for mirrored log areas.
472   Rewrite clvmd init script.
473   Remove lvs_in_vg_activated_by_uuid_only call.
474   No longer fall back to looking up active devices by name if uuid not found.
475   Don't touch /dev in vgmknodes if activation is disabled.
476   Update lvm2app.h Doxygen comments and add lvm2app Doxygen config file.
477   Update nightly tests and lvm2app unit tests to cover tags.
478   Add lvm2app functions lvm_{vg|lv}_{get|add|remove}_tag() functions.
479   Add dm_pool_strdup to allocate and copy memory in tag library function.
480   Refactor vgcreate, vgchange, and lvchange for tag library function.
481   Refactor snapshot-merge deptree and device removal to support info-by-uuid.
482
483 Version 2.02.61 - 15th February 2010
484 ====================================
485   Fix some consts and floating point gcc warnings.
486   Fix dm_report_field_uint64 function to accept 64-bit ints.
487   Change readhead display to use 32-bit -1 const instead of 64-bit.
488   Add LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES environment variable.
489   Remove hard-coding that skipped _mimage devices from 11-dm-lvm.rules.
490   Use udev transactions in test suite.
491   Set udev state automatically instead of using LVM_UDEV_DISABLE_CHECKING.
492   Add lvm_pv_get_size, lvm_pv_get_free and lvm_pv_get_dev_size to lvm2app.
493   Change lvm2app to return all sizes in bytes as documented (not sectors).
494   Add 'fail_if_percent_unsupported' arg to _percent and _percent_run.
495   Remove false "failed to find tree node" error when activating merging origin.
496   Exit with success when lvconvert --repair --use-policies performs no action.
497   Accept a list of LVs with 'lvconvert --merge @tag' using process_each_lv.
498   Avoid unnecessary second resync when adding mimage to core-logged mirror.
499   Exclude internal VG names and uuids from lists returned through lvm2app.
500   Add %ORIGIN support to lv{create,extend,reduce,resize} --extents.
501   Add _mda_copy to clone a struct metadata_area.
502   Remove pointless versioned symlinks to dmeventd plugin libraries.
503   Fix dmeventd snapshot plugin build dependency.
504   Make clvmd -V return status zero.
505   Remove unnecessary 'dmsetup resume' following 'dmsetup create' in tests.
506   Fix cmirrord segfault in clog_cpg list processing when converting mirror log.
507   Deactivate temporary pvmove mirror cluster-wide when activating it fails.
508   Always query device by uuid and not name in clvmd.
509   Add missing metadata vg_reverts in pvmove error paths.
510   Unlock shared lock in clvmd if activation calls fail.
511   Return success from dev_manager_info with non-existent uuid if ioctl succeeds.
512
513 Version 2.02.60 - 23rd January 2010
514 ===================================
515   Extend cmirrord man page.
516   Sleep before first progress check if pvmove/lvconvert interval has prefix '+'.
517   Default to checking progress before waiting in _wait_for_single_lv.
518   Fix cmirror initscript (including syntax error).
519   Eliminate avoidable ioctls for checking open_count in _add_new_lv_to_dtree.
520   Disable memory debugging if dmeventd is configured. (Not thread-safe.)
521   Fix first log message prefix in syslog for dmeventd plugins.
522   Fix exported symbols names for dmeventd lvm2 wrapper plugin.
523   Make failed locking initialisation messages more descriptive.
524
525 Version 2.02.59 - 21st January 2010
526 ===================================
527   Add libdevmapper-event-lvm2.so to serialise dmeventd plugin liblvm2cmd use.
528   Cleanup memory initialization and freeing in pv_read() and pv_create().
529   Clear pointer and counters after their release in _fin_commands().
530   Stop dmeventd trying to access already-removed snapshots.
531   Remove (fallback) /dev mknod from cmirrord.
532   Add t-topology-support.sh and t-snapshot-merge.sh tests.
533   Fix clvmd to never scan suspended devices.
534   Fix dmeventd build outside source tree.
535   Assorted cmirror code changes to remove various compiler warnings.
536   Fix detection of completed snapshot merge.
537   Add Red Hat cmirror initscript (unfinished).
538   Add cmirrord man page (incomplete).
539   Make cluster log communication structures architecture independant.
540   Fix cluster log in-memory bitmap handling.
541   Improve snapshot merge metadata import validation.
542   Improve target type compatibility checking in _percent_run().
543   Add 'target_status_compatible' method to 'struct segtype_handler'.
544   Change underscore to hyphen in table line for clustered log type.
545
546 Version 2.02.58 - 14th January 2010
547 ===================================
548   Cleanup some minor gcc warnings.
549   Add --merge to lvconvert to merge a snapshot into its origin.
550   Fix clvmd automatic target module loading crash (no reset_locking fn).
551   Fix allocation code not to stop at the first area of a PV that fits.
552
553 Version 2.02.57 - 12th January 2010
554 ===================================
555   Ensure exactly one process returns from poll_daemon(), never two.
556   Reset _vgs_locked in lvmcache_init() in child after forking.
557   Define {DM, LVM}_UDEV_DISABLE_CHECKING=1 environment variables during tests.
558   Enable udev_sync and udev_rules in lvm.conf by default while running tests.
559   If LVM_UDEV_DISABLE_CHECKING in set in environment, disable udev warnings.
560   Add --splitmirrors to lvconvert to split off part of a mirror.
561   Change background polldaemon's process name to "(lvm2)".
562   Allow vgremove to remove a VG with PVs missing after a prompt.
563   Return success in lvconvert --repair --use-policies on failed allocation.
564   Keep log type consistent when changing mirror image count.
565   Always set environment variables for an LVM2 device in 11-dm-lvm.rules.
566   Add activation/udev_rules config option in lvm.conf.
567   Add consts to text metadata flag structs.
568   Add macros outfc, outsize, outhint and function out_text_with_comment.
569   Reimplement report FIELD macro using offsetof instead of static structs.
570   Fix fsadm man page typo (fsdam).
571   Rename mirror_device_fault_policy to mirror_image_fault policy.
572   Remove empty PV devices if lvconvert --repair is using defined policies.
573   Use fixed buffer to prevent stack overflow in persistent filter dump.
574   Use extended status of new kernel snapshot target 1.8.0 to detect when empty.
575   Insert stack macros in suspend_lv, resume_lv & (de)activate_lv callers.
576   Add --poll flag to vgchange and lvchange to control background daemon launch.
577   Propagate metadata commit and revert notifications to other cluster nodes.
578   Use proper mask for VG lock mode in clvmd.
579   Allow precommitted metadata to be dropped from lvmcache.
580   Move processing of VG locks to separate function in clvmd.
581   Properly decode all flags in clvmd messages including VG locks.
582   Properly handle precommitted cache flag when only committed metadata present.
583   Resume renamed volumes in reverse order to preserve memlock pairing.
584   Drop cached metadata after device was auto-repaired and removed from VG.
585   Clear MISSING_PV flag if PV reappeared and is empty.
586   Fix removal of multiple devices from a mirror.
587   Also clean up PVs flagged as missing in vgreduce --removemissing --force.
588   Introduce INTERNAL_ERROR macro for error messages and use throughout.
589   Remove superfluous returns from void functions.
590   Destroy allocated mempool in _vg_read_orphans() error path.
591   Fix some pvresize and toollib error paths with missing VG releases/unlocks.
592   Explicitly call suspend for temporary mirror layer.
593   Allow use of precommitted metadata when a PV is missing.
594   Add memlock information to do_lock_lv debug output.
595   Always bypass calls to remote cluster nodes for non-clustered VGs.
596   Permit implicit cluster lock conversion in pre/post callbacks on local node.
597   Permit implicit cluster lock conversion to the lock mode already held.
598   Fix lock flag masking in clvmd so intended code paths get invoked.
599   Replace magic masks in cluster locking code by defined masks.
600   Remove newly-created mirror log from metadata if initial deactivation fails.
601   Correct activated or deactivated text in vgchange summary message.
602   Improve pvmove error message when all source LVs are skipped.
603   Fix memlock imbalance in lv_suspend if already suspended.
604   Fix pvmove test mode not to poll (and fail).
605   Fix vgcreate error message if VG already exists.
606   Fix tools to use log_error when aborted due to user response to prompt.
607   Fix ignored readahead setting in lvcreate --readahead.
608   Fix clvmd memory leak in lv_info_by_lvid by calling release_vg.
609   If aborting due to internal error, always send that message to stderr.
610   Add global/abort_on_internal_errors to lvm.conf to assist testing.
611   Fix test Makefiles when builddir and srcdir differ.
612   Impose limit of 8 mirror images to match the in-kernel kcopyd restriction.
613   Use locking_type 3 (compiled in) for lvmconf --enable-cluster.
614   Remove list.c and list.h with no-longer-used dm_list macros and functions.
615   Log failure type and recognise type 'F' (flush) in dmeventd mirror plugin.
616   Extend internal PV/VG/LV/segment status variables from 32-bit to 64-bit.
617
618 Version 2.02.56 - 24th November 2009
619 ====================================
620   Add missing vg_release to pvs and pvdisplay to fix memory leak.
621   Do not try to unlock VG which is not locked in _process_one_vg.
622   Move is_long_lived persistent_filter_dump to happen after every full scan.
623   Refresh device filters before full device rescan in lvmcache.
624   Return error status if vgchange fails to activate some volume.
625   Fix suspend/resume lock type test causing unbalanced memory locking.
626   Revert vg_read_internal change as clvmd was not ready for vg_read. (2.02.55)
627
628 Version 2.02.55 - 19th November 2009
629 ====================================
630   Fix deadlock when changing mirrors due to unpaired memlock refcount changes.
631   Use separate memlock counter for dmeventd handlers to permit device scanning.
632   Directly restrict vgchange to activating visible LVs.
633   Fix pvmove region_size overflow for very large PVs.
634   Fix lvcreate and lvresize %PVS argument always to use sensible total size.
635   Tidy some uses of arg_count and introduce arg_is_set.
636   Export outnl and indent functions for modules.
637   Flush stdout after yes/no prompt.
638   Update vgsplit and vgcreate to use vg_set_clustered.
639   Add vg_mda_count and vg_set_clustered library functions.
640   Add more vgcreate and vgsplit nightly tests.
641   Insert some missing stack macros into activation code.
642   Recognise DRBD devices and handle them like md devices.
643
644 Version 2.02.54 - 26th October 2009
645 ===================================
646   Update lvcreate/lvconvert man pages to explain PhysicalVolume parameter.
647   Document --all option in man pages, cleanup {pv|vg|lv}{s|display} man pages.
648   Permit snapshots of mirrors.
649   Cleanup mimagetmp LV if allocation fails for new lvconvert mimage.
650   Fix clvmd segfault when refresh_toolcontext fails.
651   Remember to clear 'global lock held during cache refresh' state after use.
652   Use udev flags support in LVM and apply various fixes to udev rules.
653   Delay announcing mirror monitoring to syslog until initialisation succeeded.
654   Handle metadata with unknown segment types more gracefully.
655   Set default owner and group to null.
656   Add dmeventd.static to the build.
657   Disable realtime support code by default.
658   Make clvmd return 0 on success rather than 1.
659   Add --pvmetadatacopies for pvcreate, vgcreate, vgextend, vgconvert.
660   Add implict pvcreate support to vgcreate and vgextend.
661   Correct example.conf to indicate that lvm2 not lvm1 is the default format.
662   Remove an unused stray LVM1_SUPPORT ifdef.
663   Only include selinux libs in libdevmapper.pc when selinux build enabled.
664   Allow for a build directory separate from the source.
665   Update distclean target for rename clogd to cmirrord. (2.02.52)
666   Only do lock conversions in clvmd if we are explicitly asked for one.
667   Introduce percent_range_t and centralise snapshot full/mirror in-sync checks.
668   Factor out poll_mirror_progress and introduce progress_t.
669   Distinguish between powers of 1000 and powers of 1024 in unit suffixes.
670   Restart lvconverts in vgchange by sharing lv_spawn_background_polling.
671   Generalise polldaemon code by changing mirror-specific variable names.
672   Don't attempt to deactivate an LV if any of its snapshots are in use.
673   Return error if lv_deactivate fails to remove device from kernel.
674   Provide alternative implementation of obsolete siginterrupt().
675   Consolidate LV allocation into alloc_lv().
676   Treat input units of both 's' and 'S' as 512-byte sectors.  (2.02.49)
677   Use standard output units for 'PE Size' and 'Stripe size' in pv/lvdisplay.
678   Add configure --enable-units-compat to set si_unit_consistency off by default.
679   Add global/si_unit_consistency to enable cleaned-up use of units in output.
680
681 Version 2.02.53 - 25th September 2009
682 =====================================
683   Create any directories in /dev with DM_DEV_DIR_UMASK (022).
684   Enable dmeventd monitoring section of config file by default.
685   Update lvm2 monitoring script to lvm2_monitoring_init_red_hat.in.
686   Fix lvm2app test to run under test/api subdirectory only when configured.
687   Add vg_is_resizeable() and cleanup reference to VG_RESIZEABLE.
688
689 Version 2.02.52 - 15th September 2009
690 =====================================
691   Update _process_one_vg to cleanup properly after vg_read_error.
692   Add lots of missing stack debug messages to tools.
693   Make readonly locking available as locking type 4.
694   Fix readonly locking to permit writeable global locks (for vgscan). (2.02.49)
695   Add DM_UDEV_RULES_VSN environment variable to udev rules.
696   Update vgsplit, vgmerge, and vgrename to obey new vgname ordering rules.
697   Make lvm2app pv_t, lv_t, vg_t handle definitions consistent with lvm_t.
698   Enforce an alphabetical lock ordering on vgname locking.
699   Prioritise write locks over read locks by default for file locking.
700   Add local lock files with suffix ':aux' to serialise locking requests.
701   Fix global locking in PV reporting commands (2.02.49).
702   Fix pvcreate string termination in duplicate uuid warning message.
703   Don't loop reading sysfs with pvcreate on a non-blkext partition (2.02.51).
704   Fix vgcfgrestore error paths when locking fails (2.02.49).
705   Update Makefile distclean target.
706   Add libudev configuration check.
707   Make clvmd check corosync to see what cluster interface it should use.
708   Add clvmd autodetection check and cleanup related configure messages.
709   Rewrite clvmd configuration code to cope with all combinations of libs.
710   Added configure --enable-cmirrord to build the cluster mirror log daemon.
711   Rename clogd to cmirrord.
712   Make lvchange --refresh only take a read lock on volume group.
713   Fix race where non-blocking file locks could be granted in error.
714   Fix vgextend error path - if ORPHAN lock fails, unlock / release vg (2.02.49).
715   Fix compile warning in clvmd.
716   Clarify use of PE ranges in lv{convert|create|extend|resize} man pages.
717   Remove useless _pv_write wrapper.
718   Add lvm2app.sh to tests conditional upon configure --enable-applib.
719   Add lvm_vg_is_clustered, lvm_vg_is_exported, and lvm_vg_is_partial.
720   Update lvm_vg_remove to require lvm_vg_write to commit remove to disk.
721   Update test/api/test.c to call lvm_vg_create and lvm_vg_remove.
722
723 Version 2.02.51 - 6th August 2009
724 =================================
725   Fix locking in clvmd (2.02.50).
726   Add --noudevsync option for relevant LVM tools.
727   Add activation/udev_sync to lvm.conf.
728   Only change LV symlinks on ACTIVATE not PRELOAD.
729   Make lvconvert honour log mirror options combined with downconversion.
730   Allow LV suspend while --ignorelockingfailure is in force.
731   Update synopsis in lvconvert manpage to mention --repair.
732   Set cookies in activation code and wait for udev to complete processing.
733   Added configure --enable-udev_rules --enable-udev_sync.
734   Added configure --with-udev-prefix --with-udevdir.
735   Added udev dir to hold udev rules.
736   Add devices/data_alignment_detection to lvm.conf.
737   Add devices/data_alignment_offset_detection to lvm.conf.
738   Add --dataalignmentoffset to pvcreate to shift start of aligned data area.
739   Fix _mda_setup() to not check first mda's size before pe_align rounding.
740   Document -I option of clvmd in the man page.
741   Fix configure script to handle multiple clvmd selections.
742   Fix lvm2app.pc installation filename.
743   Remove pv_t, vg_t & lv_t handles from lib.  Only liblvm uses them.
744   Rename lvm.h to lvm2app.h for now.
745
746 Version 2.02.50 - 28th July 2009
747 ================================
748   Change test/api/test.c prompt so it's not confused with the main lvm prompt.
749   Update liblvm unit tests in test/api to cover latest liblvm changes.
750   Add unimplemented lvm_lv_resize and lvm_pv_resize skeletons to liblvm.
751   Add lvm_library_get_version to liblvm.
752   Add lvm_config_override to liblvm to allow caller to override LVM config.
753   Add lvm_lv_is_active and lvm_lv_is_suspended to liblvm.
754   Add lvm_lv_activate and lvm_lv_deactivate to liblvm.
755   Add lvm_scan, lvm_vg_reduce and lvm_vg_remove_lv to liblvm.
756   Add functions to get numeric properties to liblvm.
757   Add lvm_{pv|vg|lv}_get_{name|uuid} to liblvm.
758   Add lvm_vg_list_pvs and lvm_vg_list_lvs to liblvm.
759   Add lvm_vg_open and lvm_vg_create_lv_linear to liblvm.
760   Add lvm_list_vg_names/uuids to liblvm.
761   Add lvm_errno and lvm_errmsg to liblvm to obtain failure information.
762   Rename lvm_create/destroy to lvm_init/quit.
763   Rename lvm_reload_config to lvm_config_reload.
764   Refactor _override_settings to use new override_config_tree_from_string.
765   Add vg_reduce to metadata.c and metadata-exported.h.
766   Update lvm.h to clarify API behavior and return codes.
767   Update lvm_vg_extend to do an implicit pvcreate on the device.
768   Update display.c to use vg_free(vg) instead of duplicating the calculation.
769   Refactor vg_size, vg_free, and pv_mda_count field calculations for liblvm.
770   Refactor pvcreate and lvcreate for liblvm.
771   Add global/wait_for_locks to lvm.conf so blocking for locks can be disabled.
772   All LV locks are non-blocking so remove LCK_NONBLOCK from separate macros.
773   Fix race condition with vgcreate and vgextend on same device (2.02.49).
774   Remove redundant validate_name call from vgreduce.
775   Remove unused handles lvseg, pvseg inside liblvm/lvm.h.
776   Add liblvm2app Makefile installation targets.
777   Add liblvm pkgconfig file.
778   Use newly-independent LVM_LIBAPI in liblvm soname.  E.g. liblvm2app.so.2.1.
779   Add an API version number, LVM_LIBAPI, to the VERSION string for liblvm.
780   Pass a pointer to struct cmd_context to init_multiple_segtypes
781   Return EINVALID_CMD_LINE not success when invalid VG name format is used.
782   Remove unnecessary messages after vgcreate/vgsplit refactor (2.02.49).
783   Add log_errno to set a specific errno and replace log_error in due course.
784   Change create_toolcontext to still return an object if it fails part-way.
785   Add EUNCLASSIFIED (-1) as the default LVM errno code.
786   Store any errno and error messages issued while processing each command.
787   Use log_error macro consistently throughout in place of log_err.
788
789 Version 2.02.49 - 15th July 2009
790 ================================
791   Add readonly locking type to replace implementation of --ignorelockingfailure.
792   Exclude VG_GLOBAL from vg_write_lock_held so scans open devs read-only again.
793   Add unit test case for liblvm VG create/delete APIs.
794   Add liblvm APIs to implement creation and deletion of VGs.
795   Initialize cmd->cmd_line to "liblvm" in new liblvm library.
796   Place handles to liblvm objects for pv, vg, lv, lvseg, pvseg inside lvm.h.
797   Refactor vgsplit and vgextend to remove READ_REQUIRE_RESIZEABLE flag.
798   Use _exit() not exit() after forking to avoid flushing libc buffers twice.
799   Add cast to log_info arg in _find_labeller to avoid Sparc64 warning.
800   Make cmd->cmd_line const.
801   Fix dev name mismatch in vgcreate man page example.
802   Refactor vg_remove_single for use in liblvm.
803   Make all tools use consistent lock ordering obtaining VG_ORPHAN lock second.
804   Check md devices for a partition table during device scan.
805   Add extended device (blkext) and md partition (mdp) types to filters.
806   Make text metadata read errors for segment areas more precise.
807   Fix text segment metadata read errors to mention correct segment name.
808   Include segment and LV names in text segment import error messages.
809   Add parent node to config_node structure.
810   Update vgsplit and vgcreate to call new vg_create and 'set' functions.
811   Change vg_create to take minimal parameters, obtain a lock, and return vg_t.
812   Refactor vgchange extent_size, max_lv, max_pv, and alloc_policy for liblvm.
813   Update t-vgcreate-usage.sh to test for default vg properties.
814   Fix memory leak in vgsplit when re-reading the vg.
815   Make various exit/cleanup paths more robust after lvm init failures.
816   Use LCK_NONBLOCK implicitly instead of explicit vg_read() flag.
817   Remove unnecessary locking and existence tests from new vg_read() interface.
818   Permit several segment types to be registered by a single shared object.
819   Update the man pages to document size units uniformly.
820   Allow commandline sizes to be specified in terms of bytes and sectors.
821   Update 'md_chunk_alignment' to use stripe-width to align PV data area.
822   Update test/t-inconsistent-metadata.sh to match new vg_read interface.
823   Add lvmcache_init() to polldaemon initialization.
824   Convert tools to use new vg_read / vg_read_for_update.
825   Fix segfault in vg_release when vg->cmd is NULL.
826
827 Version 2.02.48 - 30th June 2009
828 ================================
829   Abort if automatic metadata correction fails when reading VG to update it.
830   Explicitly request fallback to default major number in device mapper.
831   Ignore suspended devices during repair.
832   Call vgreduce --removemissing automatically to fix missing PVs in dmeventd.
833   Suggest using lvchange --resync when adding leg to not-yet-synced mirror.
834   Destroy toolcontext on clvmd exit to avoid memory pool leaks.
835   Fix lvconvert not to poll mirror if no conversion in progress.
836   Fix memory leaks in toolcontext error path.
837   Reinstate partial activation support in clustered mode. (2.02.40)
838   Allow metadata correction even when PVs are missing.
839   Use 'lvm lvresize' instead of 'lvresize' in fsadm.
840   Do not use '-n' realine option in fsadm for busybox compatiblity.
841   Add vg_lock_newname() library function for vgrename, vgsplit and vgcreate.
842   Round up requested readahead to at least one page and print warning.
843   Try to repair vg before actual vgremove when force flag provided.
844   Fix possible double release of VG after recovery.
845   Add parameter to process_each_vg specifying what to do with inconsistent VG.
846   Unify error messages when processing inconsistent volume group.
847   Use lvconvert --repair instead of vgreduce in mirror dmeventd DSO.
848   Introduce lvconvert --use_policies (repair policy according to lvm.conf).
849   Update clvmd-corosync to match new corosync API.
850   Fix lib Makefile to include any shared libraries in default target.
851   Fix rename of active snapshot with virtual origin.
852   Fix convert polling to ignore LV with different UUID.
853   Cache underlying device readahead only before activation calls.
854   Fix segfault when calculating readahead on missing device in vgreduce.
855   Remove verbose 'visited' messages.
856   Handle multi-extent mirror log allocation when smallest PV has only 1 extent.
857   Add LSB standard headers and functions (incl. reload) to clvmd initscript.
858   When creating new LV, double-check that name is not already in use.
859   Remove /dev/vgname/lvname symlink automatically if LV is no longer visible.
860   Rename internal vorigin LV to match visible LV.
861   Suppress 'removed' messages displayed when internal LVs are removed.
862   Fix lvchange -a and -p for sparse LVs.
863   Fix lvcreate --virtualsize to activate the new device immediately.
864   Make --snapshot optional with lvcreate --virtualsize.
865   Generalise --virtualoriginsize to --virtualsize.
866   Skip virtual origins in process_each_lv_in_vg() without --all.
867   Fix counting of virtual origin LVs in vg_validate.
868   Attempt to load dm-zero module if zero target needed but not present.
869
870 Version 2.02.47 - 22nd May 2009
871 ===============================
872   Rename liblvm.so to liblvm2app.so and use configure --enable-applib.
873   Reinstate version in liblvm2cmd.so soname. (2.02.44)
874
875 Version 2.02.46 - 21st May 2009
876 ===============================
877   Inherit readahead setting from underlying devices during activation.
878   Detect LVs active on remote nodes by querying locks if supported.
879   Enable online resizing of mirrors.
880   Use suspend with flush when device size was changed during table preload.
881   Implement query_resource_fn for cluster_locking.
882   Support query_resource_fn in locking modules.
883   Introduce CLVMD_CMD_LOCK_QUERY command for clvmd.
884   Fix pvmove to revert operation if temporary mirror creation fails.
885   Fix metadata export for VG with missing PVs.
886   Add vgimportclone and install it and the man page by default.
887   Force max_lv restriction only for newly created LV.
888   Remove unneeded import parameter from lv_create_empty.
889   Merge lv_is_displayable and lv_is_visible functions.
890   Introduce lv_set_visible & lv_set_hidden functions.
891   Fix lv_is_visible to handle virtual origin.
892   Introduce link_lv_to_vg and unlink_lv_from_vg functions.
893   Remove lv_count from VG and use counter function instead.
894   Fix snapshot segment import to not use duplicate segments & replace.
895   Do not query nonexistent devices for readahead.
896   Remove NON_BLOCKING lock flag from tools and set a policy to auto-set.
897   Remove snapshot_count from VG and use function instead.
898   Fix first_seg() call for empty segment list.
899   Add install_lvm2 makefile target to install only the LVM2 components.
900   Reject missing PVs from allocation in toollib.
901   Fix PV datalignment for values starting prior to MDA area. (2.02.45)
902   Add sparse devices: lvcreate -s --virtualoriginsize (hidden zero origin).
903   Fix minimum width of devices column in reports.
904   Add lvs origin_size field.
905   Fix linux configure --enable-debug to exclude -O2.
906   Implement lvconvert --repair for repairing partially-failed mirrors.
907   Fix vgreduce --removemissing failure exit code.
908   Fix remote metadata backup for clvmd.
909   Introduce unlock_and_release_vg macro.
910   Introduce vg_release() to be called to free every struct volume_group.
911   Alloc PV internal structure from VG mempool if possible.
912   Fix metadata backup to run after vg_commit always.
913   Tidy clvmd volume lock cache functions.
914   Fix pvs report for orphan PVs when segment attributes are requested.
915   Fix pvs -a output to not read volume groups from non-PV devices.
916   Add MMC (mmcblk) device type to filters.
917   Introduce memory pools per volume group (to reduce memory for large VGs).
918   Use copy of PV structure when manipulating global PV lists.
919   Always return exit error status when locking of volume group fails.
920   Fix mirror log convert validation question.
921   Avoid referencing files from DESTDIR during build process.
922   Avoid creating some static libraries unless configured --enable-static_link.
923   Enable use of cached metadata for pvs and pvdisplay commands.
924   Add missing 'device-mapper' internal subdir build dependency.
925   Fix memory leak in mirror allocation code.
926   Save and restore the previous logging level when log level is changed.
927   Fix error message when archive initialization fails.
928   Make sure clvmd-corosync releases the lockspace when it exits.
929   Fix segfault for vgcfgrestore on VG with missing PVs.
930   Block SIGTERM & SIGINT in clvmd subthreads.
931   Detect and conditionally wipe swapspace signatures in pvcreate.
932   Fix maximal volume count check for snapshots if max_lv set for volume group.
933   Fix lvcreate to remove unused cow volume if the snapshot creation fails.
934   Fix error messages when PV uuid or pe_start reading fails.
935   Build new liblvm application-level library.
936   Rename liblvm.a to liblvm-internal.a.
937   Flush memory pool and fix locking in clvmd refresh and backup command.
938   Fix unlocks in clvmd-corosync. (2.02.45)
939   Fix error message when adding metadata directory to internal list fails.
940   Fix size and error message of memory allocation at backup initialization.
941   Remove old metadata backup file after renaming VG.
942   Restore log_suppress state when metadata backup file is up-to-date.
943
944 Version 2.02.45 - 3rd March 2009
945 ================================
946   Avoid scanning empty metadata areas for VG names.
947   Attempt proper clean up in child before executing new binary in exec_cmd().
948   Do not scan devices if reporting only attributes from PV label.
949   Use pkgconfig to obtain corosync library details during configuration.
950   Fix error returns in clvmd-corosync interface to DLM.
951   Add --refresh to vgchange and vgmknodes man pages.
952   Pass --test from lvresize to fsadm as --dry-run.
953   Supply argv[] list to exec_cmd() to allow for variable number of parameters.
954   Prevent fsadm from checking mounted filesystems.
955   No longer treats any other key as 'no' when prompting in fsadm.
956   Tidy fsadm command line processing.
957   Add lib/lvm.h and lib/lvm_base.c for the new library interface.
958   Move tools/version.h to lib/misc/lvm-version.h.
959   Split LVM_VERSION into MAJOR, MINOR, PATCHLEVEL, RELEASE and RELEASE_DATE.
960   Add system_dir parameter to create_toolcontext().
961   Add --dataalignment to pvcreate to specify alignment of data area.
962   Exclude LCK_CACHE locks from _vg_lock_count, fixing interrupt unblocking.
963   Provide da and mda locations in debug message when writing text format label.
964   Mention the restriction on file descriptors at invocation on the lvm man page.
965   Index cached vgmetadata by vgid not vgname to cope with duplicate vgnames.
966   No longer require kernel and metadata major numbers to match.
967   Add a fully-functional get_cluster_name() to clvmd corosync interface.
968   Remove duplicate cpg_initialize from clvmd startup.
969   Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
970   Allow clvmd to start up if its lockspace already exists.
971   Separate PV label attributes which do not need parse metadata when reporting.
972   Remove external dependency on the 'cut' command from fsadm.
973   Fix pvs segfault when pv mda attributes requested for not available PV.
974   Add fsadm support for reszing ext4 filesysystems.
975   Move locking_type reading inside init_locking().
976   Rename get_vgs() to get_vgnames() and clarify related error messages.
977   Allow clvmd to be built with all cluster managers & select one on cmdline.
978   Mention --with-clvmd=corosync in ./configure.
979   Replace internal vg_check_status() implementation.
980   Rename vg_read() to vg_read_internal().
981
982 Version 2.02.44 - 26th January 2009
983 ===================================
984   Fix --enable-static_link after the recent repository changes.
985   Add corosync/DLM cluster interface to clvmd.
986   Add --nameprefixes, --unquoted, --rows to pvs, vgs, lvs man pages.
987   Fix lvresize size conversion for fsadm when block size is not 1K.
988   Fix pvs segfault when run with orphan PV and some VG fields.
989   Display a 'dev_size' of zero for missing devices in reports.
990   Add pv_mda_size to pvs and vg_mda_size to vgs.
991   Fix lvmdump /sys listing to include virtual devices directory.
992   Add "--refresh" functionality to vgchange and vgmknodes.
993   Avoid exceeding LV size when wiping device.
994   Calculate mirror log size instead of using 1 extent.
995   Ensure requested device number is available before activating with it.
996   Fix incorrect exit status from 'help <command>'.
997   Fix vgrename using UUID if there are VGs with identical names.
998   Fix segfault when invalid field given in reporting commands.
999   Move is_static from cmd to global is_static().
1000   Refactor init_lvm() for lvmcmdline and clvmd.
1001   Add liblvm interactive test infrastructure to build.
1002   Add skeleton lvm2.h file in preparation for a shared library interface.
1003   Use better random seed value in temp file creation.
1004   Add read_urandom to read /dev/urandom. Use in uuid calculation.
1005   Use displayable_lvs_in_vg and lv_is_displayable for consistency throughout.
1006   Fix race in vgcreate that would result in second caller overwriting first.
1007   Fix uninitialised lv_count in vgdisplay -c.
1008   Don't skip updating pvid hash when lvmcache_info struct got swapped.
1009   Add tinfo to termcap search path for pld-linux.
1010   Fix startup race in clvmd.
1011   Generate Red Hat clvmd startup script at config time with correct paths.
1012   Fix clvmd & dmeventd builds after tree restructuring.
1013   Cope with snapshot dependencies when removing a whole VG with lvremove.
1014   Make man pages and tool help text consistent using | for alternative options.
1015
1016 Version 2.02.43 - 10th November 2008
1017 ====================================
1018   Merge device-mapper into the lvm2 tree.
1019   Correct prototype for --permission on lvchange and lvcreate man pages.
1020   Exit with non-zero status from vgdisplay if couldn't show any requested VG.
1021   Move list.c into libdevmapper and rename functions.
1022   Rename a couple of variables that matched function names.
1023   Use simplified x.y.z version number in libdevmapper.pc.
1024   Remove ancient debian directory.
1025   Split out lvm-logging.h from log.h and lvm-globals.[ch] from log.[ch].
1026
1027 Version 2.02.42 - 26th October 2008
1028 ===================================
1029   Accept locking fallback_to_* options in the global section as documented.
1030   Fix temp table activation in mirror conversions not to happen in other cmds.
1031   Fix temp table in mirror conversions to use always-present error not zero.
1032
1033 Version 2.02.41 - 17th October 2008
1034 ===================================
1035   Use temp table to set device size when converting mirrors.
1036   In resume_mirror_images replace activate_lv with resume_lv as workaround.
1037   Avoid overwriting in-use on-disk text metadata by forgetting MDA_HEADER_SIZE.
1038   Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
1039   Generate man pages from templates and include version.
1040   Add usrlibdir and usrsbindir to configure.
1041   Fix conversion of md chunk size into sectors.
1042   Free text metadata buffer after a failure writing it.
1043   Fix misleading error message when there are no allocatable extents in VG.
1044   Fix handling of PVs which reappeared with old metadata version.
1045   Fix mirror DSO to call vgreduce with proper parameters.
1046   Fix validation of --minor and --major in lvcreate to require -My always.
1047   Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
1048
1049 Version 2.02.40 - 19th September 2008
1050 =====================================
1051   Allow lvremove to remove LVs from VGs with missing PVs.
1052   In VG with PVs missing, by default allow activation of LVs that are complete.
1053   Track PARTIAL_LV and MISSING_PV flags internally.
1054   Require --force with --removemissing in vgreduce to remove partial LVs.
1055   No longer write out PARTIAL flag into metadata backups.
1056   Treat new default activation/missing_stripe_filler "error" as an error target.
1057   Remove internal partial_mode.
1058   Add devices/md_chunk_alignment to lvm.conf.
1059   Pass struct physical_volume to pe_align and adjust for md chunk size.
1060   Store sysfs location in struct cmd_context.
1061   Avoid shuffling remaining mirror images when removing one, retaining primary.
1062   Add missing LV error target activation in _remove_mirror_images.
1063   Prevent resizing an LV while lvconvert is using it.
1064   Avoid repeatedly wiping cache while VG_GLOBAL is held in vgscan & pvscan.
1065   Fix pvresize to not allow resize if PV has two metadata areas.
1066   Fix setting of volume limit count if converting to lvm1 format.
1067   Fix vgconvert logical volume id metadata validation.
1068   Fix lvmdump metadata gather option (-m) to work correctly.
1069   Fix allocation bug in text metadata format write error path.
1070   Fix vgcfgbackup to properly check filename if template is used.
1071   configure aborts if lcov or genhtml are missing with --enable-profiling
1072   vgremove tries to remove lv snapshot first.
1073   Added function lv_remove_with_dependencies().
1074   Improve file descriptor leak detection to display likely culprit and filename.
1075   Change clustered mirror kernel module name from cmirror to dm-log-clustered.
1076   Avoid looping forever in _pv_analyze_mda_raw used by pvck.
1077   Change lvchange exit status to indicate if any part of the operation failed.
1078   Fix pvchange and pvremove to handle PVs without mdas.
1079   Refactor _text_pv_read and always return mda list if requested.
1080   Fix configure to work w/o readline unless --enable-readline used. (2.02.39)
1081   Remove is_lvm_partition template which has not yet been coded.
1082   Refactor pvcreate to separate parameter parsing from validation logic.
1083   Check for label_write() failure in _text_pv_write().
1084   Add pvcreate tests and update vgsplit tests to handle lvm1 and lvm2 metadata.
1085   Fix pvchange -M1 -u to preserve existing extent locations when there's a VG.
1086   Cease recognising snapshot-in-use percentages returned by early devt kernels.
1087   Add backward-compatible flags field to on-disk format_text metadata.
1088   Fix dmeventd monitoring libraries to link against liblvm2cmd again. (2.02.39)
1089
1090 Version 2.02.39 - 27th June 2008
1091 ================================
1092   Enable readline by default if available.
1093   Update autoconf to 2008-01-16.
1094   Add $DISTCLEAN_DIRS to make.tmpl.in.
1095   Create coverage reports with --enable-profiling and make lcov or lcov-dated.
1096   Fix up cache for PVs without mdas after consistent VG metadata is processed.
1097   Update validation of safe mirror log type conversions in lvconvert.
1098   Fix lvconvert to disallow snapshot and mirror combinations.
1099   Fix reporting of LV fields alongside unallocated PV segments.
1100   Add --unquoted and --rows to reporting tools.
1101   Add and use uninitialized_var() macro to suppress invalid compiler warnings.
1102   Introduce enum for md minor sb version to suppress compiler warning.
1103   Avoid undefined return value after _memlock manipulation in lvm2_run.
1104   Avoid link failure if configured without --enable-cmdlib or --enable-readline.
1105   Make clvmd return at once if other nodes down in a gulm or openais cluster.
1106   Fix and improve readahead 'auto' calculation for stripe_size.
1107   Fix lvchange output for -r auto setting if auto is already set.
1108   Add test case for readahead.
1109   Avoid ambiguous use of identifier error_message_produced.
1110   Begin syncing configure.in for merge/unification with device-mapper.
1111   Fix add_mirror_images not to dereference uninitialized log_lv upon failure.
1112   Don't call openlog for every debug line output by clvmd.
1113   Add --force to lvextend and lvresize.
1114   Fix vgchange not to activate component mirror volumes directly.
1115   Fix test directory clean up in make distclean.
1116
1117 Version 2.02.38 - 11th June 2008
1118 ================================
1119   Fix tracking of validity of PVs with no mdas in lvmcache.
1120   Fix return values for reporting commands when run with no PVs, LVs, or VGs.
1121   Add omitted unlock_vg() call when sigint_caught() during vg processing.
1122   Fix free_count when reading pool metadata.
1123   Fix segfault when using pvcreate on a device containing pool metadata.
1124   Fix segfault after _free_vginfo by remembering to remove vginfo from list.
1125   Tweak detection of invalid fid after changes to PVs in VG in _vg_read.
1126   Revert assuming precommitted metadata is live when activating (unnecessary).
1127   Drop cached metadata for disappearing VG in vgmerge.
1128   In script-processing mode, stop if any command fails.
1129   Warn if command exits with non-zero status code without a prior log_error.
1130   Check lv_count in vg_validate.
1131   Add --nameprefixes to reporting tools for field name prefix output format.
1132
1133 Version 2.02.37 - 6th June 2008
1134 ===============================
1135   Make clvmd-cman use a hash rather than an array for node updown info.
1136   Correct config file line numbers in messages when parsing comments.
1137   Drop cached metadata when renaming a VG.
1138   Allow for vginfo changing during _vg_read.
1139   Decode numbers in clvmd debugging output.
1140   Add missing deactivation after activation failure in lvcreate -Zy.
1141   When activating, if precommitted metadata is still cached, assume it's live.
1142   When removing LV symlinks, skip any where the VG name is not determined.
1143   Drop metadata cache if update fails in vg_revert or vg_commit.
1144   Avoid spurious duplicate VG messages referring to VGs that are gone.
1145   Drop dev_name_confirmed error message to debug level.
1146   Fix setpriority error message to signed int.
1147   Temporarily disable dmeventd mirror monitoring during lvchange --resync.
1148   Refactor some vginfo manipulation code.
1149   Add assertions to trap deprecated P_ and V_ lock usage.
1150   Add missing mutex around clvmd lvmcache_drop_metadata library call.
1151   Fix uninitialised mutex in clvmd if all daemons are not running at startup.
1152   Avoid using DLM locks with LCK_CACHE type P_ lock requests.
1153   When asked to drop cached committed VG metadata, invalidate cached PV labels.
1154   Drop metadata cache before writing precommitted metadata instead of after.
1155   Don't touch /dev in vgrename if activation is disabled.
1156
1157 Version 2.02.36 - 29th April 2008
1158 =================================
1159   Fix fsadm.sh to work with older blockdev, blkid & readlink binaries.
1160   Fix lvresize to pass new size to fsadm when extending device.
1161   Remove unused struct in clvmd-openais, and use correct node count.
1162   Fix nodes list in clvmd-openais, and allow for broadcast messages.
1163   Exclude VG_GLOBAL from internal concurrent VG lock counter.
1164   Fix vgsplit internal counting of snapshot LVs.
1165   Fix vgmerge snapshot_count when source VG contains snapshots.
1166   Simplify clvmd-openais by using non-async saLckResourceLock.
1167   Fix internal LV counter when a snapshot is removed.
1168   Fix metadata corruption writing lvm1-formatted metadata with snapshots.
1169   Fix lvconvert -m0 allocatable space check.
1170
1171 Version 2.02.35 - 15th April 2008
1172 =================================
1173   Drop cached VG metadata before and after committing changes to it.
1174   Rename P_global to P_#global.
1175   Don't attempt remote metadata backups of non-clustered VGs. (2.02.29)
1176   Don't store fid in VG metadata cache to avoid clvmd segfault. (2.02.34)
1177   Update vgsplit tests to verify loosening of active LV restriction.
1178   Update vgsplit to only restrict split with active LVs involved in split.
1179   Add lv_is_active() to determine whether an lv is active.
1180
1181 Version 2.02.34 - 10th April 2008
1182 =================================
1183   Improve preferred_names lvm.conf example.
1184   Fix vgdisplay 'Cur LV' field to match lvdisplay output.
1185   Fix lv_count report field to exclude hidden LVs.
1186   Add vg_is_clustered() helper function.
1187   Fix vgsplit to only move hidden 'snapshotN' LVs when necessary.
1188   Update vgsplit tests for lvnames on the cmdline.
1189   Update vgsplit man page to reflect lvnames on the cmdline.
1190   Update vgsplit to take "-n LogicalVolumeName" on the cmdline.
1191   Use clustered mirror log with pvmove in clustered VGs, if available.
1192   Fix some pvmove error status codes.
1193   Fix vgsplit error paths to release vg_to lock.
1194   Indicate whether or not VG is clustered in vgcreate log message.
1195   Mention default --clustered setting in vgcreate man page.
1196   Add config file overrides to clvmd when it reads the active LVs list.
1197   Fix vgreduce to use vg_split_mdas to check sufficient mdas remain.
1198   Add (empty) orphan VGs to lvmcache during initialisation.
1199   Fix orphan VG name used for format_pool.
1200   Create a fid for internal orphan VGs.
1201   Update lvmcache VG lock state for all locking types now.
1202   Fix output if overriding command_names on cmdline.
1203   Add detection of clustered mirror log capability.
1204   Add check to vg_commit() ensuring VG lock held before writing new VG metadata.
1205   Add validation of LV name to pvmove -n.
1206   Make clvmd refresh the context correctly when lvm.conf is updated.
1207   Add some basic internal VG lock validation.
1208   Add per-command flags to control which commands use the VG metadata cache.
1209   Fix vgsplit locking of new VG (2.02.30).
1210   Avoid erroneous vgsplit error message for new VG. (2.02.29)
1211   Suppress duplicate message when lvresize fails because of invalid vgname.
1212   Cache VG metadata internally while VG lock is held.
1213   Fix redundant lvresize message if vg doesn't exist.
1214   Fix another allocation bug with clvmd and large node IDs.
1215   Add find_lv_in_lv_list() and find_pv_in_pv_list().
1216   Fix uninitialised variable in clvmd that could cause odd hangs.
1217   Add vgmerge tests.
1218   Add pvseg_is_allocated() for identifying a PV segment allocated to a LV.
1219   Add list_move() for moving elements from one list to another.
1220   Add 'is_reserved_lvname()' for identifying hidden LVs.
1221   Correct command name in lvmdiskscan man page.
1222   clvmd no longer crashes if it sees nodeids over 50.
1223   Fix potential deadlock in clvmd thread handling.
1224   Refactor text format initialisation into _init_text_import.
1225   Escape double quotes and backslashes in external metadata and config data.
1226   Add functions for escaping double quotes in strings.
1227   Rename count_chars_len to count_chars.
1228   Use return_0 in a couple more places.
1229   Correct a function name typo in _line_append error message.
1230   Include limits.h in clvmd so it compiles with newer headers.
1231   Add VirtIO disks (virtblk) to filters.
1232   Fix resetting of MIRROR_IMAGE and VISIBLE_LV after removal of LV. (2.02.30)
1233   Fix remove_layer_from_lv to empty the LV before removing it. (2.02.30)
1234   Add missing no-longer-used segs_using_this_lv test to check_lv_segments.
1235   Remove redundant non-NULL tests before calling free in clvmd.c.
1236   Avoid a compiler warning: make is_orphan's parameter const.
1237   Fix lvconvert detection of mirror conversion in progress. (2.02.30)
1238   Avoid automatic lvconvert polldaemon invocation when -R specified. (2.02.30)
1239   Fix 'pvs -a' to detect VGs of PVs without metadata areas.
1240   Divide up internal orphan volume group by format type.
1241   Update usage message for clvmd.
1242   Fix clvmd man page not to print <br> and clarified debug options.
1243   Fix lvresize to support /dev/mapper prefix in the LV name.
1244   Fix unfilled parameter passed to fsadm from lvresize.
1245   Update fsadm to call lvresize if the partition size differs (with option -l).
1246   Fix fsadm to support VG/LV names.
1247
1248 Version 2.02.33 - 31st January 2008
1249 ===================================
1250   Fix mirror log name construction during lvconvert. (2.02.30)
1251   Make monitor_dev_for_events recurse through the stack of LVs.
1252   Clean up some more compiler warnings.
1253   Some whitespace tidy-ups.
1254   Use stack return macros throughout.
1255   Rely upon internally-cached PV labels while corresponding VG lock is held.
1256
1257 Version 2.02.32 - 29th January 2008
1258 ===================================
1259   Fix two check_lv_segments error messages to show whole segment.
1260   Refactor mirror log attachment code.
1261   Fix internal metadata corruption in lvchange --resync. (2.02.30)
1262   Fix new parameter validation in vgsplit and test mode. (2.02.30)
1263   Remove redundant cnxman-socket.h file from clvmd directory.
1264   Fix pvs, vgs, lvs error exit status on some error paths.
1265
1266 Version 2.02.31 - 19th January 2008
1267 ===================================
1268   Fix lvcreate --nosync not to wait for non-happening sync. (2.02.30)
1269   Add very_verbose lvconvert messages.
1270   Avoid readahead error message with default setting of lvcreate -M1. (2.02.29)
1271
1272 Version 2.02.30 - 17th January 2008
1273 ===================================
1274   Set default readahead to twice maximium stripe size.
1275   Reinstate VG extent size and stripe size defaults (halved). (2.02.29)
1276   Add lists of stacked LV segments using each LV to the internal metadata.
1277   Change vgsplit -l (for unimplemented --list) into --maxlogicalvolumes.
1278   Fix process_all_pvs to detect non-orphans with no MDAs correctly.
1279   Don't use block_on_error with mirror targets version 1.12 and above.
1280   Update vgsplit to accept vgcreate options when new VG is destination.
1281   Update vgsplit to accept existing VG as destination.
1282   lvconvert waits for completion of initial sync by default.
1283   Refactor vgcreate for parameter validation and add tests.
1284   Add new convert_lv field to lvs output.
1285   Print warning when lvm tools are running as non-root.
1286   Add snapshot dmeventd library (enables dmeventd snapshot monitoring).
1287   Prevent pvcreate from overwriting MDA-less PVs belonging to active VGs.
1288   Fix a segfault if using pvs with --all argument. (2.02.29)
1289   Update --uuid argument description in man pages.
1290   Fix vgreduce PV list processing not to process every PV in the VG. (2.02.29)
1291   Extend lvconvert to use polldaemon.
1292   Add support for stacked mirrors.
1293   Major restructuring of pvmove and lvconvert layer manipulation code.
1294   Replace tools/fsadm with scripts/fsadm.sh.
1295   Append fields to report/pvsegs_cols_verbose.
1296   Permit LV segment fields with PV segment reports.
1297   Add seg_start_pe and seg_pe_ranges to reports.
1298
1299 Version 2.02.29 - 5th December 2007
1300 ===================================
1301   Make clvmd backup vg metadata on remote nodes.
1302   Refactor pvmove allocation code.
1303   Decode cluster locking state in log message.
1304   Change file locking state messages from debug to very verbose.
1305   Fix --addtag to drop @ prefix from name.
1306   Stop clvmd going haywire if a pre_function fails.
1307   Convert some vg_reads into vg_lock_and_reads.
1308   Avoid nested vg_reads when processing PVs in VGs and fix associated locking.
1309   Accept sizes with --readahead argument.
1310   Store size arguments as sectors internally.
1311   Attempt to remove incomplete LVs with lvcreate zeroing/activation problems.
1312   Add read_ahead activation code.
1313   Add activation/readahead configuration option and FMT_RESTRICTED_READAHEAD.
1314   Extend readahead arg to accept "auto" and "none".
1315   Add lv_read_ahead and lv_kernel_read_ahead fields to reports and lvdisplay.
1316   Prevent lvconvert -s from using same LV as origin and snapshot.
1317   Fix human-readable output of odd numbers of sectors.
1318   Add pv_mda_free and vg_mda_free fields to reports for raw text format.
1319   Add LVM2 version to 'Generated by' comment in metadata.
1320   Show 'not usable' space when PV is too large for device in pvdisplay.
1321   Ignore and fix up any excessive device size found in metadata.
1322   Fix error message when fixing up PV size in lvm2 metadata (2.02.11).
1323   Fix orphan-related locking in pvdisplay and pvs.
1324   Fix missing VG unlocks in some pvchange error paths.
1325   Add some missing validation of VG names.
1326   Rename validate_vg_name() to validate_new_vg_name().
1327   Change orphan lock to VG_ORPHANS.
1328   Change format1 to use ORPHAN as orphan VG name.
1329   Convert pvchange, pvdisplay, pvscan to use is_orphan()
1330   Add is_orphan_vg() and change all hard-coded checks to use it.
1331   Detect md superblocks version 1.0, 1.1 and 1.2.
1332   Add _alloc_pv() and _free_pv() from _pv_create() code and fix error paths.
1333   Add pv_dev_name() to access PV device name.
1334   Add const attributes to pv accessor functions.
1335   Refactor vg_add_snapshot() and lv_create_empty().
1336   Handle new sysfs subsystem/block/devices directory structure.
1337   Run test with LVM_SYSTEM_DIR pointing to private root and /dev dirs.
1338   Fix a bug in lvm_dump.sh checks for lvm/dmsetup binaries.
1339   Fix underquotations in lvm_dump.sh.
1340   Refactor lvcreate stripe and mirror parameter validation.
1341   Print --help output to stdout, not stderr.
1342   After a cmdline processing error, don't print help text but suggest --help.
1343   Add %PVS extents option to lvresize, lvextend, and lvcreate.
1344   Add 'make check' to run tests in new subdirectory 'test'.
1345   Moved the obsolete test subdirectory to old-tests.
1346   Cope with relative paths in configure --with-dmdir.
1347   Remove no-longer-correct restrictions on PV arg count with stripes/mirrors.
1348   Fix strdup memory leak in str_list_dup().
1349   Link with -lpthread when static SELinux libraries require that.
1350   Detect command line PE values that exceed their 32-bit range.
1351   Include strerror string in dev_open_flags' stat failure message.
1352   Move guts of pvresize into library.
1353   Avoid error when --corelog is provided without --mirrorlog. (2.02.28)
1354   Correct --mirrorlog argument name in man pages (not --log).
1355   Clear MIRROR_NOTSYNCED LV flag when converting from mirror to linear.
1356   Modify lvremove to prompt for removal if LV active on other cluster nodes.
1357   Add '-f' to vgremove to force removal of VG even if LVs exist.
1358
1359 Version 2.02.28 - 24th August 2007
1360 ==================================
1361   Fix clvmd logging so you can get lvm-level debugging out of it.
1362   Introduce VG_GLOBAL lock type for vgscan/pvscan to trigger clvmd -R.
1363   Change locking_flags from int to uint32_t.
1364   Fix clvmd -R, so it fully refreshes the caches.
1365   Change lvconvert_mirrors to use mirror segtype not striped.
1366   Fix lvconvert_mirrors detection of number of existing mirrors.
1367   Clean up numerous compiler warnings that appeared in recent releases.
1368   Remove several unused parameters from _allocate().
1369   Only permit --force, --verbose and --debug arguments to be repeated.
1370   Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1.
1371   Move guts of vgremove and lvremove into library, including yes_no_prompt.
1372   Allow clvmd debug to be turned on in a running daemon using clvmd -d [-C].
1373   Update to use autoconf 2.61, while still supporting 2.57.
1374   Add more cluster info to lvmdump.
1375   Add further const attributes throughout.
1376   Add support for renaming mirrored LVs.
1377   Factor out core of lvrename() to library function.
1378   Add --mirrorlog argument to specify log type for mirrors.
1379   Don't attempt to monitor devices if their creation failed in _lv_activate.
1380   Don't leak a file descriptor in fcntl_lock_file() when fcntl fails.
1381   Replace create_dir with dm_create_dir.
1382   Detect stream write failure reliably with lvm_fclose using dm_fclose.
1383   Fix clvmd if compiled with gulm support. (2.02.26)
1384   Fix lvdisplay man page to say LV size is reported in sectors, not KB.
1385   Add vg_lock_and_read() external library function.
1386   Fix loading of persistent cache if cache_dir is used. (2.02.23)
1387   Reduce _compare_paths lstat error message from log_error to log_very_verbose.
1388   Create util.h with last_path_component replacing strdup + basename.
1389   Use gcc's printf attribute wherever possible.
1390   In _line_append, use "sizeof buf - 1" rather than equivalent "4095".
1391   Introduce is_same_inode macro, now including a comparison of st_dev.
1392   Don't leak a file descriptor in _lock_file() when flock fails.
1393   Add SUN's LDOM virtual block device (vdisk) and ps3disk to filters.
1394   Split metadata-external.h out from metadata.h for the tools to use.
1395
1396 Version 2.02.27 - 17th July 2007
1397 ================================
1398   Fix snapshot cow area deactivation if origin is not active. (2.02.13)
1399   Fix configure libdevmapper.h check when --with-dmdir is used.
1400   Turn _add_pv_to_vg() into external library function add_pv_to_vg().
1401   Add pv_by_path() external library function.
1402   Tidy clvmd-openais of redundant bits, and improve an error report.
1403   Cope with find_seg_by_le() failure in check_lv_segments().
1404   Call dev_iter_destroy() if _process_all_devs() is interrupted by sigint.
1405   Add vg_mda_count and pv_mda_count columns to reports.
1406   Fix dumpconfig to use log_print instead of stdout directly.
1407   Remove unused parameter 'fid' from _add_pv_to_vg.
1408   Add kernel and device-mapper targets versions to lvmdump.
1409   Replace BSD (r)index with C89 str(r)chr.
1410   Handle vgsplit of an entire VG as a vgrename.
1411   Reinitialise internal lvmdiskscan variables when called repeatedly.
1412   Fix missing lvm_shell symbol in lvm2cmd library. (2.02.23)
1413   Add vg_status function and clean up vg->status in tools directory.
1414   Add --ignoremonitoring to disable all dmeventd interaction.
1415   Remove get_ prefix from get_pv_* functions.
1416   clvmd-openais now uses cpg_local_get() to get nodeid, rather than Clm.
1417   Print warnings to stderr instead of stdout.
1418
1419 Version 2.02.26 - 15th June 2007
1420 ================================
1421   Update vgcfgrestore man page.
1422   Allow keyboard interrupt during user prompts when appropriate.
1423   Remove unused clvmd system-lv code.
1424   Replace many physical_volume struct dereferences with new get_pv_* functions.
1425   Suppress a benign compile-time warning.
1426   Convert find_pv_in_vg_by_uuid and pv_create to use PV handles.
1427   Add wrappers to some functions in preparation for external LVM library.
1428   Add -f to vgcfgrestore to list metadata backup files.
1429   Add vg_check_status to consolidate vg status checks and error messages.
1430   Add pvdisplay --maps implementation.
1431   Remove unsupported LVM1 options from vgcfgrestore man page.
1432   Update vgcfgrestore man page to show mandatory VG name.
1433   Update vgrename man page to include UUID and be consistent with lvrename.
1434   Add (experimental) OpenAIS support to clvmd.
1435   Fix deactivation code to follow dependencies and remove symlinks.
1436   Fix and clarify vgsplit error messages.
1437   Fix a segfault in device_is_usable() if a device has no table.
1438   Add some more debug messages to clvmd startup.
1439   Misc clvmd cleanups.
1440
1441 Version 2.02.25 - 27th April 2007
1442 =================================
1443   Fix get_config_uint64() to read a 64-bit value not a 32-bit one.
1444   Add -Wformat-security and change one fprintf() to fputs().
1445   Move regex functions into libdevmapper.
1446   Change some #include lines to search only standard system directories.
1447   Add devices/preferred_names config regex list for displayed device names.
1448   Free a temporary dir string in fcntl_lock_file() after use.
1449   Fix a dm_pool_destroy() in matcher_create().
1450   Introduce goto_bad macro.
1451   Fix warnings on x86_64 involving ptrdiff_t in log_error messages.
1452   Update pvck to include text metadata area and record detection.
1453   Add support functions for token counting in config file extracts.
1454   Update pvck to read labels on disk, with --labelsector parameter.
1455   Add count_chars and count_chars_len functions.
1456   Add /sys/block listings to lvm_dump.sh.
1457   Make lvm_dump.sh list /dev recursively.
1458   Fix thread race in clvmd.
1459   Add scan_sector param to label_read and _find_labeller.
1460   Make clvmd cope with quorum devices.
1461   Add extra internal error checking to clvmd.
1462   Add dev_read_circular.
1463   Add pvck command stub.
1464   Update lists of attribute characters in man pages.
1465   Change cling alloc policy attribute character from 'C' to l'.
1466   Fix creation and conversion of mirrors with tags.
1467   Fix vgsplit for lvm1 format (set and validate VG name in PVs metadata).
1468   Split metadata areas in vgsplit properly.
1469
1470 Version 2.02.24 - 19th March 2007
1471 =================================
1472   Fix processing of exit status in init scripts
1473   Fix vgremove to require at least one vg argument.
1474   Fix reading of striped LVs in LVM1 format.
1475   Flag nolocking as clustered so clvmd startup sees clustered LVs. (2.02.10)
1476   Add a few missing pieces of vgname command line validation.
1477   Support the /dev/mapper prefix on most command lines.
1478
1479 Version 2.02.23 - 8th March 2007
1480 ================================
1481   Fix vgrename active LV check to ignore differing vgids.
1482   Remove no-longer-used uuid_out parameter from activation info functions.
1483   Fix two more segfaults if an empty config file section encountered.
1484   Move .cache file into a new /etc/lvm/cache directory by default.
1485   Add devices/cache_dir & devices/cache_file_prefix, deprecating devices/cache.
1486   Create directory in fcntl_lock_file() if required.
1487   Exclude readline support from lvm.static.
1488   Fix a leak in a reporting error path (2.02.19).
1489
1490 Version 2.02.22 - 13th February 2007
1491 ====================================
1492   Correct -b and -P on a couple of man pages.
1493   Add global/units to example.conf.
1494   Fix loading of segment_libraries.
1495   If a PV reappears after it was removed from its VG, make it an orphan.
1496   Don't update metadata automatically if VGIDs don't match.
1497   Fix some vgreduce --removemissing command line validation.
1498
1499 Version 2.02.21 - 30th January 2007
1500 ===================================
1501   Add warning to lvm2_monitoring_init_rhel4 if attempting to stop monitoring.
1502   Fix vgsplit to handle mirrors.
1503   Reorder fields in reporting field definitions.
1504   Fix vgs to treat args as VGs even when PV fields are displayed.
1505   Fix md signature check to handle both endiannesses.
1506
1507 Version 2.02.20 - 25th January 2007
1508 ===================================
1509   dmeventd mirror sets ignore_suspended_devices and avoids scanning mirrors.
1510   Add devices/ignore_suspended_devices to ignore suspended dm devices.
1511   Add some missing close() and fclose() return code checks.
1512   Fix exit statuses of reporting tools (2.02.19).
1513   Add init script for dmeventd monitoring.
1514   lvm.static no longer interacts with dmeventd unless explicitly asked to.
1515   Add field definitions to report help text.
1516   Remove unnecessary cmd arg from target_*monitor_events().
1517   Add private variable to dmeventd shared library interface.
1518   Long-lived processes write out persistent dev cache in refresh_toolcontext().
1519   Fix refresh_toolcontext() always to wipe persistent device filter cache.
1520   Add is_long_lived to toolcontext.
1521   Add --clustered to man pages.
1522   Streamline dm_report_field_* interface.
1523   Change remaining dmeventd terminology 'register' to 'monitor'.
1524   Update reporting man pages.
1525   No longer necessary to specify alignment type for report fields.
1526
1527 Version 2.02.19 - 17th January 2007
1528 ===================================
1529   Fix a segfault if an empty config file section encountered.
1530   Move basic reporting functions into libdevmapper.
1531   Fix partition table processing after sparc changes (2.02.16).
1532   Fix cmdline PE range processing segfault (2.02.13).
1533   Some libdevmapper-event interface changes.
1534   Report dmeventd mirror monitoring status.
1535   Fix dmeventd mirror status line processing.
1536
1537 Version 2.02.18 - 11th January 2007
1538 ===================================
1539   Revised libdevmapper-event interface for dmeventd.
1540   Remove dmeventd mirror status line word limit.
1541   Use CFLAGS when linking so mixed sparc builds can supply -m64.
1542   Prevent permission changes on active mirrors.
1543   Print warning instead of error message if lvconvert cannot zero volume.
1544   Add snapshot options to lvconvert man page.
1545   dumpconfig accepts a list of configuration variables to display.
1546   Change dumpconfig to use --file to redirect output to a file.
1547   Avoid vgreduce error when mirror code removes the log LV.
1548   Remove 3 redundant AC_MSG_RESULTs from configure.in.
1549   Free memory in _raw_read_mda_header() error paths.
1550   Fix ambiguous vgsplit error message for split LV.
1551   Fix lvextend man page typo.
1552   Add configure --with-dmdir to compile against a device-mapper source tree.
1553   Use no flush suspending for mirrors.
1554   Add dmeventd_mirror register_mutex, tidy initialisation & add memlock.
1555   Fix create mirror with name longer than 22 chars.
1556   Fix some activate.c prototypes when compiled without devmapper.
1557   Fix dmeventd mirror to cope if monitored device disappears.
1558
1559 Version 2.02.17 - 14th December 2006
1560 ====================================
1561   Add missing pvremove error message when device doesn't exist.
1562   When lvconvert allocates a mirror log, respect parallel area constraints.
1563   Use loop to iterate through the now-ordered policy list in _allocate().
1564   Check for failure to allocate just the mirror log.
1565   Introduce calc_area_multiple().
1566   Support mirror log allocation when there is only one PV: area_count now 0.
1567   Fix detection of smallest area in _alloc_parallel_area() for cling policy.
1568   Add manpage entry for clvmd -T
1569   Fix gulm operation of clvmd, including a hang when doing lvchange -aey
1570   Fix hang in clvmd if a pre-command failed.
1571
1572 Version 2.02.16 - 1st December 2006
1573 ===================================
1574   Fix VG clustered read locks to use PR not CR.
1575   Adjust some alignments for ia64/sparc.
1576   Fix mirror segment removal to use temporary error segment.
1577   Always compile debug logging into clvmd.
1578   Add startup timeout to RHEL4 clvmd startup script.
1579   Add -T (startup timeout) switch to clvmd.
1580   Improve lvm_dump.sh robustness.
1581   Update lvm2create_initrd to support gentoo.
1582
1583 Version 2.02.15 - 21st November 2006
1584 ====================================
1585   Fix clvmd_init_rhel4 line truncation (2.02.14).
1586   Install lvmdump by default.
1587   Fix check for snapshot module when activating snapshot.
1588   Fix pvremove error path for case when PV is in use.
1589   Warn if certain duplicate config file entries are seen.
1590   Enhance lvm_dump.sh for sysreport integration and add man page.
1591   Fix --autobackup argument which could never disable backups.
1592   Fix a label_verify error path.
1593
1594 Version 2.02.14 - 10th November 2006
1595 ====================================
1596   Fix adjusted_mirror_region_size() to handle 64-bit size.
1597   Add some missing bounds checks on 32-bit extent counters.
1598   Add Petabyte and Exabyte support.
1599   Fix lvcreate error message when 0 extents requested.
1600   lvremove man page: volumes must be cluster inactive before being removed.
1601   Protect .cache manipulations with fcntl locking.
1602   Change .cache timestamp comparisons to use ctime.
1603   Fix mirror log LV writing to set all bits in whole LV.
1604   Fix clustered VG detection and default runlevels in clvmd_init_rhel4.
1605   Fix high-level free space check for partial allocations.
1606
1607 Version 2.02.13 - 27th October 2006
1608 ===================================
1609   Add couple of missing files to tools/Makefile CLEAN_TARGETS.
1610   When adding snapshot leave cow LV mapped device active after zeroing.
1611   Fix a clvmd debug message.
1612   Add dev_flush() to set_lv().
1613   Add lvchange --resync.
1614   Perform high-level free space check before each allocation attempt.
1615   Don't allow a node to remove an LV that's exclusively active on anther node.
1616   Cope if same PV is included more than once in cmdline PE range list.
1617   Set PV size to current device size if it is found to be zero.
1618   Add segment parameter to target_present functions.
1619
1620 Version 2.02.12 - 16th October 2006
1621 ===================================
1622   Fix pvdisplay to use vg_read() for non-orphans.
1623   Fall back to internal locking if external locking lib is missing or fails.
1624   Retain activation state after changing LV minor number with --force.
1625   Propagate clustered flag in vgsplit and require resizeable flag.
1626
1627 Version 2.02.11 - 12th October 2006
1628 ===================================
1629   Add clvmd function to return the cluster name. not used by LVM yet.
1630   Add cling allocation policy.
1631   Change _check_contiguous() to use _for_each_pv().
1632   Extend _for_each_pv() to allow termination without error.
1633   Abstract _is_contiguous().
1634   Remove duplicated pv arg from _check_contiguous().
1635   Accept regionsize with lvconvert.
1636   Add report columns with underscore before field names ending 'size'.
1637   Correct regionsize default on lvcreate man page (MB).
1638   Fix clvmd bug that could cause it to die when a node with a long name crashed.
1639   Add device size to text metadata.
1640   Fix format_text mda_setup pv->size and pv_setup pe_count calculations.
1641   Fix _for_each_pv() for mirror with core log.
1642   Add lvm_dump.sh script to create a tarball of debugging info from a system.
1643   Capture error messages in clvmd and pass them back to the user.
1644   Remove unused #defines from filter-md.c.
1645   Make clvmd restart init script wait until clvmd has died before starting it.
1646   Add -R to clvmd which tells running clvmds to reload their device cache.
1647   Add LV column to reports listing kernel modules needed for activation.
1648   Show available fields if report given invalid field. (e.g. lvs -o list)
1649   Add timestamp functions with --disable-realtime configure option.
1650   Add %VG, %LV and %FREE suffices to lvcreate/lvresize --extents arg.
1651   Fix two potential NULL pointer derefs in error cases in vg_read().
1652   Separate --enable-cluster from locking lib options in lvmconf.sh.
1653   Add a missing comma in lvcreate man page.
1654
1655 Version 2.02.10 - 19th September 2006
1656 =====================================
1657   Fix lvconvert mirror change case detection logic.
1658   Fix mirror log detachment so it correctly becomes a standalone LV.
1659   Extend _check_contiguous() to detect single-area LVs.
1660   Include mirror log (untested) in _for_each_pv() processing.
1661   Use MIRROR_LOG_SIZE constant.
1662   Remove struct seg_pvs from _for_each_pv() to generalise.
1663   Avoid adding duplicates to list of parallel PVs to avoid.
1664   Fix several incorrect comparisons in parallel area avoidance code.
1665   Fix segment lengths when flattening existing parallel areas.
1666   Log existing parallel areas prior to allocation.
1667   Fix mirror log creation when activation disabled.
1668   Don't attempt automatic recovery without proper locking.
1669   When using local file locking, skip clustered VGs.
1670   Add fallback_to_clustered_locking and fallback_to_local_locking parameters.
1671   lvm.static uses built-in cluster locking instead of external locking.
1672   Don't attempt to load shared libraries if built statically.
1673   Change default locking_lib to liblvm2clusterlock.so.
1674   Add skip_dev_dir() to process command line VGs.
1675   Stop clvmd complaining about nodes that have left the cluster.
1676   Move lvm_snprintf(), split_words() and split_dm_name() into libdevmapper.
1677   Add lvconvert man page.
1678   Add mirror options to man pages.
1679   Prevent mirror renames.
1680   Move CMDLIB code into separate file and record whether static build.
1681
1682 Version 2.02.09 - 17th August 2006
1683 ==================================
1684   Fix PE_ALIGN for pagesize over 32KB.
1685   Separate out LVM1_PE_ALIGN and pe_align().
1686   Add lvm_getpagesize wrapper.
1687   Add --maxphysicalvolumes to vgchange.
1688
1689 Version 2.02.08 - 15th August 2006
1690 ==================================
1691   Add checks for duplicate LV name, lvid and PV id before writing metadata.
1692   Report all sanity check failures, not just the first.
1693   Fix missing lockfs on first snapshot creation.
1694   Add unreliable --trustcache option to reporting commands.
1695   Fix locking for mimage removal.
1696   Fix clvmd_init_rhel4 'status' exit code.
1697
1698 Version 2.02.07 - 17th July 2006
1699 ================================
1700   Fix activation logic in lvchange --persistent.
1701   Don't ignore persistent minor numbers when activating.
1702   Use RTLD_GLOBAL when loading shared libraries.
1703   Add some forgotten memlock checks to _vg_read to protect against full scans.
1704   Add mutex to dmeventd_mirror to avoid concurrent execution.
1705   Fix vgreduce --removemissing to return success if VG is already consistent.
1706   Fix return code if VG specified on command line is not found.
1707   Fix PV tools to include orphaned PVs in default output again.
1708   Fixed unaligned access when using clvm.
1709   Fix an extra dev_close in a label_read error path.
1710   Append patches to commit emails.
1711   Fix target_register_events args.
1712   Prevent snapshots of mirrors.
1713   Add DISTCLEAN_TARGETS to make template for configure.h.
1714   More fixes to error paths.
1715   Fix lvcreate corelog validation.
1716   Add --config for overriding most config file settings from cmdline.
1717   Quote arguments when printing command line.
1718   Remove linefeed from 'initialising logging' message.
1719   Add 'Completed' debug message.
1720   Don't attempt library exit after reloading config files.
1721   Always compile with libdevmapper, even if device-mapper is disabled.
1722
1723 Version 2.02.06 - 12th May 2006
1724 ===============================
1725   Propagate --monitor around cluster.
1726   Add --monitor to vgcreate and lvcreate to control dmeventd registration.
1727   Filter LCK_NONBLOCK in clvmd lock_vg.
1728   Add --nosync to lvcreate with LV flag NOTSYNCED.
1729   Use mirror's uuid for a core log.
1730   Add mirror log fault-handling policy.
1731   Improve mirror warning messages and tidy dmeventd syslog output.
1732   Propagate nosync flag around cluster.
1733   Allow vgreduce to handle mirror log failures.
1734   Add --corelog to lvcreate and lvconvert.
1735   Create a log header for replacement in-sync mirror log.
1736   Use set_lv() and dev_set() to wipe sections of devices.
1737   Add mirror_in_sync() flag to avoid unnecessary resync on activation.
1738   Add mirror_library description to example.conf.
1739   Fix uuid_from_num() buffer overrun.
1740   Make SIZE_SHORT the default for display_size().
1741   Fix some memory leaks in error paths found by coverity.
1742   Use C99 struct initialisers.
1743   Move DEFS into configure.h.
1744   Clean-ups to remove miscellaneous compiler warnings.
1745   Improve stripe size validation.
1746   Increase maximum stripe size limit to physical extent size for lvm2 metadata.
1747   Fix activation code to check for pre-existing mirror logs.
1748   Tighten region size validation.
1749   Ignore empty strings in config files.
1750   Require non-zero regionsize and document parameter on lvcreate man page.
1751   Invalidate cache if composition of VG changed externally.
1752
1753 Version 2.02.05 - 21st April 2006
1754 =================================
1755   Fix vgid string termination in recent cache code.
1756
1757 Version 2.02.04 - 19th April 2006
1758 =================================
1759   Check for libsepol.
1760   Add some cflow & scope support.
1761   Separate out DEFS from CFLAGS.
1762   Remove inlines and use unique function names.
1763
1764 Version 2.02.03 - 14th April 2006
1765 =================================
1766   vgrename accepts vgid and exported VG.
1767   Add --partial to pvs.
1768   When choosing between identically-named VGs, also consider creation_host.
1769   Provide total log suppression with 2.
1770   Fix vgexport/vgimport to set/reset PV exported flag so pv_attr is correct.
1771   Add vgid to struct physical_volume and pass with vg_name to some functions.
1772   If two or more VGs are found with the same name, use one that is not exported.
1773   Whenever vgname is captured, also capture vgid and whether exported.
1774   Remove an incorrect unlock_vg() from process_each_lv().
1775   Update extent size information in vgchange and vgcreate man pages.
1776   Introduce origin_from_cow() and lv_is_visible().
1777   pvremove without -f now fails if there's no PV label.
1778   Support lvconvert -s.
1779   Suppress locking library load failure message if --ignorelockingfailure.
1780   Propagate partial mode around cluster.
1781   Fix archive file expiration.
1782   Fix dmeventd build.
1783   clvmd now uses libcman rather than cman ioctls.
1784   clvmd will allow new cman to shutdown on request.
1785
1786 Version 2.02.02 - 7th February 2006
1787 ===================================
1788   Add %.so: %.a make template rule.
1789   Switchover library building to use LIB_SUFFIX.
1790   Only do lockfs filesystem sync when suspending snapshots.
1791   Always print warning if activation is disabled.
1792   vgreduce removes mirror images.
1793   Add --mirrorsonly to vgreduce.
1794   vgreduce replaces active LVs with error segment before removing them.
1795   Set block_on_error parameter if available.
1796   Add target_version.
1797   Add details to format1 'Invalid LV in extent map' error message.
1798   Fix lvscan snapshot full display.
1799   Bring lvdisplay man page example into line.
1800   Add mirror dmeventd library.
1801   Add some activation logic to remove_mirror_images().
1802   lvconvert can remove specified PVs from a mirror.
1803   lvconvert turns an existing LV into a mirror.
1804   Allow signed mirrors arguments.
1805   Move create_mirror_log() into toollib.
1806   Determine parallel PVs to avoid with ALLOC_NORMAL allocation.
1807   Fix lv_empty.
1808
1809 Version 2.02.01 - 23rd November 2005
1810 ====================================
1811   Fix lvdisplay cmdline to accept snapshots.
1812   Fix open RO->RW promotion.
1813   Fix missing vg_revert in lvcreate error path.
1814
1815 Version 2.02.00 - 10th November 2005
1816 ====================================
1817   Extend allocation areas to avoid overflow with contiguous with other PVs.
1818   Stop lvcreate attempting to wipe zero or error segments.
1819   Added new lvs table attributes.
1820   Separated out activation preload.
1821   Moved activation functions into libdevmapper.
1822   Fixed build_dm_name.
1823   Add return macros.
1824   Added xen xvd devices.
1825   Clear up precommitted metadata better.
1826   A pvresize implementation.
1827   Fix contiguous allocation when there are no preceding segments.
1828   Add mirror_seg pointer to lv_segment struct.
1829   Only keep a device open if it's known to belong to a locked VG.
1830   Fix lvdisplay to show all mirror destinations.
1831   Replacement suspend code using libdevmapper dependency tree.
1832   Add DEFS to make.tmpl.
1833   Use dm_is_dm_major instead of local copy.
1834   Allow mapped devices to be used as PVs.
1835   Move set_selinux_context into libdevmapper.
1836   Fix automatic text metadata buffer expansion (using macro).
1837   Cache formatted text metadata buffer between metadata area writes.
1838   Add pe_start field to pvs.
1839   Add 'LVM-' prefix to uuids.
1840   Split lv_segment_area from lv_segment to permit extension.
1841   Replacement deactivation code using libdevmapper dependency tree.
1842   Simplify dev_manager_info().
1843   Attempt to load missing targets using modprobe.
1844   Add -a to lvscan.
1845   Move mknodes into libdevmapper.
1846   Move bitset, hash, pool and dbg_malloc into libdevmapper.
1847
1848 Version 2.01.15 - 16th October 2005
1849 ===================================
1850   Refuse to run pvcreate/pvremove on devices we can't open exclusively.
1851   Use ORPHAN lock definition throughout.
1852   Validate chunksize in lvcreate.
1853   Reduce chunksize limit to 512k.
1854   Fix chunksize field in reports.
1855   Don't hide snapshots from default 'lvs' output.
1856   Add is_dm_major() for use in duplicate device detection in lvmcache_add().
1857   Really switch device number in lvmcache when it says it is doing so.
1858   Option for bitset memory allocation using malloc as well as pool.
1859   Don't assume exactly two mirrors when parsing mirror status.
1860   Suppress fsync() error message on filesystems that don't support it.
1861   Fix yes_no_prompt() error handling.
1862   Add lvm.conf comment warning against multiple filter lines.
1863   Tidy lvmconf.sh.
1864   Add format1 dev_write debug messages.
1865   Add clustered VG attribute to report.
1866   Move lvconvert parameters into struct lvconvert_params.
1867   Add clustered VG flag to LV lock requests.
1868   Change LV locking macros to take lv instead of lvid.
1869   Prepend 'cluster' activation parameter to mirror log when appropriate.
1870   Pass exclusive flag to lv_activate and on to target activation code.
1871   Prevent snapshot creation in a clustered VG for now.
1872   Factor out adjusted_mirror_region_size() and generate_log_name_format().
1873   Move compose_log_line() into mirror directory.
1874   Factor out _get_library_path().
1875   Don't kill idling clvmd threads.
1876   clvmd no longer takes out locks for non-clustered LVs.
1877   Recognise ATA over Ethernet (aoe) devices.
1878
1879 Version 2.01.14 - 4th August 2005
1880 =================================
1881   Fix lvconvert PV parameter in help string.
1882   Prevent snapshots getting activated in a clustered VG.
1883   Separate out _build_dev_string.
1884   Move zero_lv to toollib.
1885   Fix pool format handler to work with pv segment code.
1886
1887 Version 2.01.13 - 13th July 2005
1888 ================================
1889   Fix pvmove segment splitting.
1890   Abstract vg_validate.
1891   Only make one attempt at contiguous allocation.
1892   Fix lvm1 format metadata read.
1893   Fix lvm1 format non-mirror lvcreate.
1894
1895 Version 2.01.12 - 14th June 2005
1896 ================================
1897   Various allocation-related pvmove fixes.
1898   Log an error if clvmd can't resolve a host name got from CCS.
1899   Fix potential spin loop in clvmd.
1900
1901 Version 2.01.11 - 13th June 2005
1902 ================================
1903   Added lvmconf.sh.
1904   Use matchpathcon mode parameter.
1905   Don't defer closing dead FDs in clvmd.
1906   Remove hard-coded 64k text metadata writing restriction.
1907   Make VG name restrictions consistent.
1908   Introduce lvconvert.  So far only removes mirror images.
1909   Allow mirror images to be resized.
1910   Allow mirror images to have more than one segment.
1911   Centralise restrictions on LV names.
1912   Always insert an intermediate layer for mirrors.
1913   Suppress hidden LVs from reports unless --all is given.
1914   Use square brackets for hidden LVs in reports.
1915   Allow the creation of mirrors with contiguous extents.
1916   Always perform sanity checks against metadata before committing it to disk.
1917   Split lv_extend into two steps: choosing extents + allocation to LV(s).
1918   Add mirror log region size to metadata.
1919   Use list_iterate_items throughout and add list*back macros.
1920   Introduce seg_ macros to access areas.
1921   Add segtype_is_ macros.
1922   Support tiny metadata areas for pool conversions.
1923   Mirror activation handles disk log as well as core.
1924   Activation code recognises mirror log dependency.
1925   Add mirror_log and regionsize fields to report.
1926   Fix non-orphan pvchange -u.
1927   Fix vgmerge to handle duplicate LVIDs.
1928   Move archiver code from tools into library.
1929   vgscan/change/display/vgs automatically create metadata backups if needed.
1930   Merge cloned allocation functions.
1931   Fix contiguous allocation policy with linear.
1932   Cope with missing format1 PVs again.
1933   Remove lists of free PV segments.
1934   Simplify pv_maps code and remove slow bitset algorithm.
1935   Red-Hat-ify the clvmd rhel4 initscript.
1936   %Zu->%zu
1937   Fix loopfiles alias alloc & mem debugging.
1938   Un-inline dbg_strdup.
1939   lv_reduce tidying.
1940   Remove some unnecessary parameters.
1941   Introduce seg_is macros.
1942
1943 Version 2.01.10 - 3rd May 2005
1944 ==============================
1945   Don't create backup and archive dirs till needed.
1946   Reinstate full PV size when removing from VG.
1947   Support loopfiles for testing.
1948   Tidy lv_segment interface.
1949   pv_segment support.
1950   vgchange --physicalextentsize
1951   Internal snapshot restructuring.
1952   Remove unused internal non-persistent snapshot option.
1953   Allow offline extension of snapshot volumes.
1954   Move from 2-step to 3-step on-disk metadata commit.
1955   Scan ramdisks too and allow non-O_DIRECT fallback.
1956   Annotate, tidy and extend list.h.
1957   Alignment tidying.
1958   Make clvmd work around some "bugs" in gulm's node state notifications.
1959   Tidy clvmd's SIGHUP handler
1960
1961 Version 2.01.09 - 4th April 2005
1962 ================================
1963   Add --ignorelockingfailure to vgmknodes.
1964   clvmd: Don't allow user operations to start until the lvm thread is fully up.
1965   clvmd-gulm: set KEEPALIVE on sockets.
1966
1967 Version 2.01.08 - 22nd March 2005
1968 =================================
1969   Add clustered attribute so vgchange can identify clustered VGs w/o locking.
1970   Improve detection of external changes affecting internal cache.
1971   Add 'already in device cache' debug message.
1972   Add -a to pvdisplay -C.
1973   Avoid rmdir opendir error messsages when dir was already removed.
1974   Tighten signal handlers.
1975   Avoid some compiler warnings.
1976   Additional rename failure error message.
1977   read/write may be macros.
1978   clvmd: don't take out lvm thread lock at startup, it only protects jobs list.
1979
1980 Version 2.01.07 - 8th March 2005
1981 ================================
1982   Cope with new devices appearing by rescanning /dev if a uuid can't be found.
1983   Remove DESTDIR from LVM_SHARED_PATH.
1984   clvmd fixes: make FDs close-on-exec
1985                gulm unlocks VG & orphan locks at startup in case they are stale
1986                gulm now unlocks VG & orphan locks if client dies.
1987
1988 Version 2.01.06 - 1st March 2005
1989 ================================
1990   Suppress 'open failed' error messages during scanning.
1991   Option to suppress warnings of file descriptors left open.
1992   Fix default value of metadatacopies in documentation (2->1).
1993   Fix clvmd-gulm locking.
1994   ./configure --enable-debug now enables debugging code in clvmd.
1995   Fix clvmd-gulm node up/down code so it actually works.
1996   clvmd-gulm now releases locks when shut down.
1997
1998 Version 2.01.05 - 18th February 2005
1999 ====================================
2000   Static binary invokes dynamic binary if appropriate.
2001   Make clvmd config check a little more tolerant.
2002   gulm clvmd can now cope with >1 message arriving in a TCP message.
2003
2004 Version 2.01.04 - 9th February 2005
2005 ===================================
2006   Add fixed offset to imported pool minor numbers.
2007   Update binary pathnames in clvmd_init_rhel4.
2008   lvm2cmd.so should skip the check for open fds.
2009   Remove unused -f from pvmove.
2010   Gulm clvmd doesn't report "connection refused" errors.
2011   clvmd does a basic config file sanity check at startup.
2012   Fix potential thread shutdown race in clvmd.
2013
2014 Version 2.01.03 - 1st February 2005
2015 ===================================
2016   More 64-bit display/report fixes.
2017   More informative startup mesg if can't create /etc/lvm.
2018   Fix snapshot device size bug (since 2.01.01).
2019   clvmd announces startup and cluster connection in syslog.
2020   Gulm clvmd doesn't hang trying to talk to a rebooted node.
2021   Gulm clvmd doesn't print cman error on startup.
2022
2023 Version 2.01.02 - 21st January 2005
2024 ===================================
2025   Update clvmd_init_rhel4: use lvm.static and don't load dlm.
2026   Fix some size_t printing.
2027   Fix 64 bit xlate consts.
2028   Split out pool sptype_names to avoid unused const.
2029   Always fail if random id generation fails.
2030   Recognise gnbd devices.
2031   Fix clvmd startup bug introduced in cman/gulm amalgamation.
2032   Improve reporting of node-specific locking errors.
2033
2034 Version 2.01.01 - 19th January 2005
2035 ===================================
2036   Fix clvmd lv_info_by_lvid open_count.
2037   Store snapshot and origin sizes separately.
2038   Update vgcreate man page.
2039
2040 Version 2.01.00 - 17th January 2005
2041 ===================================
2042   Fix vgscan metadata auto-correction.
2043   Only ask libdevmapper for open_count when we need it.
2044   Adjust RHEL4 clvmd init script priority.
2045   Enable building of CMAN & GULM versions of clvmd into a single binary
2046
2047 Version 2.00.33 - 7th January 2005
2048 ==================================
2049   pvcreate wipes first 4 sectors unless given --zero n.
2050   gulm clvmd now uses new ccsd key names.
2051   gulm clvmd now doesn't ignore the first node in cluster.conf
2052   Improve clvmd failure message if it's already running.
2053   Allow user to kill clvmd during initialisation.
2054   Fix off-by-one error in cluster_locking that could cause read hangs.
2055
2056 Version 2.00.32 - 22nd December 2004
2057 ====================================
2058   Drop static/dl restriction for now.
2059   Fix an error fprintf.
2060   Fix vgdisplay -s. Breaks (undocumented) lvs/pvs/vgs -s instead for now.
2061   Fix device reference counting on re-opens.
2062   Ignore sysfs symlinks when DT_UNKNOWN.
2063   Add clvmd init script for RHEL4.
2064   Skip devices that are too small to be PVs.
2065   Fix pvchange -x segfault with lvm2-format orphan.
2066   Cope with empty msdos partition tables.
2067   Add CONTRIBUTORS file.
2068
2069 Version 2.00.31 - 12th December 2004
2070 ====================================
2071   Reopen RO file descriptors RW if necessary.
2072
2073 Version 2.00.30 - 10th December 2004
2074 ====================================
2075   Additional device-handling debug messages.
2076   Additional verbosity level -vvvv includes line numbers and backtraces.
2077   Verbose messages now go to stderr not stdout.
2078   Close any stray file descriptors before starting.
2079   Refine partitionable checks for certain device types.
2080   Allow devices/types to override built-ins.
2081   Fix lvreduce man page .i->.I
2082   Fix vgsplit man page title.
2083   Fix clvmd man makefile.
2084   Extend dev_open logging.
2085   Make clvmd_fix_conf.sh UNDOable.
2086
2087 Version 2.00.29 - 27th November 2004
2088 ====================================
2089   xlate compilation fix.
2090
2091 Version 2.00.28 - 27th November 2004
2092 ====================================
2093   Fix partition table & md signature detection.
2094   Minor configure/makefile tidy.
2095   Export version.h from tools for clvmd.
2096
2097 Version 2.00.27 - 24th November 2004
2098 ====================================
2099   Trap large memory allocation requests.
2100   Fix to partition table detection code.
2101   Improve filter debug mesgs.
2102   Make clvmd_fix_conf.sh UNDOable
2103
2104 Version 2.00.26 - 23rd November 2004
2105 ====================================
2106   Improve pool debugging stats.
2107   Detect partition table signature.
2108   pvcreate wipes md superblocks. (With --uuid or --restorefile it prompts.)
2109   Separate out md superblock detection code.
2110   Prevent snapshot origin resizing.
2111   Improve a vgremove error message.
2112   Update some man pages.
2113   Allow y/n with -ae args (exclusive activation).
2114   Fixes to lvcreate vgname parsing.
2115   Fix dm_name string size calculation.
2116   Improve clvmd error reporting during startup.
2117   Make clvmd cope with large gaps in node numbers IDs.
2118   Make clvmd initialisation cope better with debugging output.
2119   Tidy clvmd socket callbacks so all work happens outside main loop.
2120   clvmd -V now displays lvm version too.
2121   Add optional gulm build for clvmd
2122
2123 Version 2.00.25 - 29th September 2004
2124 =====================================
2125   Fix return code from rm_link for vgmknodes.
2126   Make clvmd LV hash table thread-safe.
2127   Fix clvmd locking so it will lock out multiple users on the same node.
2128   Fix clvmd VG locking to it can cope with multiple VG locks.
2129   Remove spurious trailing dot in lvreduce man page.
2130   Fix vgremove locking.
2131
2132 Version 2.00.24 - 16th September 2004
2133 =====================================
2134   Fix pool_empty so it really does empty the memory pool.
2135   Rename old segtypes files to segtype.
2136   Some fixes to memory debugging code.
2137   Exclude internal commands formats & segtypes from install.
2138
2139 Version 2.00.23 - 15th September 2004
2140 =====================================
2141   Export dm name build & split functions.
2142   Use O_NOATIME on devices if available.
2143   Write log message when each segtype/format gets initialised.
2144   New commands 'segtypes' and 'formats'.
2145   Suppress pvmove abort message in test mode.
2146   Improve pvcreate/remove device not found error message.
2147   Allow pvmove to move data within the same PV.
2148   Describe how pvmove works on man page.
2149   Test for incompatible format/segtype combinations in lv_extend.
2150   Fix lvchange example on man page.
2151
2152 Version 2.00.22 - 3rd September 2004
2153 ====================================
2154   Fix /dev/vgname perms.
2155   Restructure xlate.h.
2156   Add clvmd man page.
2157
2158 Version 2.00.21 - 19th August 2004
2159 ==================================
2160   Update cnxman-socket.h from cman.
2161   Recognise iseries/vd devices.
2162   Use 'make install_cluster' to install cluster extensions only.
2163   Cope with DT_UNKNOWN in sysfs.
2164   Fix extents_moved metadata size comment.
2165   Remove duplicate line in pvremove help text.
2166   Support variable mirror region size.
2167   Support PE ranges in pvmove source PV.
2168   Fixes to as-yet-unused LV segment splitting code.
2169   Change alloc_areas to pe_ranges and allow suppression of availability checks.
2170   Add dev_size column to pvs.
2171   Add report columns for in-kernel device number.
2172
2173 Version 2.00.20 - 3 July 2004
2174 =============================
2175   More autoconf fixes.
2176   Fix device number handling for 2.6 kernels.
2177
2178 Version 2.00.19 - 29 June 2004
2179 ==============================
2180   Reduce severity of setlocale failure message.
2181   Recognise argv[0] "initrd-lvm" (pld-linux).
2182   Make -O2 configurable.
2183   Added --disable-selinux to configure script.
2184   LD_FLAGS->LDFLAGS & LD_DEPS->LDDEPS in configure script.
2185   Add init_debug to clvmd.
2186
2187 Version 2.00.18 - 24 June 2004
2188 ==============================
2189   Fix vgchange activation.
2190   Add cluster support.
2191
2192 Version 2.00.17 - 20 June 2004
2193 ==============================
2194   configure --enable-fsadm to try out fsadm.  fsadm is not tested yet.
2195   Display all filtered devices, not just PVs, with pvs -a.
2196   Fix sync_dir() when no / in filename
2197   vgcfgbackup -f accepts template with %s for VG name.
2198   Extend hash functions to handle non-null-terminated data.
2199   Add local activation support.
2200   Tidy relative paths in makefile includes.
2201   fsadm support for fsck and resizing - needs testing.
2202   Add read-only GFS pool support.
2203   Add lvm2create_initrd script from http://poochiereds.net/svn/lvm2/
2204   Fix rounding of large diplayed sizes.
2205   Suppress decimal point when using units of sectors/bytes.
2206   Additional kernel target checks before pvmove & snapshot creation.
2207   Add i2o_block.
2208
2209 Version 2.00.16 - 24 May 2004
2210 =============================
2211   Set area_count within alloc_lv_segment.
2212   Remove error labels from lvresize.
2213   Fix a pvs error path.
2214   xxchange -ae for exclusive activation.
2215   Don't return non-zero status if there aren't any volume groups.
2216   Add --alloc argument to tools.
2217   Rename allocation policies to contiguous, normal, anywhere, inherit.
2218   nextfree becomes normal; anywhere isn't implemented yet.
2219   LV inherits allocation policy from VG. Defaults: LV - inherit; VG - normal
2220   Additional status character added to vgs to indicate allocation policy.
2221   Add reset_fn to external_locking.
2222   Ensure presence of virtual targets before attempting activating.
2223   Attempt to fix resizing of snapshot origins.
2224   Restructure lvresize, bringing it closer to lvcreate.
2225   A quick sanity check on vg_disk struct when read in.  More checks needed.
2226   Only include visible LVs in active/open counts.
2227   Add virtual segment types, zero and error.  A large sparse device can be
2228 constructed as a writeable snapshot of a large zero segment.
2229   Add --type to lvcreate/resize.
2230   Push lv_create & alloc policy up to tool level.
2231   Fix pvdisplay return code.
2232   Detect invalid LV names in arg lists.
2233   Reporting uses line-at-a-time output.
2234   lvm2 format sets unlimited_vols format flag.
2235   Internal-only metadata flag support.
2236   Basic checking for presence of device-mapper targets.
2237   Separate out polldaemon.
2238   Revise internal locking semantics.
2239   Move find_pv_by_name to library.
2240   Rename move->copy.
2241   Add devices to segments report.
2242   Begin separating out segment code. There's a lot of change here.
2243   Compress any (obsolete) long LVM1 pvids encountered.
2244   Support for tagged config files.
2245   Don't abort operations if selinux present but disabled.
2246   Fix typo in configure which left HAVE_LIBDL unset.
2247
2248 Version 2.00.15 - 19 Apr 2004
2249 =============================
2250   configure --with-owner= --with-group= to avoid -o and -g args to 'install'
2251
2252 Version 2.00.14 - 16 Apr 2004
2253 =============================
2254   Use 64-bit file functions by default.
2255
2256 Version 2.00.13 - 16 Apr 2004
2257 =============================
2258   Set devices/md_component_detection = 1 to ignore devices containing md
2259   superblocks. [Luca Berra]
2260   Ignore error setting selinux file context if fs doesn't support it.
2261
2262 Version 2.00.12 - 14 Apr 2004
2263 =============================
2264   Install a default lvm.conf into /etc/lvm if there isn't one already.
2265   Allow different installation dir for lvm.static (configure --staticdir=)
2266   Fix inverted selinux error check.
2267   Recognise power2 in /proc/devices.
2268   Fix counting in lvs_in_vg_opened. [It ignored devices open more than once.]
2269
2270 Version 2.00.11 - 8 Apr 2004
2271 ============================
2272   Set fallback_to_lvm1 in lvm.conf (or configure --enable-lvm1_fallback)
2273   to run lvm1 binaries if running a 2.4 kernel without device-mapper.
2274
2275 Version 2.00.10 - 7 Apr 2004
2276 ============================
2277   More fixes for static build.
2278   Add basic selinux support.
2279   Fix sysfs detection.
2280
2281 Version 2.00.09 - 31 Mar 2004
2282 =============================
2283   Update copyright notices for Red Hat.
2284   Fix vgmknodes to remove dud /dev/mapper entries. (libdevmapper update reqd).
2285   Add LVM1-style colon output to vgdisplay.
2286   lvchange --refresh to reload active LVs.
2287   Add string display to memory leak dump.
2288   Add locking flags & memlock option.
2289   Add list_versions to library.
2290   Ignore open hidden LVs when checking if deactivation is OK.
2291   Suppress move percentage when device inactive.
2292   Add lv_info_by_lvid.
2293   Various tidy-ups to the build process.
2294   Rebaseline internal verbose level.
2295   Add --nolocking option for read operations if locking is failing.
2296   Add option to compile into a library.
2297   When compiled without libdevmapper, only print warning message once.
2298   Fix lvreduce PV extent calculations.
2299   Fix DESTDIR to work with configure path overrides.
2300   Always use / as config file separator & rename internal config file variables.
2301   Add support for tagging PV/VG/LVs and hosts.
2302   Fix rare bug in recognition of long cmdline argument forms.
2303   Add basic internationalisation infrastructure.
2304   Don't recurse symlinked dirs such as /dev/fd on 2.6 kernels.
2305   Update autoconf files.
2306   Add sysfs block device filtering for 2.6 kernels.
2307   Update refs for move to sources.redhat.com.
2308
2309 Friday 14th November 2003
2310 =========================
2311 Some bug fixes & minor enhancements, including:
2312   Backwards compatibility with LVM1 metadata improved.
2313   Missing man pages written.
2314   Tool error codes made more consistent.
2315   vgmknodes written.
2316   O_DIRECT can be turned off if it doesn't work in your kernel.
2317   dumpconfig to display the active configuration file
2318
2319 You need to update libdevmapper before using 'vgmknodes' or 'vgscan --mknodes'.
2320 If your root filesystem is on an LV, you should run one of those two
2321 commands to fix up the special files in /dev in your real root filesystem
2322 after finishing with your initrd.  Also, remember you can use
2323 'vgchange --ignorelockingfailure' on your initrd if the tool fails because
2324 it can't write a lock file to a read-only filesystem.
2325
2326 Wednesday 30th April 2003
2327 =========================
2328 A pvmove implementation is now available for the new metadata format.
2329
2330 When running a command that allocates space (e.g. lvcreate), you can now
2331 restrict not only which disk(s) may be used but also the Physical Extents
2332 on those disks.  e.g. lvcreate -L 10 vg1 /dev/hda6:1000-2000:3000-4000
2333
2334
2335 Monday 18th November 2002
2336 ========================
2337
2338 The new format of LVM metadata is ready for you to test!
2339   We expect it to be more efficient and more robust than the original format.
2340   It's more compact and supports transactional changes and replication.
2341   Should things go wrong on a system, it's human-readable (and editable).
2342
2343 Please report any problems you find to the mailing list,
2344 linux-lvm@sistina.com.  The software has NOT yet been thoroughly
2345 tested and so quite possibly there'll still be some bugs in it.
2346 Be aware of the disclaimer in the COPYING file.
2347
2348 While testing, we recommend turning logging on in the configuration file
2349 to provide us with diagnostic information:
2350   log {
2351         file="/tmp/lvm2.log"
2352         level=7
2353         activation=1
2354   }
2355
2356 You should schedule regular backups of your configuration file and
2357 metadata backups and archives (normally kept under /etc/lvm).
2358
2359 Please read docs/example.conf and "man lvm.conf" to find out more about
2360 the configuration file.
2361
2362 To convert an existing volume group called vg1 to the new format using
2363 the default settings, use "vgconvert -M2 vg1".  See "man vgconvert".
2364
2365 -M (or --metadatatype in its long form) is a new flag to indicate which
2366 format of metadata the command should use for anything it creates.
2367 Currently, the valid types are "lvm1" and "lvm2" and they can be
2368 abbreviated to "1" and "2" respectively.  The default value for this
2369 flag can be changed in the global section in the config file.
2370
2371 Backwards-compatible support for the original LVM1 metadata format is
2372 maintained, but it can be moved into a shared library or removed
2373 completely with configure's --with-lvm1 option.
2374
2375 Under LVM2, the basic unit of metadata is the volume group.  Different
2376 volume groups can use different formats of metadata - vg1 could use
2377 the original LVM1 format while vg2 used the new format - but you can't
2378 mix formats within a volume group.  So to add a PV to an LVM2-format
2379 volume group you must run "pvcreate -M2" on it, followed by "vgextend".
2380
2381 With LVM2-format metadata, lvextend will let you specify striping
2382 parameters.  So an LV could consist of two or more "segments" - the
2383 first segment could have 3 stripes while the second segment has just 2.
2384
2385 LVM2 maintains a backup of the current metadata for each volume group
2386 in /etc/lvm/backup, and puts copies of previous versions in
2387 /etc/lvm/archive.  "vgcfgbackup" and "vgcfgrestore" can be used to
2388 create and restore from these files.  If you fully understand what
2389 you're doing, metadata can be changed by editing a copy of a current
2390 backup file and using vgcfgrestore to reload it.
2391
2392 Please read the pvcreate man page for more information on the new
2393 format for metadata.
2394
2395 All tools that can change things have a --test flag which can be used
2396 to check the effect  of a set of cmdline args without really making the
2397 changes.
2398
2399
2400 What's not finished?
2401 ====================
2402 The internal cache.  If you turn on debugging output you'll see lots of
2403 repeated messages, many of which will eventually get optimised out.
2404
2405 --test sometimes causes a command to fail (e.g. vgconvert --test) even
2406 though the real command would work: again, fixing this is waiting for
2407 the work on the cache.
2408
2409 Several of the tools do not yet contain the logic to handle full
2410 recovery: combinations of pvcreate and vgcfgrestore may sometimes be
2411 needed to restore metadata if a tool gets interrupted or crashes or
2412 finds something unexpected.  This applies particularly to tools that
2413 work on more than one volume group at once (e.g. vgsplit).
2414
2415 Display output.  Some metadata information cannot yet be displayed.
2416
2417 Recovery tools to salvage "lost" metadata directly from the disks:
2418 but we hope the new format will mean such tools are hardly ever needed!