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