-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWHATS_NEW
2327 lines (2186 loc) · 118 KB
/
WHATS_NEW
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 2.02.75 - 25th October 2010
===================================
Annotate more variables and parameters as const.
Fix missing variable initialization in cluster_send() function from cmirrord.
Fix pointer for VG name in _pv_resize_single error code path.
Fix warning for changed alignment requirements for dmeventd read/write func.
Add global/metadata_read_only to use unrepaired metadata in read-only cmds.
Don't take write lock in vgchange --refresh, --poll or --monitor.
Skip dm devices in scan if they contain only error targets or are empty.
Fix strict-aliasing compile warning in partition table scanning.
Fix pthread mutex usage deadlock in clvmd.
Automatically extend snapshots with dmeventd according to policy in lvm.conf.
Add activation/snapshot_autoextend_threshold/percent to lvm.conf.
Fix liblvm2cmd link order to support --as-needed.
Remove dependency on libm by replacing floor() by an integer-based algorithm.
Fix hang when repairing a mirrored-log that had both devs fail.
Convey need for snapshot-merge target in lvconvert error message and man page.
Add devices/disable_after_error_count config to limit access to failing devs.
Give correct error message when creating a too-small snapshot.
Implement vgextend --restoremissing to reinstate missing devs that return.
Make lvconvert respect --yes and --force when converting an inactive log.
Refactor and add 'get' functions for lv properties/fields.
Update script for fsadm testing.
Better support of noninteractive shell execution of fsadm.
Fix usage of --yes flag for ReiserFS resize in fsadm.
Fix detection of mounted filesystems for fsadm when udev is used.
Fix assignment of default value to LVM variable in fsadm.
Fix support for --yes flag for fsadm.
Do not execute lvresize from fsadm --dry-run.
Fix fsadm return error code from user's break action.
Allow CC to be overridden at build time (for 'scan-build make').
Rename 'flags' to 'status' in struct metadata_area.
Avoid segfault by limiting partial mode for lvm1 metadata. (2.02.74)
Use dm_zalloc and dm_pool_zalloc throughout.
Add pv_get_property and create generic internal _get_property function.
Add 'get' functions for pv and vg properties/fields.
Make generic GET_*_PROPERTY_FN macros with secondary macro for vg, pv & lv.
Add tags_format_and_copy() common function and call from _tags_disp.
Add id_format_and_copy() common function and call from _uuid_disp.
Refactor report.c '*_disp' functions to call supporting functions.
Move parts of metadata*.[ch] into new {pv|vg|lv}.[ch] files.
Fix vg_read memory leak with directory-based metadata.
Fix memory leak of config_tree in reinitialization code path.
Fix pool destruction order in dmeventd_lvm2_exit() to avoid leak debug mesg.
Read whole /proc/self/maps file before working with maps entries.
Speed up unquoting of quoted double quotes and backslashes.
Speed up CRC32 calculations by using a larger lookup table.
Version 2.02.74 - 24th September 2010
=====================================
Allow : and @ to be escaped with \ in device names of PVs.
Replace alloca with dm_malloc in _aligned_io to avoid stack corruption.
Fix partial mode operations for lvm1 metadata format.
Track recursive filter iteration to avoid refreshing while in use. (2.02.56)
Revert to old glibc vsnprintf behaviour in emit_to_buffer() to catch overflow.
Allocate buffer for metadata tags dynamically to remove 4k limit.
Add random suffix to archive file names to prevent races when being created.
Reinitialize archive and backup handling on toolcontext refresh.
Make poll_mirror_progress report PROGRESS_CHECK_FAILED if LV is not a mirror.
Like mirrors, don't scan origins if ignore_suspended_devices() is set.
Fix return type qualifier to avoid compiler warning. (2.02.69)
Automatically generate LSB Requires-Start for clvmd init script.
Fix return code of pvmove --abort PV.
Fix pvmove --abort to remove even for empty pvmove LV.
Add configure --with-default-data-alignment.
Update heuristic used for default and detected data alignment.
Add "devices/default_data_alignment" to lvm.conf.
Add implementation for simple numeric 'get' property functions.
Define GET_NUM_PROPERTY_FN macro to simplify numeric property 'get' function
Add properties.[ch] to lib/report using columns.h.
Add macro definitions to report infrastructure for character array length.
Remove explicit double quotes from columns.h 'id' entries.
Add 'flags' field to columns.h and define FIELD_MODIFIABLE.
Add vg_mda_size and vg_mda_free functions.
Simplify MD/swap signature detection in pvcreate and allow aborting.
Allow --yes to be used without --force mode.
Fix file descriptor leak in swap signature detection error path.
Detect and allow abort in pvcreate if LUKS signature is detected.
Always mask lock flags correctly when checking for LCK_WRITE.
Version 2.02.73 - 18th August 2010
==================================
Fix potential for corruption during cluster mirror device failure.
Use 'SINGLENODE' instead of 'dead' in clvmd singlenode messages.
Ignore snapshots when performing mirror recovery beneath an origin.
Pass LCK_ORIGIN_ONLY flag around cluster.
Add suspend_lv_origin and resume_lv_origin using LCK_ORIGIN_ONLY.
Allow internal suspend and resume of origin without its snapshots.
Fix dev_manager_transient to access -real device not snapshot-origin.
Monitor origin -real device below snapshot instead of overlay device.
Don't really change monitoring status when in test mode.
Fix some exit statuses when starting/stopping monitoring fails.
Enable snapshot monitoring by default when dmeventd is enabled.
Move cloned libdevmapper-event client code from segments into lib/activate.
Fix 'lvconvert --splitmirrors' in cluster operation.
Fix clvmd init script exit code to return 4 when executed as non-root user.
Change default alignment of pe_start to 1MB.
Add --norestorefile option to pvcreate.
Require --restorefile when using pvcreate --uuid.
Recognise and give preference to md device partitions (blkext major).
Never scan internal LVM devices.
Don't ignore user-specified PVs in split-mirror operations. (2.02.71)
Fix data corruption bug in cluster mirrors.
Require logical volume(s) to be explicitly named for lvconvert --merge.
Avoid changing aligned pe_start as a side-effect of very verbose logging.
Use built-in rule for device aliases: block/ < dm- < disk/ < mapper/ < other.
Fix const warning in dev_manager_info() and _dev_manager_lv_rmnodes().
Fix const warning in archive_file structure from archive.c.
Clean generated files .exported_symbols_generated, example.conf for distclean.
Handle failure of all mirrored log devices and all but one mirror leg.
Disallow 'mirrored' log type for cluster mirrors.
Do not use VPATH in include/Makefile.
Fix exported_symbols generation to use standard compiler arguments.
Use #include <> not "" in lvm2app.h which gets installed on the system.
Make lib and liblvm.device-mapper wait for include file generation.
Fix configure to supply DEFAULT_RUN_DIR to Makefiles.
Fix allocation of wrong number of mirror logs with 'remove' fault policy.
Version 2.02.72 - 28th July 2010 [CVE-2010-2526]
=================================================
Change clvmd to communicate with lvm2 via a socket in /var/run/lvm.
Return controlled error if clvmd is run by non-root user.
Add configure --default-run-dir for /var/run/lvm.
Never use clvmd singlenode unless explicitly requested with -Isinglenode.
Version 2.02.71 - 28th July 2010
================================
Document LVM fault handling in doc/lvm_fault_handling.txt.
Make vgck warn about missing PVs.
Clarify help text for vg_mda_count.
Check if cluster log daemon is running before allowing cmirror create.
Add unit-tests dir.
Add configure --enable-testing and reports and report-generators dirs.
Correct LV list order used by lvconvert when splitting a mirror.
Check if LV with specified name already exists when splitting a mirror.
Fix suspend/resume logic for LVs resulting from splitting a mirror.
Update pvcreate, {pv|vg}change, and lvm.conf man pages about metadataignore.
Switch cmirrord and clvmd to use dm_create_lockfile.
Allow clvmd pidfile to be configurable.
Update comments about memory handling in lvm2app.h.
Add more verbose messages while checking volume_list and hosttags settings.
Add log_error when strdup fails in {vg|lv}_change_tag().
Remove unnecessary includes in liblvm files.
Use __attribute__ consistently throughout.
Fix redundant declarations and always compile with -Wredundant-decls.
Fix possible hang when all mirror images of a mirrored log fail.
Pass metadataignore to pv_create, pv_setup, _mda_setup, and add_mda.
Init mda->list in mda_copy.
Do not log backtrace in valid _lv_resume() code path.
Cleanup help strings in configure.in.
Prompt if metadataignore with vgextend or pvchange would adjust vg_mda_copies.
Adjust vg_mda_copies if metadataignore given with vgextend or pvchange.
Adjust auto-metadata repair and caching logic to try to cope with empty mdas.
Version 2.02.70 - 6th July 2010
===============================
Remove log directly if all mirror images of a mirrored log fail.
Randomly select which mdas to use or ignore.
Add some missing standard configure.in checks.
Add printf format attributes to yes_no_prompt and fix a caller.
Always pass unsuspended dm devices through persistent filter to other filters.
Move test for suspended dm devices ahead of other filters.
Fix another segfault in clvmd -R if no response from daemon. (2.02.68)
Remove superfluous suspended device counter from clvmd.
Fix lvm shell crash when input is entirely whitespace.
Update partial mode warning message.
Preserve memlock balance in clvmd when activation triggers a resume.
Restore the removemissing behaviour of lvconvert --repair --use-policies.
Version 2.02.69 - 30th June 2010
================================
Fix vgremove to allow removal of VG with missing PVs. (2.02.52)
Add metadata/vgmetadatacopies to lvm.conf.
Add --metadataignore to pvcreate and vgextend.
Add vg_mda_copies, pv_mda_used_count and vg_mda_used_count to reports.
Describe --vgmetadatacopies in lvm.conf and other man pages.
Add --[vg]metadatacopies to select number of mdas to use in a VG.
Make the metadata ignore bit control read/write metadata areas in a PV.
Add pvchange --metadataignore to set or clear a metadata ignore bit.
Refactor metadata code to prepare for --metadataignore / --vgmetadatacopies.
Ensure region_size of mirrored log does not exceed its full size.
Generate liblvm2app exported symbols from header file.
Preload libc locale messages to prevent reading it in memory locked state.
Fix handling of simultaneous mirror image and mirrored log image failure.
Version 2.02.68 - 23rd June 2010
================================
Fix clvmd initscript status to print only active clustered LVs.
Add lv_path to reports to offer full /dev pathname.
Fix typo in warning message about missing device with allocated data areas.
Add device name and offset to raw_read_mda_header error messages.
Honour log argument when down-converting stacked mirror.
Sleep to workaround clvmd -S race: socket closed early and server drops cmd.
Use early udev synchronisation and update of dev nodes for clustered mirrors.
Remove incorrect inclusion of kdev_t.h from cmirrord/functions.h.
Add man pages for lvmconf and non-existent lvmsadc and lvmsar tools.
Exit successfully when using -o help (but not -o +help) with LVM reports.
Do not use internal DLM lock definitions in generic LVM2 clvmd code.
Add --force, --nofsck and --resizefs to lvresize/extend/reduce man pages.
Fix lvm2cmd example in documentation.
Allow use of lvm2app and lvm2cmd headers in C++ code.
Remove unused #includes from clvmd files and introduce clvmd-common.h.
Move common inclusions to clvmd-common.h.
Use #include "" for libdevmapper.h and configure.h throughout tree.
Fix LVM_PATH expansion when exec_prefix=NONE. (2.02.67)
Fix segfault in clvmd -R if no response from daemon received.
Version 2.02.67 - 4th June 2010
===============================
Handle failed restart of clvmd using -S switch properly.
Fix clvmd initscript restart command to start clvmd if not yet running.
Use built-in absolute paths in clvmd (clvmd restart and PV and LV queries).
Require partial option in lvchange --refresh for partial LVs.
Do not fail lvm_init() if init_logging() or _init_rand() generates an errno.
Don't merge unchanged persistent cache file before dumping if tool scanned.
Fix incorrect memory pool deallocation while using vg_read for files.
Add --type parameter description to the lvcreate man page.
Replace strncmp kernel version number checks with proper ones.
Avoid selecting names under /dev/block if there is an alternative.
Update clustered log kernel module name to log-userspace for 2.6.31 onwards.
Add replicators' LVs to dtree for activation.
Supress activation message if there is a missing replicator VG.
Fix scripts/relpath.awk to work in mawk
Extend lock_vol to check for missing replicator VGs first.
Update _process_one_vg and process_each_lv_in_vg to populate cmd_vg.
Add cmd_vg structure and associated functions for replicator.
Extend _lv_each_dependency() to handle replicator dependencies.
Add check_replicator_segment() to catch internal replicator errors.
Initial support for replicator metadata.
Extend process_each_lv_in_vg() to provide list of failed lvnames.
Consistently return ECMD_FAILED if process_each_*lv() is interrupted.
Version 2.02.66 - 20th May 2010
===============================
If unable to obtain snapshot percentage leave value blank on reports.
Add install_system_dirs and install_initscripts makefile targets.
Add configure options for system and locking directories.
Generate example.conf so default lvm.conf contents can be configured.
Install lvmconf script by default.
Remove unnecessary versioned dmeventd plugin symlinks.
Add tests for lvm_vgname_from_{pvid|device}.
Add lvm2app interfaces to lookup a vgname from a pvid and pvname.
Update pvchange to always obtain a vg handle for each pv to process.
Add find_vgname_from_{pvname|pvid} functions.
Add pvid_from_devname and lvmcache_vgname_from_pvid lvmcache functions.
Validate orphan and VG_GLOBAL lock order too.
Accept orphan VG names as parameters to lock_vol() and related functions.
Use is_orphan_vg in place of hard-coded prefix tests and add is_global_vg.
Version 2.02.65 - 17th May 2010
===============================
Fix clvmd init script never to deactivate non-clustered volume groups.
Disallow vgchange --clustered if there are active mirrors or snapshots.
Introduce lv_is_mirrored.
Use /bin/bash for scripts with bashisms.
Skip internal lvm devices in scan if ignore_suspended_devices is set.
Do not merge old device cache after we run full scan. (2.02.56)
Add pkgconfigdir Makefile variable for make install override.
Configure pkgconfig udev and selinux dependencies.
Switch Libs.private to Requires.private in devmapper.pc and lvm2app.pc.
Use pkgconfig Requires.private for devmapper-event.pc.
Add libdevmapper to linked libdevmapper-event.so.
Link liblvm2cmd.so with libdevmapper-event and libdevmapper.
Fix truncated total size displayed by pvscan.
Add new --sysinit compound option to vgchange and lvchange.
Drop duplicate errors for read failures and missing devices to verbose level.
Use $(libdir)/lvm2 with make install_lvm2_plugin.
Use $(libdir)/device-mapper with make install_dm_plugin.
Add dm_list_splice() function to join two lists together.
Version 2.02.64 - 30th April 2010
=================================
Avoid pointless initialisation when the 'version' command is run directly.
Fix memory leak for invalid regex pattern input.
Display invalid regex pattern for filter configuration in case of error.
Remove no-longer-used arg_ptr_value.
Fix -M and --type to use strings, not pointers that change on config refresh.
Fix lvconvert error message when existing mirrored LV is not found.
Set appropriate udev flags for reserved LVs.
Disallow the direct removal of a merging snapshot.
Don't preload the origin when removing a snapshot whose merge is pending.
Disallow the addition of mirror images while a conversion is happening.
Disallow primary mirror image removal when mirror is not in-sync.
Remove obsolete --name parameter from vgcfgrestore.
Add -S command to clvmd to restart the daemon preserving exclusive locks.
Increment lvm2app version from 1 to 2 (memory allocation changes).
Change lvm2app memory alloc/free for pv/vg/lv properties.
Change daemon lock filename from lvm2_monitor to lvm2-monitor for consistency.
Install symbolic .so links with relative paths between usrlibdir and libdir.
Add awk script relpath.awk to calculate paths for relative symlinks.
Use @AWK@ in makefiles.
Fix double DESTDIR usage for infodir and mandir.
Version 2.02.63 - 14th April 2010
=================================
Rename lvm_dump.sh to lvmdump.sh.
Allow incomplete mirror restore in lvconvert --repair upon insufficient space.
Do not reset position in metadata ring buffer on vgrename and vgcfgrestore.
Allow VGs with active LVs to be renamed.
Use UUIDs instead of names while processing event handlers.
Only pass visible LVs to tools in cmdline VG name/tag expansions without -a.
Use typedefs for toollib process_each functions.
Use C locales and use_mlockall for clvmd.
Refactor code related to vg->pvs list and add pv->vg link.
Mask LCK_HOLD flag in cluster VG locks for backwards compatibility.
Add activation/polling_interval to lvm.conf as --interval default.
Don't ignore error if resuming any LV fails in resume_lvs.
Skip closing persistent filter cache file if open failed.
Install .a and .so links into $(usrlibdir).
Add --enable-write_install options to install user-writable files.
Use INSTALL_PROGRAM/DATA/WDATA target.
Switch from using VPATH to vpath in Makefiles.
Permit mimage LVs to be striped in lvcreate, lvresize and lvconvert.
Fix pvmove allocation to take existing parallel stripes into account.
Add pvmove_source_seg to struct lv_segment.
Fix incorrect removal of symlinks after LV deactivation fails.
Fix is_partitioned_dev not to attempt to reopen device.
Fix another thread race in clvmd.
Refactor management of vg->pvs list.
Fix lcov rules and generate better coverage report.
Improve vg_validate to detect some loops in lists.
Change most remaining log_error WARNING messages to log_warn.
Always use blocking lock for VGs and orphan locks.
Allocate all memory for segments from private VG mempool.
Return newly allocated PV segment after segment split.
Optimise searching PV segments for seeking the most recently-added.
Remove vg_validate call when parsing cached metadata.
Use hash table of LVs to speed up parsing of text metadata with many LVs.
Fix two vg_validate messages, adding whitespace and parentheses.
When dmeventd is not forking because of -d flag, don't kill parent process.
Fix 'make install' when $(builddir) is different from $(srcdir).
Fix dso resource leak in error path of dmeventd.
Use C locales and use_mlockall for dmeventd.
Fix --alloc contiguous policy only to allocate one set of parallel areas.
Do not allow {vg|lv}change --ignoremonitoring if on clustered VG.
Improved dependency tracking for dmeventd and liblvm2cmd sources.
Improved Makefile rules for distclean and cflow targets.
Add ability to create mirrored logs for mirror LVs.
Fix clvmd cluster propagation of dmeventd monitoring mode.
Allow ALLOC_ANYWHERE to split contiguous areas.
Use INTERNAL_ERROR for internal errors throughout tree.
Add some assertions to allocation code.
Introduce pv_area_used into allocation algorithm and add debug messages.
Add activation/monitoring to lvm.conf.
Add --monitor and --ignoremonitoring to lvcreate.
Allow dynamic extension of array of areas selected as allocation candidates.
Export and use only valid cookie value in test suite.
Remove const modifier for struct volume_group* from process_each_lv_in_vg().
Don't allow resizing of internal logical volumes.
Fix libdevmapper-event pkgconfig version string to match libdevmapper.
Avoid scanning all pvs in the system if operating on a device with mdas.
Add configure --with-clvmd=singlenode to use clvmd w/o cluster infrastructure.
Get stacktrace if testsuite test drops core and lvm was built with debugging.
Disable long living process flag in lvm2app.
Fix pvcreate device md filter check.
Suppress repeated errors about the same missing PV uuids.
Bypass full device scans when using internally-cached VG metadata.
Only do one full device scan during each read of text format metadata.
Remove unnecessary full_scan parameter from get_vgids and get_vgnames calls.
Look up missing PVs by uuid not dev_name in _pvs_single to avoid invalid stat.
Make find_pv_in_vg_by_uuid() return same type as related functions.
Introduce is_missing_pv().
Fix clvmd Makefile to not overwrite LIBS from template definition.
Version 2.02.62 - 9th March 2010
================================
Add use_mlockall and mlock_filter to activation section of lvm.conf.
Add default alternative to mlockall using mlock to reduce pinned memory size.
Remove -rdynamic from static builds.
Update checks for pthread, readline & selinux libs and link only when needed.
Introduce makefile vars UDEV_LIBS, DL_LIBS, SELINUX_LIBS, STATIC_LIBS.
Introduce makefile vars LVMINTERNAL_LIBS, READLINE_LIBS, PTHREAD_LIBS.
Toggle configure help to print --disable-fsadm.
Use $() instead of ${} consistently for all Makefile variables.
Replace CFLOW_CMD only in make.tmpl and use it as variable elsewhere.
Use $(top_builddir) for inclusion of make.tmpl in Makefiles.
Fix autoconf warning about ignored datarootdir.
Increase AC_PREREQ version to 2.61 (for AC_PROC_SED, AC_PROG_MKDIR_P).
Handle misaligned devices that report alignment_offset of -1.
Extend core allocation code in preparation for mirrored log areas.
Rewrite clvmd init script.
Remove lvs_in_vg_activated_by_uuid_only call.
No longer fall back to looking up active devices by name if uuid not found.
Don't touch /dev in vgmknodes if activation is disabled.
Update lvm2app.h Doxygen comments and add lvm2app Doxygen config file.
Update nightly tests and lvm2app unit tests to cover tags.
Add lvm2app functions lvm_{vg|lv}_{get|add|remove}_tag() functions.
Add dm_pool_strdup to allocate and copy memory in tag library function.
Refactor vgcreate, vgchange, and lvchange for tag library function.
Refactor snapshot-merge deptree and device removal to support info-by-uuid.
Version 2.02.61 - 15th February 2010
====================================
Fix some consts and floating point gcc warnings.
Fix dm_report_field_uint64 function to accept 64-bit ints.
Change readhead display to use 32-bit -1 const instead of 64-bit.
Add LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES environment variable.
Remove hard-coding that skipped _mimage devices from 11-dm-lvm.rules.
Use udev transactions in test suite.
Set udev state automatically instead of using LVM_UDEV_DISABLE_CHECKING.
Add lvm_pv_get_size, lvm_pv_get_free and lvm_pv_get_dev_size to lvm2app.
Change lvm2app to return all sizes in bytes as documented (not sectors).
Add 'fail_if_percent_unsupported' arg to _percent and _percent_run.
Remove false "failed to find tree node" error when activating merging origin.
Exit with success when lvconvert --repair --use-policies performs no action.
Accept a list of LVs with 'lvconvert --merge @tag' using process_each_lv.
Avoid unnecessary second resync when adding mimage to core-logged mirror.
Exclude internal VG names and uuids from lists returned through lvm2app.
Add %ORIGIN support to lv{create,extend,reduce,resize} --extents.
Add _mda_copy to clone a struct metadata_area.
Remove pointless versioned symlinks to dmeventd plugin libraries.
Fix dmeventd snapshot plugin build dependency.
Make clvmd -V return status zero.
Remove unnecessary 'dmsetup resume' following 'dmsetup create' in tests.
Fix cmirrord segfault in clog_cpg list processing when converting mirror log.
Deactivate temporary pvmove mirror cluster-wide when activating it fails.
Always query device by uuid and not name in clvmd.
Add missing metadata vg_reverts in pvmove error paths.
Unlock shared lock in clvmd if activation calls fail.
Return success from dev_manager_info with non-existent uuid if ioctl succeeds.
Version 2.02.60 - 23rd January 2010
===================================
Extend cmirrord man page.
Sleep before first progress check if pvmove/lvconvert interval has prefix '+'.
Default to checking progress before waiting in _wait_for_single_lv.
Fix cmirror initscript (including syntax error).
Eliminate avoidable ioctls for checking open_count in _add_new_lv_to_dtree.
Disable memory debugging if dmeventd is configured. (Not thread-safe.)
Fix first log message prefix in syslog for dmeventd plugins.
Fix exported symbols names for dmeventd lvm2 wrapper plugin.
Make failed locking initialisation messages more descriptive.
Version 2.02.59 - 21st January 2010
===================================
Add libdevmapper-event-lvm2.so to serialise dmeventd plugin liblvm2cmd use.
Cleanup memory initialization and freeing in pv_read() and pv_create().
Clear pointer and counters after their release in _fin_commands().
Stop dmeventd trying to access already-removed snapshots.
Remove (fallback) /dev mknod from cmirrord.
Add t-topology-support.sh and t-snapshot-merge.sh tests.
Fix clvmd to never scan suspended devices.
Fix dmeventd build outside source tree.
Assorted cmirror code changes to remove various compiler warnings.
Fix detection of completed snapshot merge.
Add Red Hat cmirror initscript (unfinished).
Add cmirrord man page (incomplete).
Make cluster log communication structures architecture independant.
Fix cluster log in-memory bitmap handling.
Improve snapshot merge metadata import validation.
Improve target type compatibility checking in _percent_run().
Add 'target_status_compatible' method to 'struct segtype_handler'.
Change underscore to hyphen in table line for clustered log type.
Version 2.02.58 - 14th January 2010
===================================
Cleanup some minor gcc warnings.
Add --merge to lvconvert to merge a snapshot into its origin.
Fix clvmd automatic target module loading crash (no reset_locking fn).
Fix allocation code not to stop at the first area of a PV that fits.
Version 2.02.57 - 12th January 2010
===================================
Ensure exactly one process returns from poll_daemon(), never two.
Reset _vgs_locked in lvmcache_init() in child after forking.
Define {DM, LVM}_UDEV_DISABLE_CHECKING=1 environment variables during tests.
Enable udev_sync and udev_rules in lvm.conf by default while running tests.
If LVM_UDEV_DISABLE_CHECKING in set in environment, disable udev warnings.
Add --splitmirrors to lvconvert to split off part of a mirror.
Change background polldaemon's process name to "(lvm2)".
Allow vgremove to remove a VG with PVs missing after a prompt.
Return success in lvconvert --repair --use-policies on failed allocation.
Keep log type consistent when changing mirror image count.
Always set environment variables for an LVM2 device in 11-dm-lvm.rules.
Add activation/udev_rules config option in lvm.conf.
Add consts to text metadata flag structs.
Add macros outfc, outsize, outhint and function out_text_with_comment.
Reimplement report FIELD macro using offsetof instead of static structs.
Fix fsadm man page typo (fsdam).
Rename mirror_device_fault_policy to mirror_image_fault policy.
Remove empty PV devices if lvconvert --repair is using defined policies.
Use fixed buffer to prevent stack overflow in persistent filter dump.
Use extended status of new kernel snapshot target 1.8.0 to detect when empty.
Insert stack macros in suspend_lv, resume_lv & (de)activate_lv callers.
Add --poll flag to vgchange and lvchange to control background daemon launch.
Propagate metadata commit and revert notifications to other cluster nodes.
Use proper mask for VG lock mode in clvmd.
Allow precommitted metadata to be dropped from lvmcache.
Move processing of VG locks to separate function in clvmd.
Properly decode all flags in clvmd messages including VG locks.
Properly handle precommitted cache flag when only committed metadata present.
Resume renamed volumes in reverse order to preserve memlock pairing.
Drop cached metadata after device was auto-repaired and removed from VG.
Clear MISSING_PV flag if PV reappeared and is empty.
Fix removal of multiple devices from a mirror.
Also clean up PVs flagged as missing in vgreduce --removemissing --force.
Introduce INTERNAL_ERROR macro for error messages and use throughout.
Remove superfluous returns from void functions.
Destroy allocated mempool in _vg_read_orphans() error path.
Fix some pvresize and toollib error paths with missing VG releases/unlocks.
Explicitly call suspend for temporary mirror layer.
Allow use of precommitted metadata when a PV is missing.
Add memlock information to do_lock_lv debug output.
Always bypass calls to remote cluster nodes for non-clustered VGs.
Permit implicit cluster lock conversion in pre/post callbacks on local node.
Permit implicit cluster lock conversion to the lock mode already held.
Fix lock flag masking in clvmd so intended code paths get invoked.
Replace magic masks in cluster locking code by defined masks.
Remove newly-created mirror log from metadata if initial deactivation fails.
Correct activated or deactivated text in vgchange summary message.
Improve pvmove error message when all source LVs are skipped.
Fix memlock imbalance in lv_suspend if already suspended.
Fix pvmove test mode not to poll (and fail).
Fix vgcreate error message if VG already exists.
Fix tools to use log_error when aborted due to user response to prompt.
Fix ignored readahead setting in lvcreate --readahead.
Fix clvmd memory leak in lv_info_by_lvid by calling release_vg.
If aborting due to internal error, always send that message to stderr.
Add global/abort_on_internal_errors to lvm.conf to assist testing.
Fix test Makefiles when builddir and srcdir differ.
Impose limit of 8 mirror images to match the in-kernel kcopyd restriction.
Use locking_type 3 (compiled in) for lvmconf --enable-cluster.
Remove list.c and list.h with no-longer-used dm_list macros and functions.
Log failure type and recognise type 'F' (flush) in dmeventd mirror plugin.
Extend internal PV/VG/LV/segment status variables from 32-bit to 64-bit.
Version 2.02.56 - 24th November 2009
====================================
Add missing vg_release to pvs and pvdisplay to fix memory leak.
Do not try to unlock VG which is not locked in _process_one_vg.
Move is_long_lived persistent_filter_dump to happen after every full scan.
Refresh device filters before full device rescan in lvmcache.
Return error status if vgchange fails to activate some volume.
Fix suspend/resume lock type test causing unbalanced memory locking.
Revert vg_read_internal change as clvmd was not ready for vg_read. (2.02.55)
Version 2.02.55 - 19th November 2009
====================================
Fix deadlock when changing mirrors due to unpaired memlock refcount changes.
Use separate memlock counter for dmeventd handlers to permit device scanning.
Directly restrict vgchange to activating visible LVs.
Fix pvmove region_size overflow for very large PVs.
Fix lvcreate and lvresize %PVS argument always to use sensible total size.
Tidy some uses of arg_count and introduce arg_is_set.
Export outnl and indent functions for modules.
Flush stdout after yes/no prompt.
Update vgsplit and vgcreate to use vg_set_clustered.
Add vg_mda_count and vg_set_clustered library functions.
Add more vgcreate and vgsplit nightly tests.
Insert some missing stack macros into activation code.
Recognise DRBD devices and handle them like md devices.
Version 2.02.54 - 26th October 2009
===================================
Update lvcreate/lvconvert man pages to explain PhysicalVolume parameter.
Document --all option in man pages, cleanup {pv|vg|lv}{s|display} man pages.
Permit snapshots of mirrors.
Cleanup mimagetmp LV if allocation fails for new lvconvert mimage.
Fix clvmd segfault when refresh_toolcontext fails.
Remember to clear 'global lock held during cache refresh' state after use.
Use udev flags support in LVM and apply various fixes to udev rules.
Delay announcing mirror monitoring to syslog until initialisation succeeded.
Handle metadata with unknown segment types more gracefully.
Set default owner and group to null.
Add dmeventd.static to the build.
Disable realtime support code by default.
Make clvmd return 0 on success rather than 1.
Add --pvmetadatacopies for pvcreate, vgcreate, vgextend, vgconvert.
Add implict pvcreate support to vgcreate and vgextend.
Correct example.conf to indicate that lvm2 not lvm1 is the default format.
Remove an unused stray LVM1_SUPPORT ifdef.
Only include selinux libs in libdevmapper.pc when selinux build enabled.
Allow for a build directory separate from the source.
Update distclean target for rename clogd to cmirrord. (2.02.52)
Only do lock conversions in clvmd if we are explicitly asked for one.
Introduce percent_range_t and centralise snapshot full/mirror in-sync checks.
Factor out poll_mirror_progress and introduce progress_t.
Distinguish between powers of 1000 and powers of 1024 in unit suffixes.
Restart lvconverts in vgchange by sharing lv_spawn_background_polling.
Generalise polldaemon code by changing mirror-specific variable names.
Don't attempt to deactivate an LV if any of its snapshots are in use.
Return error if lv_deactivate fails to remove device from kernel.
Provide alternative implementation of obsolete siginterrupt().
Consolidate LV allocation into alloc_lv().
Treat input units of both 's' and 'S' as 512-byte sectors. (2.02.49)
Use standard output units for 'PE Size' and 'Stripe size' in pv/lvdisplay.
Add configure --enable-units-compat to set si_unit_consistency off by default.
Add global/si_unit_consistency to enable cleaned-up use of units in output.
Version 2.02.53 - 25th September 2009
=====================================
Create any directories in /dev with DM_DEV_DIR_UMASK (022).
Enable dmeventd monitoring section of config file by default.
Update lvm2 monitoring script to lvm2_monitoring_init_red_hat.in.
Fix lvm2app test to run under test/api subdirectory only when configured.
Add vg_is_resizeable() and cleanup reference to VG_RESIZEABLE.
Version 2.02.52 - 15th September 2009
=====================================
Update _process_one_vg to cleanup properly after vg_read_error.
Add lots of missing stack debug messages to tools.
Make readonly locking available as locking type 4.
Fix readonly locking to permit writeable global locks (for vgscan). (2.02.49)
Add DM_UDEV_RULES_VSN environment variable to udev rules.
Update vgsplit, vgmerge, and vgrename to obey new vgname ordering rules.
Make lvm2app pv_t, lv_t, vg_t handle definitions consistent with lvm_t.
Enforce an alphabetical lock ordering on vgname locking.
Prioritise write locks over read locks by default for file locking.
Add local lock files with suffix ':aux' to serialise locking requests.
Fix global locking in PV reporting commands (2.02.49).
Fix pvcreate string termination in duplicate uuid warning message.
Don't loop reading sysfs with pvcreate on a non-blkext partition (2.02.51).
Fix vgcfgrestore error paths when locking fails (2.02.49).
Update Makefile distclean target.
Add libudev configuration check.
Make clvmd check corosync to see what cluster interface it should use.
Add clvmd autodetection check and cleanup related configure messages.
Rewrite clvmd configuration code to cope with all combinations of libs.
Added configure --enable-cmirrord to build the cluster mirror log daemon.
Rename clogd to cmirrord.
Make lvchange --refresh only take a read lock on volume group.
Fix race where non-blocking file locks could be granted in error.
Fix vgextend error path - if ORPHAN lock fails, unlock / release vg (2.02.49).
Fix compile warning in clvmd.
Clarify use of PE ranges in lv{convert|create|extend|resize} man pages.
Remove useless _pv_write wrapper.
Add lvm2app.sh to tests conditional upon configure --enable-applib.
Add lvm_vg_is_clustered, lvm_vg_is_exported, and lvm_vg_is_partial.
Update lvm_vg_remove to require lvm_vg_write to commit remove to disk.
Update test/api/test.c to call lvm_vg_create and lvm_vg_remove.
Version 2.02.51 - 6th August 2009
=================================
Fix locking in clvmd (2.02.50).
Add --noudevsync option for relevant LVM tools.
Add activation/udev_sync to lvm.conf.
Only change LV symlinks on ACTIVATE not PRELOAD.
Make lvconvert honour log mirror options combined with downconversion.
Allow LV suspend while --ignorelockingfailure is in force.
Update synopsis in lvconvert manpage to mention --repair.
Set cookies in activation code and wait for udev to complete processing.
Added configure --enable-udev_rules --enable-udev_sync.
Added configure --with-udev-prefix --with-udevdir.
Added udev dir to hold udev rules.
Add devices/data_alignment_detection to lvm.conf.
Add devices/data_alignment_offset_detection to lvm.conf.
Add --dataalignmentoffset to pvcreate to shift start of aligned data area.
Fix _mda_setup() to not check first mda's size before pe_align rounding.
Document -I option of clvmd in the man page.
Fix configure script to handle multiple clvmd selections.
Fix lvm2app.pc installation filename.
Remove pv_t, vg_t & lv_t handles from lib. Only liblvm uses them.
Rename lvm.h to lvm2app.h for now.
Version 2.02.50 - 28th July 2009
================================
Change test/api/test.c prompt so it's not confused with the main lvm prompt.
Update liblvm unit tests in test/api to cover latest liblvm changes.
Add unimplemented lvm_lv_resize and lvm_pv_resize skeletons to liblvm.
Add lvm_library_get_version to liblvm.
Add lvm_config_override to liblvm to allow caller to override LVM config.
Add lvm_lv_is_active and lvm_lv_is_suspended to liblvm.
Add lvm_lv_activate and lvm_lv_deactivate to liblvm.
Add lvm_scan, lvm_vg_reduce and lvm_vg_remove_lv to liblvm.
Add functions to get numeric properties to liblvm.
Add lvm_{pv|vg|lv}_get_{name|uuid} to liblvm.
Add lvm_vg_list_pvs and lvm_vg_list_lvs to liblvm.
Add lvm_vg_open and lvm_vg_create_lv_linear to liblvm.
Add lvm_list_vg_names/uuids to liblvm.
Add lvm_errno and lvm_errmsg to liblvm to obtain failure information.
Rename lvm_create/destroy to lvm_init/quit.
Rename lvm_reload_config to lvm_config_reload.
Refactor _override_settings to use new override_config_tree_from_string.
Add vg_reduce to metadata.c and metadata-exported.h.
Update lvm.h to clarify API behavior and return codes.
Update lvm_vg_extend to do an implicit pvcreate on the device.
Update display.c to use vg_free(vg) instead of duplicating the calculation.
Refactor vg_size, vg_free, and pv_mda_count field calculations for liblvm.
Refactor pvcreate and lvcreate for liblvm.
Add global/wait_for_locks to lvm.conf so blocking for locks can be disabled.
All LV locks are non-blocking so remove LCK_NONBLOCK from separate macros.
Fix race condition with vgcreate and vgextend on same device (2.02.49).
Remove redundant validate_name call from vgreduce.
Remove unused handles lvseg, pvseg inside liblvm/lvm.h.
Add liblvm2app Makefile installation targets.
Add liblvm pkgconfig file.
Use newly-independent LVM_LIBAPI in liblvm soname. E.g. liblvm2app.so.2.1.
Add an API version number, LVM_LIBAPI, to the VERSION string for liblvm.
Pass a pointer to struct cmd_context to init_multiple_segtypes
Return EINVALID_CMD_LINE not success when invalid VG name format is used.
Remove unnecessary messages after vgcreate/vgsplit refactor (2.02.49).
Add log_errno to set a specific errno and replace log_error in due course.
Change create_toolcontext to still return an object if it fails part-way.
Add EUNCLASSIFIED (-1) as the default LVM errno code.
Store any errno and error messages issued while processing each command.
Use log_error macro consistently throughout in place of log_err.
Version 2.02.49 - 15th July 2009
================================
Add readonly locking type to replace implementation of --ignorelockingfailure.
Exclude VG_GLOBAL from vg_write_lock_held so scans open devs read-only again.
Add unit test case for liblvm VG create/delete APIs.
Add liblvm APIs to implement creation and deletion of VGs.
Initialize cmd->cmd_line to "liblvm" in new liblvm library.
Place handles to liblvm objects for pv, vg, lv, lvseg, pvseg inside lvm.h.
Refactor vgsplit and vgextend to remove READ_REQUIRE_RESIZEABLE flag.
Use _exit() not exit() after forking to avoid flushing libc buffers twice.
Add cast to log_info arg in _find_labeller to avoid Sparc64 warning.
Make cmd->cmd_line const.
Fix dev name mismatch in vgcreate man page example.
Refactor vg_remove_single for use in liblvm.
Make all tools use consistent lock ordering obtaining VG_ORPHAN lock second.
Check md devices for a partition table during device scan.
Add extended device (blkext) and md partition (mdp) types to filters.
Make text metadata read errors for segment areas more precise.
Fix text segment metadata read errors to mention correct segment name.
Include segment and LV names in text segment import error messages.
Add parent node to config_node structure.
Update vgsplit and vgcreate to call new vg_create and 'set' functions.
Change vg_create to take minimal parameters, obtain a lock, and return vg_t.
Refactor vgchange extent_size, max_lv, max_pv, and alloc_policy for liblvm.
Update t-vgcreate-usage.sh to test for default vg properties.
Fix memory leak in vgsplit when re-reading the vg.
Make various exit/cleanup paths more robust after lvm init failures.
Use LCK_NONBLOCK implicitly instead of explicit vg_read() flag.
Remove unnecessary locking and existence tests from new vg_read() interface.
Permit several segment types to be registered by a single shared object.
Update the man pages to document size units uniformly.
Allow commandline sizes to be specified in terms of bytes and sectors.
Update 'md_chunk_alignment' to use stripe-width to align PV data area.
Update test/t-inconsistent-metadata.sh to match new vg_read interface.
Add lvmcache_init() to polldaemon initialization.
Convert tools to use new vg_read / vg_read_for_update.
Fix segfault in vg_release when vg->cmd is NULL.
Version 2.02.48 - 30th June 2009
================================
Abort if automatic metadata correction fails when reading VG to update it.
Explicitly request fallback to default major number in device mapper.
Ignore suspended devices during repair.
Call vgreduce --removemissing automatically to fix missing PVs in dmeventd.
Suggest using lvchange --resync when adding leg to not-yet-synced mirror.
Destroy toolcontext on clvmd exit to avoid memory pool leaks.
Fix lvconvert not to poll mirror if no conversion in progress.
Fix memory leaks in toolcontext error path.
Reinstate partial activation support in clustered mode. (2.02.40)
Allow metadata correction even when PVs are missing.
Use 'lvm lvresize' instead of 'lvresize' in fsadm.
Do not use '-n' realine option in fsadm for busybox compatiblity.
Add vg_lock_newname() library function for vgrename, vgsplit and vgcreate.
Round up requested readahead to at least one page and print warning.
Try to repair vg before actual vgremove when force flag provided.
Fix possible double release of VG after recovery.
Add parameter to process_each_vg specifying what to do with inconsistent VG.
Unify error messages when processing inconsistent volume group.
Use lvconvert --repair instead of vgreduce in mirror dmeventd DSO.
Introduce lvconvert --use_policies (repair policy according to lvm.conf).
Update clvmd-corosync to match new corosync API.
Fix lib Makefile to include any shared libraries in default target.
Fix rename of active snapshot with virtual origin.
Fix convert polling to ignore LV with different UUID.
Cache underlying device readahead only before activation calls.
Fix segfault when calculating readahead on missing device in vgreduce.
Remove verbose 'visited' messages.
Handle multi-extent mirror log allocation when smallest PV has only 1 extent.
Add LSB standard headers and functions (incl. reload) to clvmd initscript.
When creating new LV, double-check that name is not already in use.
Remove /dev/vgname/lvname symlink automatically if LV is no longer visible.
Rename internal vorigin LV to match visible LV.
Suppress 'removed' messages displayed when internal LVs are removed.
Fix lvchange -a and -p for sparse LVs.
Fix lvcreate --virtualsize to activate the new device immediately.
Make --snapshot optional with lvcreate --virtualsize.
Generalise --virtualoriginsize to --virtualsize.
Skip virtual origins in process_each_lv_in_vg() without --all.
Fix counting of virtual origin LVs in vg_validate.
Attempt to load dm-zero module if zero target needed but not present.
Version 2.02.47 - 22nd May 2009
===============================
Rename liblvm.so to liblvm2app.so and use configure --enable-applib.
Reinstate version in liblvm2cmd.so soname. (2.02.44)
Version 2.02.46 - 21st May 2009
===============================
Inherit readahead setting from underlying devices during activation.
Detect LVs active on remote nodes by querying locks if supported.
Enable online resizing of mirrors.
Use suspend with flush when device size was changed during table preload.
Implement query_resource_fn for cluster_locking.
Support query_resource_fn in locking modules.
Introduce CLVMD_CMD_LOCK_QUERY command for clvmd.
Fix pvmove to revert operation if temporary mirror creation fails.
Fix metadata export for VG with missing PVs.
Add vgimportclone and install it and the man page by default.
Force max_lv restriction only for newly created LV.
Remove unneeded import parameter from lv_create_empty.
Merge lv_is_displayable and lv_is_visible functions.
Introduce lv_set_visible & lv_set_hidden functions.
Fix lv_is_visible to handle virtual origin.
Introduce link_lv_to_vg and unlink_lv_from_vg functions.
Remove lv_count from VG and use counter function instead.
Fix snapshot segment import to not use duplicate segments & replace.
Do not query nonexistent devices for readahead.
Remove NON_BLOCKING lock flag from tools and set a policy to auto-set.
Remove snapshot_count from VG and use function instead.
Fix first_seg() call for empty segment list.
Add install_lvm2 makefile target to install only the LVM2 components.
Reject missing PVs from allocation in toollib.
Fix PV datalignment for values starting prior to MDA area. (2.02.45)
Add sparse devices: lvcreate -s --virtualoriginsize (hidden zero origin).
Fix minimum width of devices column in reports.
Add lvs origin_size field.
Fix linux configure --enable-debug to exclude -O2.
Implement lvconvert --repair for repairing partially-failed mirrors.
Fix vgreduce --removemissing failure exit code.
Fix remote metadata backup for clvmd.
Introduce unlock_and_release_vg macro.
Introduce vg_release() to be called to free every struct volume_group.
Alloc PV internal structure from VG mempool if possible.
Fix metadata backup to run after vg_commit always.
Tidy clvmd volume lock cache functions.
Fix pvs report for orphan PVs when segment attributes are requested.
Fix pvs -a output to not read volume groups from non-PV devices.
Add MMC (mmcblk) device type to filters.
Introduce memory pools per volume group (to reduce memory for large VGs).
Use copy of PV structure when manipulating global PV lists.
Always return exit error status when locking of volume group fails.
Fix mirror log convert validation question.
Avoid referencing files from DESTDIR during build process.
Avoid creating some static libraries unless configured --enable-static_link.
Enable use of cached metadata for pvs and pvdisplay commands.
Add missing 'device-mapper' internal subdir build dependency.
Fix memory leak in mirror allocation code.
Save and restore the previous logging level when log level is changed.
Fix error message when archive initialization fails.
Make sure clvmd-corosync releases the lockspace when it exits.
Fix segfault for vgcfgrestore on VG with missing PVs.
Block SIGTERM & SIGINT in clvmd subthreads.
Detect and conditionally wipe swapspace signatures in pvcreate.
Fix maximal volume count check for snapshots if max_lv set for volume group.
Fix lvcreate to remove unused cow volume if the snapshot creation fails.
Fix error messages when PV uuid or pe_start reading fails.
Build new liblvm application-level library.
Rename liblvm.a to liblvm-internal.a.
Flush memory pool and fix locking in clvmd refresh and backup command.
Fix unlocks in clvmd-corosync. (2.02.45)
Fix error message when adding metadata directory to internal list fails.
Fix size and error message of memory allocation at backup initialization.
Remove old metadata backup file after renaming VG.
Restore log_suppress state when metadata backup file is up-to-date.
Version 2.02.45 - 3rd March 2009
================================
Avoid scanning empty metadata areas for VG names.
Attempt proper clean up in child before executing new binary in exec_cmd().
Do not scan devices if reporting only attributes from PV label.
Use pkgconfig to obtain corosync library details during configuration.
Fix error returns in clvmd-corosync interface to DLM.
Add --refresh to vgchange and vgmknodes man pages.
Pass --test from lvresize to fsadm as --dry-run.
Supply argv[] list to exec_cmd() to allow for variable number of parameters.
Prevent fsadm from checking mounted filesystems.
No longer treats any other key as 'no' when prompting in fsadm.
Tidy fsadm command line processing.
Add lib/lvm.h and lib/lvm_base.c for the new library interface.
Move tools/version.h to lib/misc/lvm-version.h.
Split LVM_VERSION into MAJOR, MINOR, PATCHLEVEL, RELEASE and RELEASE_DATE.
Add system_dir parameter to create_toolcontext().
Add --dataalignment to pvcreate to specify alignment of data area.
Exclude LCK_CACHE locks from _vg_lock_count, fixing interrupt unblocking.
Provide da and mda locations in debug message when writing text format label.
Mention the restriction on file descriptors at invocation on the lvm man page.
Index cached vgmetadata by vgid not vgname to cope with duplicate vgnames.
No longer require kernel and metadata major numbers to match.
Add a fully-functional get_cluster_name() to clvmd corosync interface.
Remove duplicate cpg_initialize from clvmd startup.
Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
Allow clvmd to start up if its lockspace already exists.
Separate PV label attributes which do not need parse metadata when reporting.
Remove external dependency on the 'cut' command from fsadm.
Fix pvs segfault when pv mda attributes requested for not available PV.
Add fsadm support for reszing ext4 filesysystems.
Move locking_type reading inside init_locking().
Rename get_vgs() to get_vgnames() and clarify related error messages.
Allow clvmd to be built with all cluster managers & select one on cmdline.
Mention --with-clvmd=corosync in ./configure.
Replace internal vg_check_status() implementation.
Rename vg_read() to vg_read_internal().
Version 2.02.44 - 26th January 2009
===================================
Fix --enable-static_link after the recent repository changes.
Add corosync/DLM cluster interface to clvmd.
Add --nameprefixes, --unquoted, --rows to pvs, vgs, lvs man pages.
Fix lvresize size conversion for fsadm when block size is not 1K.
Fix pvs segfault when run with orphan PV and some VG fields.
Display a 'dev_size' of zero for missing devices in reports.
Add pv_mda_size to pvs and vg_mda_size to vgs.
Fix lvmdump /sys listing to include virtual devices directory.
Add "--refresh" functionality to vgchange and vgmknodes.
Avoid exceeding LV size when wiping device.
Calculate mirror log size instead of using 1 extent.
Ensure requested device number is available before activating with it.
Fix incorrect exit status from 'help <command>'.
Fix vgrename using UUID if there are VGs with identical names.
Fix segfault when invalid field given in reporting commands.
Move is_static from cmd to global is_static().
Refactor init_lvm() for lvmcmdline and clvmd.
Add liblvm interactive test infrastructure to build.
Add skeleton lvm2.h file in preparation for a shared library interface.
Use better random seed value in temp file creation.
Add read_urandom to read /dev/urandom. Use in uuid calculation.
Use displayable_lvs_in_vg and lv_is_displayable for consistency throughout.
Fix race in vgcreate that would result in second caller overwriting first.
Fix uninitialised lv_count in vgdisplay -c.
Don't skip updating pvid hash when lvmcache_info struct got swapped.
Add tinfo to termcap search path for pld-linux.
Fix startup race in clvmd.
Generate Red Hat clvmd startup script at config time with correct paths.
Fix clvmd & dmeventd builds after tree restructuring.
Cope with snapshot dependencies when removing a whole VG with lvremove.
Make man pages and tool help text consistent using | for alternative options.
Version 2.02.43 - 10th November 2008
====================================
Merge device-mapper into the lvm2 tree.
Correct prototype for --permission on lvchange and lvcreate man pages.
Exit with non-zero status from vgdisplay if couldn't show any requested VG.
Move list.c into libdevmapper and rename functions.
Rename a couple of variables that matched function names.
Use simplified x.y.z version number in libdevmapper.pc.
Remove ancient debian directory.
Split out lvm-logging.h from log.h and lvm-globals.[ch] from log.[ch].
Version 2.02.42 - 26th October 2008
===================================
Accept locking fallback_to_* options in the global section as documented.
Fix temp table activation in mirror conversions not to happen in other cmds.
Fix temp table in mirror conversions to use always-present error not zero.
Version 2.02.41 - 17th October 2008
===================================
Use temp table to set device size when converting mirrors.
In resume_mirror_images replace activate_lv with resume_lv as workaround.
Avoid overwriting in-use on-disk text metadata by forgetting MDA_HEADER_SIZE.
Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
Generate man pages from templates and include version.
Add usrlibdir and usrsbindir to configure.
Fix conversion of md chunk size into sectors.
Free text metadata buffer after a failure writing it.
Fix misleading error message when there are no allocatable extents in VG.
Fix handling of PVs which reappeared with old metadata version.
Fix mirror DSO to call vgreduce with proper parameters.
Fix validation of --minor and --major in lvcreate to require -My always.
Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
Version 2.02.40 - 19th September 2008
=====================================
Allow lvremove to remove LVs from VGs with missing PVs.
In VG with PVs missing, by default allow activation of LVs that are complete.
Track PARTIAL_LV and MISSING_PV flags internally.
Require --force with --removemissing in vgreduce to remove partial LVs.
No longer write out PARTIAL flag into metadata backups.
Treat new default activation/missing_stripe_filler "error" as an error target.
Remove internal partial_mode.
Add devices/md_chunk_alignment to lvm.conf.
Pass struct physical_volume to pe_align and adjust for md chunk size.
Store sysfs location in struct cmd_context.
Avoid shuffling remaining mirror images when removing one, retaining primary.
Add missing LV error target activation in _remove_mirror_images.
Prevent resizing an LV while lvconvert is using it.
Avoid repeatedly wiping cache while VG_GLOBAL is held in vgscan & pvscan.
Fix pvresize to not allow resize if PV has two metadata areas.
Fix setting of volume limit count if converting to lvm1 format.
Fix vgconvert logical volume id metadata validation.
Fix lvmdump metadata gather option (-m) to work correctly.
Fix allocation bug in text metadata format write error path.
Fix vgcfgbackup to properly check filename if template is used.
configure aborts if lcov or genhtml are missing with --enable-profiling
vgremove tries to remove lv snapshot first.
Added function lv_remove_with_dependencies().
Improve file descriptor leak detection to display likely culprit and filename.
Change clustered mirror kernel module name from cmirror to dm-log-clustered.
Avoid looping forever in _pv_analyze_mda_raw used by pvck.
Change lvchange exit status to indicate if any part of the operation failed.
Fix pvchange and pvremove to handle PVs without mdas.
Refactor _text_pv_read and always return mda list if requested.
Fix configure to work w/o readline unless --enable-readline used. (2.02.39)
Remove is_lvm_partition template which has not yet been coded.
Refactor pvcreate to separate parameter parsing from validation logic.
Check for label_write() failure in _text_pv_write().
Add pvcreate tests and update vgsplit tests to handle lvm1 and lvm2 metadata.
Fix pvchange -M1 -u to preserve existing extent locations when there's a VG.
Cease recognising snapshot-in-use percentages returned by early devt kernels.
Add backward-compatible flags field to on-disk format_text metadata.
Fix dmeventd monitoring libraries to link against liblvm2cmd again. (2.02.39)
Version 2.02.39 - 27th June 2008
================================