-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathWHATS_NEW
3384 lines (3217 loc) · 182 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.101 -
===================================
Add man page entries for lvmdump's -u and -l options.
Fix lvm2app segfault while using lvm_list_pvs_free fn if there are no PVs.
Improve of clvmd singlenode locking simulation.
Disallow thinpools on mirror logical volumes.
Direct udev to use 3min timeout for LVM devices. Recent udev has default 30s.
Do not scan multipath or RAID components and avoid incorrect autoactivation.
Fix MD/loop udev handling to fire autoactivation after setup or coldplug only.
Make RAID capable of single-machine exclusive operations in a cluster.
Drop calculation of read ahead for deactivated volume.
Check for exactly one lv segment in validation of thin pools and volumes.
Fix dmeventd unmonitoring of thin pools.
Fix lvresize for stacked thin pool volumes (i.e. mirrors).
Write Completed debug message before reinstating log defaults after command.
Skip pvmove of RAID, thin, snapshot, origin, or mirror LVs in a cluster.
Refresh existing VG before autoactivation (event retrigger/device reappeared).
Use pvscan -b in udev rules to avoid a deadlock on udev process count limit.
Add pvscan -b/--background for the command to be processed in the background.
Don't assume stdin file descriptor is readable.
Avoid unlimited recursion when creating dtree containing inactive pvmove LV.
Require exactly 3 arguments for lvm2-activation-generator. Remove defaults.
Disable pvmove of merging or converting logical volumes.
Enable pvmove of snapshots and snapshot origins.
Fix inability to specify LV name when pvmove'ing a RAID, mirror, or thin-LV.
Inform lvmetad about any lost PV label to make it in sync with system state.
Support most of lvchange operations on stacked thin pool meta/data LVs.
Add ability to pvmove RAID, mirror, and thin volumes.
Make lvm2-activation-generator silent unless it's in error state.
Remove "mpath major is not dm major" msg for mpath component scan (2.02.94).
Prevent cluster mirror logs from being corrupted by redundant checkpoints.
Fix ignored lvmetad update on loop device configuration (2.02.99).
Use LVM_PATH instead of hardcoded value in lvm2 activation systemd generator.
Fix vgck to notice on-disk corruption even if lvmetad is used.
Move mpath device filter before partitioned filter (which opens devices).
Split partitioned filter out of lvm_type filter.
Merge filter*.h into a single filter.h.
Require confirmation for vgchange -c when no VGs listed explicitly.
Also skip /var and /var/log by default in blkdeactivate when unmounting.
Add support for bind mounts in blkdeactivate.
Add blkdeactivate -v/--verbose for debug output from external tools used.
Add blkdeactivate -e/--errors for error messages from external tools used.
Suppress messages from external tools called in blkdeactivate by default.
Version 2.02.100 - 13th August 2013
===================================
Fix inability to remove a VG's cluster flag if it contains a mirror.
Suppress arg: prefix in log_sys_error macro when arg is empty string.
Fix bug making lvchange unable to change recovery rate for RAID.
Prohibit conversion of thin pool to external origin.
Workaround gcc v4.8 -O2 bug causing failures if config/checks=1 (32bit arch).
Verify clvmd message validity before processing and log error if incorrect.
When creating PV on existing LV don't forbid reserved LV names on LVs below.
Split out device_is_suspended_or_blocking from device_is_usable.
When converting mirrors, default segtype should be the same unless specified.
Make "raid1" the default mirror segment type.
Fix clogd descriptor leak when daemonizing.
Fix clvmd descriptor leak on restart.
Add pipe_open/close() to use instead of less efficient/secure popen().
Fix metadata area offset/size overflow if it's >= 4g and while using lvmetad.
Inherit and apply any profile attached to a VG if creating new thin pool.
Add initial support thin pool lvconvert --repair.
Add --with-thin-repair and --with-thin-dump configure options.
Add lvm.conf thin_repair/dump_executable and thin_repair_options.
Require 1.9 thin pool target version for online thin pool metadata resize.
Ignore previous LV seg with alloc contiguous & cling when num stripes varies.
Fix segfault if devices/global_filter is not specified correctly.
Version 2.02.99 - 24th July 2013
================================
Do not zero init 4KB of thin snapshot for non-zeroing thin pool (2.02.94).
Issue an error msg if lvconvert --type used incorrectly with other options.
Use LOG_DEBUG/ERR msg severity instead default for lvm2-activation-generator.
Support ARG_GROUPABLE with merge_synonym (for --raidwritemostly).
Fix segfault when reporting raid_syncaction for older kernels.
Add LV report fields: raid_mismatch_count/raid_sync_action/raid_write_behind.
Add LV reporting fields raid_min_recovery_rate, raid_max_recovery_rate.
Add sync_percent as alias for copy_percent LV reporting field.
Add lv_ prefix to modules reporting field.
Use units B or b (never E) with no decimal places when displaying sizes < 1k.
Add support for poolmetadataspare LV, that will be used for pool recovery.
Improve activation order when creating thin pools in non-clustered VG.
List thin-pool and thin modules for thin volumes.
Correct thin creation error paths.
Use local activation for clearing snapshot COW device.
Add lvm2-activation-net systemd unit to activate LVs on net-attached storage.
Release memory allocated with _cached_info().
Add whole log_lv and metadata_lv sub volumes when creating partial tree.
Properly use snapshot layer for origin which is also thin volume.
Avoid generating metadata backup when calling update_pool_lv().
Send thin messages also for active thin pool and inactive thin volume.
Add activation/auto_set_activation_skip to control activation skip flagging.
Add 's(k)ip activation' bit to lvs -o lv_attr to indicate skip flag attached.
Add --ignoreactivationskip to lvcreate/vgchange/lvchange to ignore skip flag.
Add --setactivationskip to lvcreate/lvchange to set activation skip flag.
Automatically flag thin snapshots to be skipped during activation.
Add support for persistent flagging of LVs to be skipped during activation.
Add --type profilable to lvm dumpconfig to show profilable config settings.
Add --mergedconfig to lvm dumpconfig for merged --config/--profile/lvm.conf.
Relase memory and unblock signals in lock_vol error path.
Define LVM2_* command errors in lvm2cmd.h and use in dmeventd plugins.
Move errors.h to tools dir.
Add man page entries for profile configuration and related options.
Improve error loging when user tries to interrupt commands.
Rename _swap_lv to _swap_lv_identifiers and move to allow an additional user.
Rename snapshot segment returning methods from find_*_cow to find_*_snapshot.
liblvm/python API: Additions: PV create/removal/resize/listing
liblvm/python API: Additions: LV attr/origin/Thin pool/Thin LV creation
Add vgs/lvs -o vg_profile/lv_profile to report profiles attached to VG/LV.
Add default.profile configuration profile and install it on make install.
Create a new 'conf' subdir for configuration files including profiles.
Make selected thinp settings customizable by a profile.
Support changing VG/LV profiles: vgchange/lvchange --profile/--detachprofile.
Support storing profile name in metadata for both VGs and LVs.
Add new --profile command line arg to select a configuration profile for use.
Add config/profile_dir to set working directory to load profiles from.
Add configure --with-default-profile-subdir to select dir to keep profiles in.
Add support for configuration profiles.
Introduce config_source wrapper for identification of configuration sources.
Avoid creation of multiple archives for one command.
Use mirror_segtype_default if type not specified for linear->mirror upconvert.
Fix use of too big chunks of memory when communication with lvmetad.
Fix vgcfgrestore crash when specified incorrect vg name.
Refine lvm.conf and man page documentation for autoactivation feature.
Add support for thin volumes in vgsplit.
Also filter partitions on mpath components if multipath_component_detection=1.
Add lvresize support for online thin pool metadata volume resize.
Add helper functions find_pool_lv() and pool_can_resize_metadata().
Add detection for thin pool metadata resize kernel support.
Report lvs volume type 'e' with higher priority.
Report lvs volume type 'o' also for external origin volumes.
Report lvs target type 't' only for thin pools and thin volumes.
Fix test for active snapshot in cluster before resizing it.
Allow local activation to receive a locally-supplied LV struct.
Add vg->vg_ondisk / lv_ondisk() holding committed metadata.
Report backtrace from dump filter error path.
Do not use persistent filter with lvmetad.
Composable persistent filter functionality for global filter.
Override system's global_filter settings for vgimportclone.
Detect maximum usable size for snapshot for lvresize.
Creation of snapshot takes at most 100% origin coverage.
Add cow_max_extents() to calc extents for 100% origin coverage.
For creation of snapshot require size for at least 3 chunks.
Fix lvresize --use-policies of VALID but 100% full snapshot.
Do not accept size parameters bigger then 16EiB.
Fix release of PV's fid in free_pv_fid().
Skip monitoring of snapshots that are already bigger then origin.
Add lv_is_cow_covering_origin() to check if cow covers origin size.
Use libdm dm_get_status_snapshot() to parse snapshot status.
Add detection of mounted fs also for vgchange deactivation.
Replace 'lv_is_active' with more correct/specific variants (e.g. *_locally).
Refuse to init a snapshot merge in lvconvert if there's no kernel support.
Fix exported symbols regex for non-GNU busybox sed.
Accept --yes in all commands so test scripts can be simpler.
Fix alignment of PV data area if detected alignment less than 1 MB (2.02.74).
Fix memory resource leak in memlocking error path.
Fix premature DM version checking which caused useless mapper/control access.
Add "active" LV reporting field to show activation state.
Add "monitor" segment reporting field to show dmevent monitoring status.
Document lvextend --use-policies option in man.
Fix creation and removal of clustered snapshot.
Fix clvmd caching of metadata when suspending inactive volumes.
Find newest timestamp of merged config files.
Fix assignment order for vg fid for lvm1 and pool format.
Fix memleak in dmeventd thin plugin in device list obtaining err path.
Add explicit message about unsupported pvmove for thin/thinpool volumes.
Fix lvmetad error path in lvmetad_vg_lookup() for null vgname.
Fix clvmd _cluster_request() return code in memory fail path.
Add lvcreate/lvchange --[raid]{min|max}recoveryrate for raid LVs.
Add lvchange --[raid]writemostly/writebehind support for RAID1
Add lv_change_activate() for common activation code in vg/lvchange.
Add lvchange --[raid]syncaction for scrubbing of RAID LVs.
Improve RAID kernel status retrieval to include sync_action/mismatch_cnt.
Add external origin support for lvcreate.
Improve lvcreate, lvconvert and lvm man pages.
Clean up format1 PV write to remove a need for an orphan VG for it to pass.
Fix vgextend to not allow a PV with 0 MDAs to be used while already in a VG.
Move update_pool_params() from /tools to /lib for better reuse.
Give precedence to EMC power2 devices with duplicate PVIDs.
Add --validate option to lvm dumpconfig to validate current config on demand.
Add --ignoreadvanced and --ignoreunsupported switch to lvm dumpconfig.
Add --withcomments and --withversions switch to lvm dumpconfig.
Add --type {current|default|missing|new} and --atversion to lvm dumpconfig.
Support automatic config validation and add 'config' section to lvm.conf.
Add pvs -o pv_ba_start,pv_ba_size to report bootloader area start and size.
Add --bootloaderareasize to pvcreate and vgconvert to create bootloader area.
Add PV header extension: extension version, flags and bootloader areas.
Initial support for lvconvert of thin external origin.
Add _lv_remove_segs_using_this_lv() for removal of dependent lvs.
Improve activation code for better support of stacked devices.
Add _add_layer_target_to_dtree() for adding linear layer into dtree.
Extend _cached_info() to accept layer string.
vgimport '--force' now allows import of VGs with missing PVs.
Fix PV alignment to incorporate alignment offset if the PV has zero MDAs.
Add global/raid10_segtype_default to lvm.conf.
Allow removal or replacement of RAID LV components that are error segments.
Make 'vgreduce --removemissing' able to handle RAID LVs with missing PVs.
Accept activation/raid_region_size in preference to mirror_region_size config.
Fix pvs -o pv_free reporting for PVs with zero PE count.
Fix missing cleanup of flags when the LV is detached from pool.
Fix check for some forbidden discards conversion of thin pools.
Add pool_is_active() to check for any pool related active LV.
Report blank origin_size field if the LV doesn't have an origin instead of 0.
Do not take a free lv name argument for lvconvert --thinpool option.
Avoid flushing thin pool when just requesting transaction_id.
Add internal function lv_layer() to obtain layer name for LV.
Report partial and in-sync RAID attribute based on kernel status
Fix blkdeactivate to handle nested mountpoints and mangled mount paths.
Use LC_ALL to set locale in daemons and fsadm instead of lower priority LANG.
Avoid crash-inducing race in lvmetad when VG disappears during rename.
Add log/debug_classes to lvm.conf to control debug log messages.
Synchronize with udev in pvscan --cache and fix dangling udev_sync cookies.
Fix autoactivation to not autoactivate VG/LV on each change of the PVs used.
Limit RAID device replacement to repair only if LV is not in-sync.
Disallow RAID device replacement or repair on inactive LVs.
Fix possible race while removing metadata from lvmetad.
Fix possible deadlock when querying and updating lvmetad at the same time.
Check lvmcache_info_from_pvid and recall only when needed in _pv_read.
Check for memory failure of dm_config_write_node() in lvmetad.
Fix socket leak on error path in lvmetad's handle_connect.
Check for failing id_read_format() in _pv_populate_lvmcache.
Fix memleak on error path for lvmetad's pv_found.
Unlock vg mutex in error path when lvmetad tries to lock_vg.
Detect key string duplication failure in config_make_nodes_v in libdaemon.
Detect fid creation failure in _scan_file in format_text.
Log output also to syslog when abort_on_internal_error is set.
Add LV snapshot support to liblvm and python-lvm.
Avoid a global lock in pvs when lvmetad is in use.
Fix crash in pvscan --cache -aay triggered by non-mda PV.
Allow lvconvert --stripes/stripesize only with --mirrors/--repair/--thinpool.
Fix memleak in device_is_usable mirror testing function.
Do not ignore -f in lvconvert --repair -y -f for mirror and raid volumes.
Disallow pvmove on RAID LVs until they are addressed properly
Allow empty activation/{auto_activation|read_only|}_volume_list config option.
Add lvm.conf option global/thin_disabled_features.
Add lvconvert support to swap thin pool metadata volume.
Implement internal function detach_pool_metadata_lv().
Fix lvm2app to return all property sizes in bytes (not sectors).
Recognize DM_DISABLE_UDEV environment variable for a complete fallback.
Do not verify udev operations if --noudevsync command option is used.
Fix lvm2app and return lvseg discards property as string.
Allow vgcfgrestore of lvm2 metadata with thin volumes if --force is used.
Recognise Storage Class Memory (IBM S/390) devices in filter.
Recognise STEC skd devices in filter.
Recognise Violin Memory vtms devices in filter.
Add lvm.conf thin pool allocation settings thin_pool_{chunk_size|discards|zero}.
Support discards for non-power-of-2 thin pool chunks.
Automatically restore MISSING PVs with no MDAs.
When no --stripes argument is given when creating a RAID10 volume, default to 2 stripes.
Do not allow lvconvert --splitmirrors on RAID10 logical volumes.
Skip mlocking [vectors] on arm architecture.
Support allocation of pool metadata with lvconvert command.
Move common functionality for thin lvcreate and lvconvert to toollib.
Repair a mirrored log before the mirror itself when both fail.
Add python-lvm unit test case
Exit pvscan --cache immediately if cluster locking used or lvmetad not used.
Don't use lvmetad in lvm2-monitor.service ExecStop to avoid a systemd issue.
Remove dependency on fedora-storage-init.service in lvm2 systemd units.
Depend on lvm2-lvmetad.socket in lvm2-monitor.service systemd unit.
Hardcode use_lvmetad=0 if cluster locking used and issue a warning msg.
Avoid trying to read a mirror that has a failed device in its mirrored log.
Relax ignore_suspended_devices to read from mirrors that don't have a device marked failed.
Change lvs heading Copy% to Cpy%Sync and print RAID4/5/6 sync% there too.
Fix clvmd support for option -d and properly use its argument.
Support use of option --yes for lvchange --persistent.
Fix memory leak on error path for pvcreate with invalid uuid.
Implement ref-counting for parents in python lib.
Add lv_is_active_locally and use instead of most local lv_info calls.
Reduce some log_error messages to log_warn where we don't fail.
Remove python liblvm object. systemdir can only be changed using env var now.
Version 2.02.98 - 15th October 2012
===================================
Switch from DEBUG() to DEBUGLOG() in lvmetad as -DDEBUG is already used.
Prohibit not yet supported change of thin-pool to read-only.
Support creation of read-only thin volumes (lvcreate -p r).
Using autoextend percent 0 for thin pool fails 'lvextend --use-policies'.
Introduce blkdeactivate script to deactivate block devs with dependencies.
Implement devices/global_filter to hide devices from lvmetad.
Make vgscan --cache an alias for pvscan --cache.
Clear lvmetad metadata/PV cache before a rescan.
Fix a segmentation fault upon receiving a corrupt lvmetad response.
Give inconsistent metadata warnings in pvscan --cache.
Make lvremove ask before discarding data areas.
Avoid overlapping locks that could cause a deadlock in lvmetad.
Fix memory leaks in libdaemon and lvmetad.
Optimize libdaemon logging for a fast no-output path.
Only create lvmetad pidfile when running as a daemon (no -f).
Warn if lvmetad is running but disabled.
Warn about running lvmetad with use_lvmetad = 0 in example.conf.
Update lvmetad help output (flags and their meaning).
Make pvscan --cache read metadata from LVM1 PVs.
Make libdaemon buffer handling asymptotically more efficient.
Add lvmdump -l, to collect a state dump from lvmetad.
Make --sysinit suppress lvmetad connection failure warnings.
Prohibit usage of lvcreate --thinpool with --mirrors.
Fix lvm2api origin reporting for thin snapshot volume.
Add configure --enable-python_bindings for liblvm2app to new python subdir.
Add implementation of lvm2api function lvm_percent_to_float.
Allow non power of 2 thin chunk sizes if thin pool driver supports that.
Allow limited metadata changes when PVs are missing via [vg|lv]change.
Do not start dmeventd for lvchange --resync when monitoring is off.
Remove pvscan --cache from lvm2-lvmetad init script.
Remove ExecStartPost with pvscan --cache from lvm2-lvmetad.service.
Report invalid percentage for property snap_percent of non-snaphot LVs.
Disallow conversion of thin LVs to mirrors.
Fix lvm2api data_percent reporting for thin volumes.
Do not allow RAID LVs in a clustered volume group.
Add --discards to lvconvert.
Add --poolmetadata to lvconvert and support thin meta/data dev stacking.
Support changes of permissions for thin snapshot volumes.
Enhance insert_layer_for_lv() with recursive rename for _tdata LVs.
Skip building dm tree for thin pool when called with origin_only flag.
Add internal lv_rename_update() to rename LV without updating mda.
Ensure descriptors 0,1,2 are always available, using /dev/null if necessary.
Use /proc/self/fd when available for closing opened descriptors efficiently.
Add missing pkg init with --enable-testing in configure.in (2.02.71).
Fix inability to create, extend or convert to a large (> 1TiB) RAID LV.
Split out daemon-io from daemon-shared and always build libdaemonclient.
Update lvmetad communications to cope with clients using different filters.
Add (p)artial attribute to lvs.
Don't try to issue discards to a missing PV to avoid segfault.
Clear LV_NOSYNCED flag when a RAID1 LV is converted to a linear LV.
Disallow RAID1 upconvert if the LV was created with --nosync.
Depend on systemd-udev-settle in units generated by activation generator.
Fix vgchange -aay not to activate non-matching LVs that follow a matching LV.
Fix lvchange --resync for RAID LVs which had no effect.
Restructure mirror resync code.
Disallow addition of RAID images until the array is in-sync.
Fix RAID LV creation with '--test' so valid commands do not fail.
Add lvm_lv_rename() to lvm2api.
Fix setvbuf code by closing and reopening stream before changing buffer.
Disable private buffering when using liblvm.
When private stdin/stdout buffering is not used always use silent mode.
Add log/silent to lvm.conf equivalent to -qq.
Suppress non-essential stdout with -qq.
Switch non-essential log_print messages to log_print_unless_silent.
Use -q as short form of --quiet.
Add RAID10 support (--type raid10).
Reuse _reload_lv() in more lvconvert functions.
Fix 32-bit device size arithmetic needing 64-bit casting throughout tree.
Remove numerous unnecessary #includes and the empty util.c.
Fix dereference of NULL in lvmetad error path logging.
Fix buffer memory leak in lvmetad logging.
Add support for lvcreate --discards.
Correct the discards field in the lvs manpage (2.02.97).
Use proper condition to check for discards settings unsupported by kernel.
Reinstate correct default to ignore discards for thin metadata from old tools.
Issue error message when -i and -m args do not match specified RAID type.
Change lvmetad logging syntax from -ddd to -l {all|wire|debug}.
Add new libdaemon logging infrastructure.
Version 2.02.97 - 7th August 2012
=================================
Improve documention of allocation policies in lvm.8.
Increase limit for major:minor to 4095:1048575 when using -My option.
Add make install_systemd_generators.
Add generator for lvm2 activation systemd units.
Add lvm_config_find_bool lvm2app fn to retrieve bool value from config tree.
Respect --test when using lvmetad.
No longer capitalise first LV attribute char for invalid snapshots.
Allow vgextend to add PVs to a VG that is missing PVs.
Recognise Micron PCIe SSDs in filter and move array out to device-types.h.
Fix dumpconfig <node> to print only <node> without its siblings. (2.02.89)
Do not issue "Failed to handle a client connection" error if lvmetad killed.
Support lvchange --discards and -Z with thin pools.
Add discard LV segment field to reports.
Add --discards to lvcreate --thin.
Set discard and external snapshot features if thin pool target is vsn 1.1+.
Count percentage of completeness upwards not downwards when merging snapshot.
Skip activation when using vg/lvchange --sysinit -a ay and lvmetad is active.
Fix extending RAID 4/5/6 logical volumes
Fix test for PV with unknown VG in process_each_pv to ignore ignored mdas.
Update man pages with --activate ay option and auto_activation_volume_list.
Fix _alloc_parallel_area to avoid picking already-full areas for raid devices.
Use vgchange -aay instead of vgchange -ay in clmvd init script.
Add activation/auto_activation_volume_list to lvm.conf.
Add --activate ay to lvcreate, lvchange, pvscan and vgchange.
Add support for volume autoactivation using lvmetad.
Add --activate synonym for --available arg and prefer --activate.
Never issue discards when LV extents are being reconfigured, not deleted.
Allow release_lv_segment_area to fail as functions it calls can fail.
Open device read-only instead of read-write when obtaining readahead value.
Fix lvconvert thin pool error path NULL pointer dereference.
Detect create_instance() failure in pvscan_lvmetad_single().
Use 64-bit calculations for reserved memory and stack.
Fix missing sync of filesystem when creating thin volume snapshot.
Version 2.02.96 - 8th June 2012
===============================
Upstream source repo now fedorahosted.org git not sources.redhat.com CVS.
Fix error paths for regex filter initialization.
Re-enable partial activation of non-thin LVs until it can be fixed. (2.02.90)
Fix alloc cling to cling to PVs already found with contiguous policy.
Fix cling policy not to behave like normal policy if no previous LV seg.
Fix allocation loop not to use later policies when --alloc cling without tags.
Append _TO_LVSEG to names of internal A_CONTIGUOUS and A_CLING flags.
Add missing pkg init --with-systemdsystemunitdir in configure.in (2.02.92).
Fix division by zero if PV with zero PE count is used during vgcfgrestore.
Add initial support for thin pool lvconvert.
Fix lvrename for thin volumes (regression in for_each_sub_lv). (2.02.89)
Fix up-convert when mirror activation is controlled by volume_list and tags.
Warn of deadlock risk when using snapshots of mirror segment type.
Fix bug in cmirror that caused incorrect status info to print on some nodes.
Remove statement that snapshots cannot be tagged from lvm man page.
Disallow changing cluster attribute of VG while RAID LVs are active.
Fix lvconvert error message for non-mergeable volumes.
Allow subset of failed devices to be replaced in RAID LVs.
Prevent resume from creating error devices that already exist from suspend.
Improve clmvd singlenode locking for better testing.
Update and correct lvs man page with supported column names.
Handle replacement of an active device that goes missing with an error device.
Change change raid1 segtype always to request a flush when suspending.
Add udev info and context to lvmdump.
Add lvmetad man page.
Fix RAID device replacement code so that it works under snapshot.
Fix inability to split RAID1 image while specifying a particular PV.
Update man pages to give them all the same look&feel.
Fix lvresize of thin pool for striped devices.
For lvresize round upward when specifying number of extents.
For lvcreate with %FREE support rounding downward stripe alignment.
Change message severity to log_very_verbose for missing dev info in udev db.
Fix lvconvert when specifying removal of a RAID device other than last one.
Fix ability to handle failures in mirrored log in dmeventd plugin. (2.02.89)
Fix unlocking volume group in vgreduce in error path.
Cope when VG name is part of the supplied name in lvconvert --splitmirrors -n.
Fix exclusive lvchange running from other node. (2.02.89)
Add 'vgscan --cache' functionality for consistency with 'pvscan --cache'.
Keep exclusive activation in pvmove if LV is already active.
Disallow exclusive pvmove if some affected LVs are not exclusively activated.
Remove unused and wrongly set cluster VG flag from clvmd lock query command.
Fix pvmove for exclusively activated LV pvmove in clustered VG. (2.02.86)
Always free hash table on update_pvid_to_vgid() in lvmetad.
Update and fix monitoring of thin pool devices.
Check hash insert success in lock_vg in clvmd.
Check for buffer overwrite in get_cluster_type() in clvmd.
Fix global/detect_internal_vg_cache_corruption config check.
Update lcov Makefile target to support all dmeventd plugins.
Fix initializiation of thin monitoring. (2.02.92)
Cope with improperly formatted device numbers in /proc/devices. (2.02.91)
Exit if LISTEN_PID environment variable incorrect in lvmetad systemd handover.
Use pvscan --cache instead of vgscan in lvmetad scripts.
Fix fsadm propagation of -e option.
Fix fsadm parsing of /proc/mounts files (don't check for substrings).
Fix fsadm usage of arguments with space.
Fix arg_int_value alongside ARG_GROUPABLE --major/--minor for lvcreate/change.
Fix name conflicts that prevent down-converting RAID1 when specifying a device
Improve thin_check option passing and use configured path.
Add --with-thin-check configure option for path to thin_check.
Fix error message when pvmove LV activation fails with name already in use.
Better structure layout for device_info in dev_subsystem_name().
Change message severity for creation of VG over uninitialised devices.
Fix error path for failed toolcontext creation.
Detect lvm binary path in lvmetad udev rules.
Don't unlink socket on lvmetad shutdown if instantiated from systemd.
Restart lvmetad automatically from systemd if it exits from uncaught signal.
Fix warn msg for thin pool chunk size and update man for chunksize. (2.02.89)
Version 2.02.95 - 6th March 2012
================================
If unspecified, adjust thin pool metadata and chunk size to fit into 128MB.
Print just warning on thin pool check callback path for failing check.
Always use 64bit arithmetic with VG extent_size expression.
Validate udev structures in _insert_udev_dir().
Take repeatable --major --minor with pvscan --cache instead of major:minor.
Scan all devices for lvmetad if 'pvscan --cache' used without device list.
Populate lvmcache from lvmetad before displaying PVs in pvscan. (2.02.94)
Suppress incorrect -n pvscan warning now always displayed. (2.02.94)
Version 2.02.94 - 3rd March 2012
================================
Add support to execute thin_check with each de/active of thin pool.
Fix automatic estimation of metadata device size for thin pool.
Test for alloc fail from _alloc_pv_segment() in _extend_pv().
Check for alloc fail from get_segtype_from_string() in _lvcreate_params().
Add _rimage as reserved suffix to lvm.8 man page.
Improve error logging from mpath filter.
Check for allocation failure in hold_lock() in clvmd.
Use set_lv() (wipe initial 4KiB) for non zeroed thin volume.
Allow cluster mirrors to handle the absence of the checkpoint lib (libSaCkpt).
Revert free of allocated segtype in init segment error path (2.02.89).
Test dm_hash_insert() failures in filter-persistent.c and fid_add_mda().
Ensure clvmd message is always NUL-terminated after read.
Add some close() and dev_close() error path backtraces.
Set stdin/stdout/stderr to /dev/null for polldaemon.
Limit the max size of processed clvmd message to ~8KB.
Do not send uninitialised bytes in cluster error reply messages.
Use unsigned type for bitmask instead of enum type for lvm properties.
Add missing cleanup of excl_uuid hash on some exit paths of clvmd.
Check for existence of vg_name in _format1/_pool_vg_read().
Fix missing break in _format_pvsegs (2.02.92).
Test seg pointer for non-null it in raid_target_percent error path.
Check for errors in _init_tags() during config loading.
Always check result of _set_vg_name() in lvcreate.
Drop unused call to uname() during clvmd initialization.
Test allocation result in sysfs filter creation.
Limit sscanf parameters with buffer size in clvmd get_initial_state().
Use const lv pointer for lv_is_active...() functions.
Use same signed numbers in _mirrored_transient_status().
Support 'pvscan --cache' to update lvmetad state from specific PVs.
Provide new metadata daemon for testing with configure --enable-lvmetad .
Integrate client-side lvmetad into build.
Version 2.02.93 - 23rd February 2012
====================================
Require number of stripes to be greater than parity devices in higher RAID.
Fix allocation code to allow replacement of single RAID 4/5/6 device.
Check all tags and LV names are in a valid form in vg_validate.
Add tmpfiles.d style configuration for lvm2 lock and run directory.
Add configure --with-tmpfilesdir for dir holding volatile-file configuration.
Allow 'lvconvert --repair' to operate on RAID 4/5/6.
Fix build_parallel_areas_from_lv to account correctly for raid parity devices.
Print message when faulty raid devices have been replaced.
Version 2.02.92 - 20th February 2012
====================================
Read dmeventd monitoring config settings for every lvm command.
For thin devices, initialize monitoring only for thin pools not thin volumes.
Make conversion from a synced 'mirror' to 'raid1' not cause a full resync.
Properly test buffer for unit check in units_to_bytes().
Add configure --with-systemdsystemunitdir.
Add check for allocation failure in _build_matcher().
Add check for rimage name allocation failure in _raid_add_images().
Add check for mda_copy failure in _text_pv_setup().
Add check for _mirrored_init_target failure.
Add free_orphan_vg.
Skip pv/vg_set_fid processing if the fid is same.
Check for foreach loop errors in _vg_read_orphans() (2.02.91).
Clean error paths for format instance creation (2.02.91).
Release vg in error path of _format1_vg_read() instead of just free().
Report allocation failure for allocation of PV structure.
Add clvmd init dependency on dlm service when running with new corosync.
Version 2.02.91 - 12th February 2012
====================================
Remove PV-based format instances (which are no longer needed).
Link all orphan PVs directly to a per-format global orphan VG.
Refactor lvmcache around an internal API.
Stop processing lvextend if trying to extend a mirror that is being recovered.
Add pool_below_threshold() function to check thin pool percent status.
Fix test for snap percent for failing merge when removing LV.
Switch int to void return for str_list_del().
Fix error path handling in _build_desc().
Add range test for device number in _scan_proc_dev().
Use signed long for sysconf() call in cmirrord.
Do not write in front of log buffer in print_log().
Add boundary test for number of mirror devs and logs.
Check that whole locking_dir fits _lock_dir buffer in init_file_locking().
Use list functions for label_exit().
Ensure strncpy() function always ends with '\0'.
Set status in _fsadm_cmd() for error path.
Add missing deps for lvm2api for rebuild when lvm-internal is changed.
Fix resource leaks for failing allocation of formats (lvm1/2,pool).
Release allocated resources in error path for composite_filter_create().
Do not use lstat() results when failed in _rm_link().
Remove a "waiting for another thread" log message from dmeventd plugins.
Version 2.02.90 - 1st February 2012
===================================
sync_local_dev_names before (re)activating mirror log for initialisation.
Disable partial activation for thin LVs and LVs with all missing segments.
Do not print warning for pv_min_size between 512KB and 2MB.
Clean up systemd unit ordering and requirements.
Fix lcov reports when srcdir != builddir.
Allow ALLOC_NORMAL to track reserved extents for log and data on same PV.
Automatically detect whether corosync clvmd needs to use confdb or cmap.
Fix data% report for thin volume used as origin for non-thin snapshot.
Version 2.02.89 - 26th January 2012
===================================
Add missing check for uname result in clvmd TEST processing.
Fix memleak in target_version() error path (unsupported LIST_VERSIONS).
Limit data_alignment and data_alignment_offset to 32bit values.
Check for correctness of uint64 dev_size value in format_text.
Thin pools have segment fields thin_count, zero, transaction_id.
Add data_percent and metadata_percent for thin pools to lvs -v.
Add data_lv & metadata_lv fields to lvs for thin pools.
Add data_percent & pool_lv fields to lvs for thin volumes.
Rename origin_only parm to use_layer for lv_info and use with thin LVs.
Add lv_thin_pool_transaction_id to read the transaction_id value.
Use {suspend,resume}_origin_only when up-converting RAID, as mirrors do.
Always add RAID metadata LVs to deptree (even when origin_only is set).
Change exclusive LV activation logic to try local node before remote nodes.
Add CLVMD_FLAG_REMOTE to skip processing on local node.
Prompt if request is made to remove a snapshot whose "Merge failed".
Allow removal of an invalid snapshot that was to be merged on next activation.
Don't allow a user to merge an invalid snapshot.
Use m and M lv_attr to indicate that a snapshot merge failed in lvs.
Differentiate between snapshot status of "Invalid" and "Merge failed".
Report snapshot usage percent of origin volume when a snapshot is merging.
Require global/lvdisplay_shows_full_device_path for (bogus) lvm1-style paths.
Do not report linear segtype for non-striped targets.
Record creation host & time for each LV and report as lv_time & lv_host.
Make error message hit when preallocated memlock memory exceeded clearer.
Use R lv_attr to indicate read-only activation of non-read-only device in lvs.
Show read-only activation override in lvdisplay & add 4 to perms in -c.
Add activation/read_only_volume_list to override LV permission in metadata.
Give priority to emcpower devices with duplicate PVIDs.
Add check for error in _adjust_policy_params() (lvextend --use-policies).
Round specified percentages upwards (%LV, %VG...) when resizing LVs.
Use dmeventd_lvm2_command in dmeventd plugins snapshot, raid, mirror.
Add helper dmeventd_lvm2_command() to libdevmapper-event-lvm2 library.
Update documentation for dmeventd.
Remove unnecessary stat before opening device in dev_open_flags.
Reduce number of lstat calls when selecting device alias.
Add _dev_init to initialize common struct device members.
Always zalloc struct device during initialization.
Fix missing thread list manipulation protection in dmeventd.
Do not derefence lv pointer in _percent_run() function before NULL check.
Allow empty strings for description and creation_host config fields.
Issue deprecation warning when removing last lvm1-format snapshot.
Reinstate support for snapshot removal with lvm1 format. (2.02.86)
Add policy-based automated repair of RAID logical volumes.
Don't allow two images to be split and tracked from a RAID LV at one time.
Don't allow size change of RAID LV that is tracking changes for a split image.
Don't allow size change of RAID sub-LVs independently.
Don't allow name change of RAID LV that is tracking changes for a split image.
Do not allow users to change the name of RAID sub-LVs independently.
Do not allow users to change permissions on RAID sub-LVs.
Allow lvconvert to replace specified devices in a RAID array.
Add activation/use_linear_target enabled by default.
Use gcc warning options only with .c to .o compilation.
Move y/n prompts to stderr and repeat if response has both 'n' and 'y'.
Replace the unit testing framework with CUnit (--enable-testing).
Fix dmeventd snapshot monitoring when multiple extensions were involved.
Don't ignore configure --mandir and --infodir.
Drop pool memory allocated within lv_has_target_type().
Reduce stack allocation of some PATH_MAX sized char buffers.
Unlock memory before writing metadata.
Add query before removing snapshots when inactive snapshot origin is removed.
Allow changing availability state of snapshots.
Skip non-virtual snapshots for availability change for lvchange with vg name.
Skip adjusting mirror region size unless mirror or raid.
Reorder prompt conditions for removal of active volumes.
Avoid 'mda inconsistency' by properly registering UNLABELLED_PV flag.(2.02.86)
Fix --enable-static_link unless using --enable-dmeventd / --enable-udev_sync.
Move gentoo MAKEDEV to /sbin in lvm2create_initrd.
Add filter to avoid scan of device if it is part of active multipath.
Add missing default $LVM_VG_NAME usage for snapshots.
Avoid extent_count overflow with lvextend.
Add missing lvrename mirrored log recursion in for_each_sub_lv.
Improve lv_extend stack reporting.
Increase virtual segment size instead of creating multiple segment list.
Add last_seg(lv) internal function.
Support empty string for log/prefix.
Disallow mirrored logs for cluster mirrors. (2.02.72)
Don't print char type[8] as a plain string in pvck PV type.
Use vg memory pool implicitly for vg read.
Always use vg memory pool for allocated lv segment.
Remove extra 4kB buffer allocated on stack in print_log().
Make move_lv_segment non-static function and use dm_list function.
Pass exclusive LV locks to all nodes in the cluster.
Improve lvcreate chunksize man page description.
Improve man page style for lvcreate & lvs.
Avoid recursive calls to dmeventd in its LVM plugins.
Log dev name now returned to kernel for registering during cmirror CTR.
Fix lv_info open_count test for disabled verify_udev_operations. (2.02.86)
Simplify code for lvm worker thread in clvmd.
Use pthread_barrier to synchronize clvmd threads at startup.
Limit clvmd's thread size to 128KiB and ignore activation/reserved_stack.
Reduce default preallocated stack size to 64KiB.
Add check for access through NULL pointer when refresh_filter() fails.
Use pthread condition for SINGLENODE lock implementation.
Improve backtrace reporting for some dev_manager_ functions.
Change message severity to log_warn when symlink creation fails.
Add ability to convert mirror segtype to RAID1 segtype.
Add ability to convert from linear to RAID1.
Add ability to extend mirrors with '--nosync' option.
Fix splitmirror LV names to maintain consistent state in a cluster.
Apply appropriate udev flags when suspending/resuming mirror sub-LVs.
Fix vgsplit to handle mirrored logs.
Clarify multi-name device filter pattern matching explanation in lvm.conf.
Introduce revert_lv for better pvmove cleanup.
Replace incomplete pvmove activation failure recovery code with a message.
Abort if _finish_pvmove suspend_lvs fails instead of cleaning up incompletely.
Change suspend_lvs to call vg_revert internally.
Change vg_revert to void and remove superfluous calls after failed vg_commit.
Use execvp for CLVMD restart to preserve environment settings.
Restart CLVMD with same cluster manager.
Fix log_error() usage in raid and unknown segtype initialisation.
Improve testing Makefile.
Fix install_ocf make target when srcdir != builddir. (2.02.80)
Support env vars LVM_CLVMD_BINARY and LVM_BINARY in clvmd.
Fix restart of clvmd (preserve exlusive locks). (2.02.64)
Add 'Volume Type' lv_attr characters for RAID and RAID_IMAGE.
Add activation/retry_deactivation to lvm.conf to retry deactivation of an LV.
Replace open_count check with holders/mounted_fs check on lvremove path.
Disallow the creation of mirrors (mirror or raid1 segtype) with only one leg.
Cleanup restart clvmd code (no memory allocation, debug print passed args).
Add all exclusive locks to clvmd restart option args.
Always send the whole clvmd packet header in refresh commands.
Add missing error checks for some system calls in cmirrord.
Add missing log_error() to lvresize command when fsadm tool fails.
Add support for DM_DEV_DIR device path into fsadm script.
Support different PATH setting for fsadm script testing.
Surround all executed commands with quotes in fsadm script.
Fix missing '$' in test for content of "$LVM" in fsadm script.
Move debug message in exec_cmd after sync_local_dev_names.
Fix clvmd processing of invalid request on local socket.
Fix command line option decoding.
Reset LV status when unlinking LV from VG.
Fix overly-strict extent-count divisibility requirements for striped mirrors.
Fix rounding direction in lvresize when reducing volume size.
Fix possible overflow of size if %FREE or %VG is used.
Fix vgchange activation of snapshot with virtual origin.
Activate virtual snapshot origin exclusively (only on local node in cluster).
Fix lv_mirror_count to handle mirrored stripes properly.
Fix failure to down-convert a mirror to linear due to udev "dev open" conflict
Fix mirrored log creation when PE size is small: use log_size >= region_size.
Fix log size calculation when only a log is being added to a mirror.
Add 7th lv_attr char to show the related kernel target.
Terminate pv_attr field correctly. (2.02.86)
Fix 'not not' typo in pvcreate man page.
Improve man page style for fsadm, lvreduce, lvremove, lvrename & lvresize.
Support break for vgchange and vgrefresh operation.
Switch int to unsigned type for pvmetadatacopies for pv_create().
Replace :space: with [\t ] for awk in vgimportclone (not widely supported).
Begin using 64-bit status field flags.
Detect sscanf recovering_region input error in cmirrord pull_state().
Fix error path bitmap leak in cmirrord import_checkpoint().
Log unlink() error in cmirrord remove_lockfile().
Remove incorrect requirement for -j or -m from lvchange error message.
Fix unsafe table load when splitting off smaller mirror from a larger one.
Use size_t return type for text_vg_export_raw() and export_vg_to_buffer().
Add configure --enable-lvmetad for building the (experimental) LVMetaD.
Fix resource leak when strdup fails in _get_device_status() (2.02.85).
Directly allocate buffer memory in a pvck scan instead of using a mempool.
Add configure --with-thin for segtypes "thin" and "thin_pool".
Fix raid shared lib segtype registration (2.02.87).
Version 2.02.88 - 19th August 2011
==================================
Remove incorrect 'Breaking' error message from allocation code. (2.02.87)
Add lvconvert --merge support for raid1 devices split with --trackchanges.
Support lvconvert of -m1 raid1 devices to a higher number.
Add --trackchanges support to lvconvert --splitmirrors option for raid1.
Support splitting off a single raid1 rimage in lvconvert --splitmirrors.
Use sync_local_dev_names when reducing number of raid rimages in lvconvert.
Add -V as short form of --virtualsize in lvcreate.
Fix make clean not to remove Makefile. (2.02.87)
Version 2.02.87 - 12th August 2011
==================================
Fix make distclean to remove stray dmeventd and exported symbols files.
Add global/detect_internal_vg_cache_corruption to lvm.conf.
Use memory pool locking to check for corruption of internal VG structs.
Cache and share generated VG structs.
Fix possible format instance memory leaks and premature releases in _vg_read.
Suppress locking error messages in monitoring init scripts.
If pipe in clvmd fails return busy instead of using uninitialised descriptors.
Add ability to reduce the number of mirrors in raid1 arrays to lvconvert.
Add dmeventd plugin for raid.
Replace free_vg with release_vg and move it to vg.c.
Remove INCONSISTENT_VG flag from the code.
Remove lock from cache in _lock_vol even if unlock fails.
Initialise clvmd locks before lvm context to avoid open descriptor leaks.
Remove obsolete gulm clvmd cluster locking support.
Suppress low-level locking errors and warnings while using --sysinit.
Remove unused inconsistent_seqno variable in _vg_read().
Remove meaningless const type qualifiers on cast type.
Add test for fcntl error in singlenode client code.
Remove --force option from lvrename manpage.
Add global/mirror_segtype_default to pick md raid or dm mirror as default.
Add configure --with-raid for new segtype 'raid' for MD RAID 1/4/5/6 support.
Change DEFAULT_UDEV_SYNC to 1 so udev_sync is used if there is no config file.
Add systemd unit file to provide lvm2 monitoring.
Compare file size (as well as timestamp) to detect changed config file.
Version 2.02.86 - 8th July 2011
===============================
Remove unnecessary warning in pvcreate for MD linear devices.
Move snapshot removal activation logic into lib/activate.
Cope with a PV only discovered missing when creating deptree.
Abort operation if dm_tree_node_add_target_area fails.
Add activation/checks to lvm.conf to perform additional ioctl validation.
Always preload on suspend, even if no metadata changed (lvchange --refresh).
When suspending, automatically preload newly-visible existing LVs.
Teardown any stray devices with $COMMON_PREFIX during test runs.
Reinstate correct permissions when creating mirrors. [2.02.85]
Append 'm' attribute to pv_attr for missing PVs.
Annotate CLVMD_CMD_SYNC_NAMES in decode_cmd.
Remove enforcement of udev verification when using non-standard /dev location.
Keep an exclusive mirror non-clustered if reloaded e.g. during conversion.
Reject allocation if number of extents is not divisible by area count.
Fix cluster mirror creation to work with new mirror allocation algorithm.
Ignore activation/verify_udev_operations if dm kernel driver vsn < 4.18.
Add activation/verify_udev_operations to lvm.conf, disabled by default.
Call vg_mark_partial_lvs() before VG structure is returned from the cache.
Remove unused internal flag ACTIVATE_EXCL from the code.
Remove useless test of ACTIVATE_EXCL in lv_add_mirrors() clustered code path.
Add lv_activate_opts structure for activation (replacing activation flags).
Ignore inconsistent pre-commit metadata on MISSING_PV devs while activating.
Add proper udev library context initialization and finalization to liblvm.
Fix last snapshot removal to avoid table reload while a device is suspended.
Use dm_get_suspended_counter in replacement critical_section logic.
Downgrade critical_section errors to debug level until it is moved to libdm.
Fix ignored background polling default in vgchange -ay.
Fix pvmove activation sequences to avoid trapped I/O with multiple LVs.
Annotate critical section debug messages.
Fix reduction of mirrors with striped segments to always align to stripe size.
Validate mirror segments size.
Include lvmetad development code in tree.
Fix extent rounding for striped volumes never to reduce more than requested.
Fix create_temp_name to replace any '/' found in the hostname with '?'.
Always use append to file in lvmdump. selinux policy may ban file truncation.
Propagate test mode to clvmd to skip activation and changes to held locks.
Defer writing PV labels until vg_write.
Store label_sector only in struct physical_volume.
Permit --available with lvcreate so non-snapshot LVs need not be activated.
Report sector containing label in verbose message.
Clarify error message when unable to convert an LV into a snapshot of an LV.
Add and use dev_open_readonly and variations.
Do not log a superfluous stack message when the lv is properly processed.
Do not issue an error message when unable to remove .cache on read-only fs.
Avoid memlock size mismatch by preallocating stdio line buffers.
Rewrite vgreduce --removemissing --force to share lvconvert code.
Reorganize lvconvert --repair code to allow reuse.
Version 2.02.85 - 29th April 2011
=================================
Add new obtain_device_list_from_udev setting to lvm.conf.
Obtain device list from udev by default if LVM2 is compiled with udev support.
Add test for vgimportclone and querying of vgnames with duplicate pvs.
Avoid use of released memory when duplicate PV is found.
Add "devices/issue_discards" to lvm.conf.
Issue discards on lvremove and lvreduce etc. if enabled and supported.
Add seg_pe_ranges and devices fields to liblvm.
Fix incorrect tests for dm_snprintf() failure.
Fix some unmatching sign comparation gcc warnings in the code.
Support lv_extend() on empty LVs.
Avoid regenerating cache content when exported VG buffer is unchanged.
Extend the set of memory regions that are not locked to memory.
Workaround some problems when compiled for valgrind memcheck.
Support controlled quit of the lvm_thread_fn function in clvmd.
Fix reading of unallocated memory in lvm1 format import function.
Replace several strncmp() calls with id_equal().
Fix lvmcache_info transfer to orphan_vginfo in _lvmcache_update_vgname().
Fix -Wold-style-definition gcc warnings.
Rename MIRROR_NOTSYNCED to LV_NOTSYNCED.
Fix _move_lv_segments to handle empty LVs.
Fixes for lvconvert (including --repair) of temporary mirror stacks.
Avoid potential loop when removing mirror images.
Fix mirror removal always to take account of preferences as to which.
Fix MIRRORED flag usage.
Remove error messages issued by device_is_usable when run as non-root.
Add missing \0 for grown debug object in _bitset_with_random_bits().
Fix allocation of system_id buffer in volume_group structure.
Fix readlink usage inside get_primary_dev().
Use format instance mempool where possible and adequate.
Call destroy_instance for any PVs found in VG structure during vg_free call.
Add new free_pv_fid fn and use it throughout to free all attached fids.
Use only vg_set_fid and new pv_set_fid fn to assign the format instance.
Make create_text_context fn static and move it inside create_instance fn.
Add mem and ref_count fields to struct format_instance for own mempool use.
Use new alloc_fid fn for common format instance initialisation.
Optimise _get_token() and _eat_space().
Add _lv_postorder_vg() to improve efficiency for all LVs in VG.
Add gdbinit script for debugging.
Use hash tables to speedup string search in vg_validate().
Refactor allocation of VG structure adding alloc_vg().
Avoid possible endless loop in _free_vginfo when 4 or more VGs have same name.
Use empty string instead of /dev// for LV path when there's no VG.
Don't allocate unused VG mempool in _pvsegs_sub_single.
Do not send uninitialised bytes in local clvmd messages.
Support --help option for clvmd and return error for unknown option.
Avoid reading freed memory when printing LV segment type.
Fix syslog initialisation in clvmd to respect lvm.conf setting.
Fix possible overflow in maximum stripe size and physical extent size.
Improve pvremove error message when PV belongs to a VG.
Extend normal policy to allow mirror logs on same PVs as images if necessary.
Improve cling policy to recognise PVs already used during the transaction.
Improve normal allocation algorithm to include clinging to existing areas.
Add allocation/maximise_cling & mirror_logs_require_separate_pvs to lvm.conf.
Adapt metadata balancing code to work with metadata handling changes.
Add old_id field to physical_volume and fix pvchange -u for recent changes.
Allow pvresize on a PV with two metadata areas.
Change pvcreate to use new metadata handling interface.
Restructure existing pv_setup and pv_write and add pv_initialise.
Add internal interface to support adding and removing metadata areas.
Allow internal indexing of metadata areas (PV id + mda order).
Generalise internal format_instance infrastrusture for PV and VG use.
Handle decimal digits with --units instead of ignoring them silently.
Fix remaining warnings and compile with -Wpointer-arith.
Fix gcc warnings for unused variables and const casts.
Add stack backtraces for error paths in process_each_lv().
Temporarily suppress error from calling yes_no_prompt while locks are held.
Replace void* with char* arithmetic in _text_write, _text_read & send_message.
Fix compilation without DEVMAPPER_SUPPORT.
Remove fs_unlock() from lv_suspend error path.
Allow memory to stay locked between leaving and re-entering critical sections.
Rename memlock to critical_section throughout.
Make pv_min_size configurable and increase to 2048KB to exclude floppy drives.
Add find_config_tree_int64 to read 64-bit ints from config.
Ensure resuming exclusive cluster mirror continues to use local mirror target.
Clear temporary postorder LV status flags to allow re-use with same LV struct.
Remove invalid snapshot umount mesg which floods syslog from dmeventd plugin.
Add extended examples to pvmove man page.
Support LVM_TEST_DEVDIR env var for private /dev during testing.
Version 2.02.84 - 9th February 2011
===================================
Fix CRC32 calculation on big endian CPU (2.02.75).
Version 2.02.83 - 4th February 2011
===================================
Allow exclusive activation of snapshots in a cluster.
Leave EX lock unchanged when suspending a device in clvmd.
Use sync_dev_names in unlock_vg macro for cluster-wide dev name sync.
Fix fs operation stack handling when multiple operations on same device.
Increase hash table size to 1024 lv names and 64 pv uuids.
Remove fs_unlock() from lv_resume path.
Fix wipe size when setting up mda.
Remove unneeded checks for open_count in lv_info().
Synchronize with udev before checking open_count in lv_info().
Allow CLVMD_CMD_SYNC_NAMES to be propagated around the cluster if requested.
Add "dmsetup ls --tree" output to lvmdump.
Fix udev synchronization with no-locking --sysinit (2.02.80).
Improve man page style consistency for pvcreate, pvremove, pvresize, pvscan.
Avoid rebuilding of uuid validation table.
Improve lvcreate error text from insufficient "extents" to "free space".
Always use O_DIRECT when opening block devices to check for partitioning.
Version 2.02.82 - 24th January 2011
===================================
Bring lvscan man page up-to-date.
Fix lvchange --test to exit cleanly.
Add change_tag to toollib.
Allow multiple pvchange command line options to be specified together.
Do not fail pvmove polling if another process cleaned up first.
Avoid clvmd incrementing dlm lockspace reference count more than once.
Add -f (don't fork) option to clvmd and fix clvmd -d<num> description.
Version 2.02.81 - 17th January 2011
===================================
Do not scan devices in dev_reset_error_count().
Skip unnecessary LOCK_NULL unlock call during volume deactivation.
Skip fs_unlock when calling exec_cmd within activation code (for modprobe).
Extend exec_cmd params to specify when device sync (fs_unlock) is needed.
Replace fs_unlock by sync_local_dev_names to notify local clvmd. (2.02.80)
Introduce sync_local_dev_names and CLVMD_CMD_SYNC_NAMES to issue fs_unlock.
Accept fusion fio in device type filter.
Add ability to convert mirror log type from disk to mirrored.
Version 2.02.80 - 10th January 2011
===================================
Use same dm cookie for consecutive dm ops in same VG to reduce udev waits.
Speed up command processing by caching resolved config tree.
Pass config_tree to renamed function import_vg_from_config_tree().
Detect NULL handle in get_property().
Fix superfluous /usr in ocf_scriptdir instalation path.
Add --with-ocfdir configurable option.
Add aclocal.m4 (for pkgconfig).
Fix memory leak in persistent filter creation error path.
Check for errors setting up dm_task struct in _setup_task().
Fail polldaemon creation when lvmcache_init() fails.
Return PERCENT_INVALID for errors in _copy_percent() and _snap_percent().
Remove some unused variables.
Improve general lvconvert man page description.
Return 0 from cmirrord initscript 'start' if daemon is already running.
Fix wrongly paired unlocking of VG_GLOBAL in pvchange. (2.02.66)
Add backtraces for backup and backup_remove fail paths.
Detect errors from dm_task_set calls in _get_device_info (dmeventd).
Add backtraces for archive and backup_locally in check_current_backup().
Fix memory leak in debug mode of restart_clvmd() error path.
Log error message for pthread_join() failure in clvmd.
Version 2.02.79 - 20th December 2010
====================================
Remove some unused variables.
Add missing test for reallocation error in _find_parallel_space().
Add checks for allocation errors in config node cloning.
Fix error path if regex engine cannot be created in _build_matcher().
Use char* arithmetic in target_version(), _process_all() & _targets().
Fixing const cast gcc warnings in the code.
Check read() and close() results in _get_cmdline().
Add const for struct config_node usage.
Fix NULL pointer check in error path in clvmd do_command(). (2.02.78)
Fix device.c #include to ensure 64-bit fopen64 use. (2.02.51)
Add copy_percent and snap_percent to liblvm.
Enhance vg_validate to ensure integrity of LV and PV structs referenced.
Enhance vg_validate to check composition of pvmove LVs.
Create /var/run/lvm directory during clvmd initialisation if missing.
Use new dm_prepare_selinux_context instead of dm_set_selinux_context.
Avoid revalidating the label cache immediately after scanning.
Support scanning for a single VG in independent mdas.
Don't skip full scan when independent mdas are present even if memlock is set.
Set cmd->independent_metadata_areas if metadata/dirs or disk_areas in use.
Cope better with an undefined target_percent operation in _percent_run.
Avoid writing to freed memory in vg_release and rename to free_vg. (2.02.78)
Version 2.02.78 - 6th December 2010
===================================
Abort if segment tag allocation fails in pool format _add_stripe_seg.
Abort in _mirrored_transient_status if referenced log/image LV is not active.
Add backtraces for dev_set() and dev_close_immediate() errors in set_lv().
Log any unlink() error in clvmd remove_lockfile().
Log any pipe write() or close() errors in clvmd child_init_signal().
Detect if orphan vginfo was lost from cache before _lvmcache_update_vgname().
Do a full rescan if some device is missing in lvm1 format read_pvs_in_vg.
Add missing check that dm_pool_create succeeded in write_config_node().