Milan Broz
66086ce962
Fix double releasing of vg when repairing of vg is requested.
...
Several commands calls process_each_vg() and in provided
callback it explicitly recovers VG if inconsistent.
(vgchange, vgconvert, vgscan)
It means that old VG is released and reread but the function
above (process_one_vg) tries to unlock and release old VG.
Patch moves the repair logic into _process_one_vg() function.
It always tries to read vg (even inconsistent) and then decides
what to do according new defined parameter.
Also patch unifies inconsistent error messages.
The only slight change if for vgremove command, where
it now tries to repair VG before it removes if force arg is given.
(It works similar way before, just the order of operation changed).
2009-06-05 20:00:52 +00:00
Milan Broz
771e191e99
Fix rename of active snapshot with virtual origin.
...
Code must suspend/resume virtual origin too when renaming
snaphsot otherwise in kernel old name remains.
2009-06-01 15:55:06 +00:00
Milan Broz
31f55a07db
Fix convert polling to ignore LV with different UUID.
...
When mirror convert polling is started (mainly as backgound process,
in lvchange -a y or in lvconvert itself) it tries to read VG
and LV identified by its name.
Unfortunatelly, the VG can have already different LV under the same name,
and various more or less funny things can happen (note that
_finish_lvconvert_mirror suspends the volume for example).
(the typical example is our testing script which continuously recreates
LVs under the same name in the same VG.)
This patch adds optional uuid parameter which helps to properly
select the monitoring object. For lvconvert polling it is set to LV UUID
and both _get_lvconvert_vg and _get_lvconvert_lv uses it to read proper VG/LV.
(In the pvmove case it is NULL, here we poll for physical volume name).
2009-06-01 14:43:27 +00:00
Milan Broz
59d06d4dc7
Fix log allocation segfault (fix previous commits).
...
If there is no free area for log, code should break the loop.
(Otherwise it uses uninitializes areas later.)
Easily reproducible using lvconvert --repair
- kill device with log
- run lvconvert --repair vg/lv (with no PV usable for log)
2009-06-01 14:23:38 +00:00
Milan Broz
c1fdeec999
Fix readahead calculation problems.
...
During vgreduce is failed mirror image replaced with error segment,
this segmant type has always area_count == 0.
Current code expects that there is at least one area with device,
patch fixes it by additional check (fixes segfault during vgreduce).
Also do not calculate readahead in every lv_info call, we only need
to cache PV readahead before activation calls which locks memory.
2009-06-01 12:43:31 +00:00
Alasdair Kergon
eca971ca6c
Remove verbose 'visited' messages.
2009-05-30 01:54:29 +00:00
Alasdair Kergon
5cffbf0bb0
Handle multi-extent mirror log allocation when smallest PV has only 1 extent.
2009-05-30 00:09:27 +00:00
Alasdair Kergon
5746e2e769
When creating new LV, double-check that name is not already in use.
2009-05-28 01:59:37 +00:00
Alasdair Kergon
ea0e5e6ea8
Rename internal vorigin LV to match visible LV.
2009-05-28 00:29:14 +00:00
Alasdair Kergon
99113cc588
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.
2009-05-27 18:19:21 +00:00
Alasdair Kergon
ea91a71bb9
Fix counting of virtual origin LVs in vg_validate. (mbroz)
2009-05-27 13:19:34 +00:00
Alasdair Kergon
25a2e7b80e
Pre-release cleanups.
2009-05-21 03:04:52 +00:00
Milan Broz
d396100278
Use readahead of underlying device and not default (smaller) one.
...
When we are stacking LV over device, which has for some reason
increased read_ahead (e.g. MD RAID), the read_ahead hint
for libdevmapper is wrong (it is zero).
If the calculated read_ahead hint is zero, patch uses read_ahead of underlying device
(if first segment is PV) when setting DM_READ_AHEAD_MINIMUM_FLAG.
Because we are using dev-cache, it also store this value to cache for future use
(if several LVs are over one PV, BLKRAGET is called only once for underlying device.)
This should fix all the reamining problems with readahead mismatch reported
for DM over MD configurations (and similar cases).
2009-05-20 11:09:49 +00:00
Milan Broz
a01e55b6ec
Use lock query instead of activate_lv_excl
...
- switch lvremove to not force activate volume when removing
- ditto for force resync
- fix some wrong return codes in lvchange_resync()
2009-05-20 09:55:33 +00:00
Milan Broz
970f241c52
Check max_lv on only place and force the check only for new volume.
...
We can temporarily violate max_lv during mirror conversion etc.
(If the operation fails, orphan mirror images are visible to administrator
for manual remove for example. Not that this should ever happen:-)
Force limit only for lvcreate (and vg merge) command.
Patch also adds simple max_lv tests into testsuite
2009-05-13 21:29:10 +00:00
Milan Broz
82cf926094
Remove unneeded import parameter from lv_create_empty.
2009-05-13 21:28:31 +00:00
Milan Broz
afd9ba98c1
Merge lv_is_displayable and lv_is_visible.
...
Displayable and visible is the same thing.
volumes_count(vg) is now vg_visible_lvs() and always
returns number of LVs from user perspective.
2009-05-13 21:27:43 +00:00
Milan Broz
59d8429cb3
Introduce lv_set_visible & lv_set_invisible and use lv_is_visible always.
...
The vg->lv_count parameter now includes always number of visible
logical volumes.
Note that virtual snapshot volume (snapshotX) is never visible,
but it is stored in metadata with visible flag.
2009-05-13 21:26:45 +00:00
Milan Broz
b14c5af76d
Fix lv_is_visible to handle virtual origin.
...
Snapshot is visible if its origin is marked visible,
or if the origin is virtual.
2009-05-13 21:25:45 +00:00
Milan Broz
0b706ac672
Introduce link_lv_to_vg and unlink_lv_from_vg functions.
...
link_lv_to_vg and unlink_lv_from_vg are the only functions
for adding/removing logical volume from volume group.
Only these function should manipulate with vg->lvs list.
2009-05-13 21:25:01 +00:00
Milan Broz
d60f341d96
Remove vg->lv_count and use counter function.
...
This should not cause problems but simplifies code a lot.
(the volumes_count is merged and renamed with lvs_visible
function by following patch.)
2009-05-13 21:22:57 +00:00
Milan Broz
4b13d5a823
Fix snapshot segment import to not use duplicate segments & replace.
...
The snapshot segment (snapshotX) is created twice
during the text metadata segment processing.
This can cause temporary violation of max_lv count.
Simplify the code, snapshot segment is properly initialized
in init_snapshot_seg function now and do not need to be replaced
by vg_add_snapshot call.
The vg_add_snapshot() is now usefull only for adding new
snapshot and it shares the same initialization function.
The snapshot name is always generated, name paramater can be
removed from function call.
2009-05-13 21:21:58 +00:00
Alasdair Kergon
b44e3bdc86
better variable name for snapshot counting
2009-05-13 01:48:18 +00:00
Milan Broz
2f9a9d1a7f
Remove snapshot_count from VG and use function instead.
2009-05-12 19:12:09 +00:00
Milan Broz
920e68d603
Fix first_seg() call for empty segment list.
...
The seg variable is temporary variable for list iterator,
code cannot expect that after iteration it remains NULL
(it contains non-NULL pointer here id list is empty).
Patch fixes first_seg function so it now correctly returns NULL
for empty segment list.
2009-05-12 19:09:21 +00:00
Dave Wysochanski
e08ad14696
Fix error path in vg_make_handle().
...
Enter the error condition if either of the allocations fail, and
don't use dm_pool_zalloc if dm_pool_create fails.
2009-04-28 17:46:47 +00:00
Alasdair Kergon
87f42fda5e
Add sparse devices: lvcreate -s --virtualoriginsize (hidden zero origin).
...
Add lvs origin_size field.
Fix linux configure --enable-debug to exclude -O2.
Still a few rough edges, but hopefully usable now:
lvcreate -s vg1 -L 100M --virtualoriginsize 1T
2009-04-25 01:17:59 +00:00
Petr Rockai
e1ea382999
A more thorough PV equality test (that also copes better with MISSING_PVs) in
...
_is_mirror_image_removable.
2009-04-23 16:43:01 +00:00
Petr Rockai
eeadae1b6a
Do not include MISSING_PVs in allocation maps.
2009-04-23 16:41:27 +00:00
Milan Broz
e5656d86d2
Alloc PV internal structure from VG mempool if possible.
2009-04-22 09:31:30 +00:00
Milan Broz
8f3fd69ffa
Move metadata backup call after vg_commit.
...
The backup() call store metadata from memory.
But in cluster backup() call performs
remote nodes metadata backup and it reads data from disk.
For metadata backup consistency,
patch moves all backup() calls after vg_commit.
(Moreover, some tools already do that this way.)
2009-04-21 14:31:57 +00:00
Milan Broz
405366fd48
Properly release VG memory pool in metadata manipulation code.
2009-04-10 10:01:08 +00:00
Milan Broz
8e1d5615b4
Introduce memory pool per volume group.
...
Since now, all code reading volume group is responsible for releasing
the memory allocated by calling vg_release(vg).
(For simplicity of use, vg_releae can be called for vg == NULL,
the same logic like free(NULL)).
Also providing simple macro for unlocking & releasing in one step,
tools usualy uses this approach.
The global memory pool (cmd->mem) should be used only for global
physical volume operations.
This patch have to be applied with all subsequent patches to complete
memory pool per vg logic.
Using separate memory pool has quite bit memory saving impact when
using large VGs, this is mainly needed when we have to use
preallocated and locked memory (and should not overflow from that
memory space).
2009-04-10 09:59:18 +00:00
Milan Broz
6fe905c705
Properly copy the whole pv structure for later use.
...
The all_pvs list, used in vg_read, should make its own private
copy of pv structures, otherwise (when vg will use its own pool)
it will point to released memory pool.
The same applies for get_pvs() call.
Patch adds pv_list copy helper and adds explicit memory pool
parameter into _copy_pv.
(Please note that all these helper functions cannot guarantee that
vg related fields are valid - proper vg read & lock must be used
if it is requested.)
2009-04-10 09:56:00 +00:00
Milan Broz
6ce8f8d553
Fix mirror log convert validation question.
2009-04-10 09:53:42 +00:00
Milan Broz
e24f357c23
Fix memory pool leak.
...
Call the alloc_destory call always after finishing operation
with handle otherwise it will leak a memory pool.
Also fix return code in lv_extend.
2009-04-07 10:20:28 +00:00
Milan Broz
ec5703ea07
Allocate new pv->vg_name from pool, it can be destroyed later.
...
(The mempool rename will be used later by vg private mempools)
2009-04-02 15:01:11 +00:00
Milan Broz
aa8111b3cd
fix some issues when compiling with -D DEBUG_POOL
...
- fix compilation issues
- fix wrong pool object maipulation (lvm dumpconfig triggers assert)
- second iteration in loop _log_parallel_areas operates on non-existing object
2009-03-26 09:25:18 +00:00
Milan Broz
7f436a0f39
Fix lv_count when manipulating with snapshots and max_lv is set.
...
Patch fixes these problems:
- during the snapshot creation process, it needs create 2 LVs,
one is cow, second becomes snapshot.
If the code fails in vg_add_snapshot, code lvcreate will not remove
LV cow volume.
- if max_lv is set and VG contains snapshot, it can happen that
during the activation lv_count is temporarily increased over the limit
and VG metadata are not properly processed
see https://bugzilla.redhat.com/show_bug.cgi?id=490298
- vgcfgrestore alows restore with max_lv set to lower valuer that actual
LV count. This later leads to situation that max_lv is completely ignored.
- vgck doesn't call vg_validate(). It should at least try:-)
Signed-off-by: Milan Broz <mbroz@redhat.com>
2009-03-16 14:34:57 +00:00
Alasdair Kergon
81680dce3c
Fix last check-ins: seg can be NULL.
2009-02-28 20:04:24 +00:00
Milan Broz
7b1c853bd9
Try to avoid full rescan if label scan is enough.
2009-02-25 23:29:06 +00:00
Milan Broz
0241c10fd6
Fix validation of dataalignment value introduced in previous commit.
2009-02-23 16:53:42 +00:00
Alasdair Kergon
8929ce6651
Add --dataalignment to pvcreate to specify alignment of data area. (mbroz)
...
This patch is not fully tested and leaves some related bugs unfixed.
Intended behaviour of the code now:
pe_start in the lvm2 format PV label header is set only by pvcreate (or
vgconvert -M2) and then preserved in *all* operations thereafter.
In some specialist cases, after the PV is added to a VG, the pe_start
field in the VG metadata may hold a different value and if so, it
overrides the other one for as long as the PV is in such a VG.
Currently, the field storing the size of the data area in the PV label
header always holds 0. As it only has meaning in the context of a
volume group, it is calculated whenever the PV is added to a VG (and can
be derived from extent_size and pe_count in the VG metadata).
2009-02-22 19:00:26 +00:00
Dave Wysochanski
4631e58782
Rename get_vgs() to get_vgnames() and clarify related error messages.
...
get_vgs() really returns a list of vgnames. In the future we will use
get_vgs() to return a list of vg structures, similar to get_pvs().
2009-02-03 16:19:25 +00:00
Alasdair Kergon
432d4b9f6e
Add as-yet-unused vg_read_error() and vg_might_exist(). (mornfall)
2009-01-27 01:48:47 +00:00
Alasdair Kergon
544deede49
Introduce as-yet-unused replacement vg_read() and vg_read_for_update()
...
functions. (mornfall)
2009-01-27 00:40:44 +00:00
Alasdair Kergon
b8fa516016
Replace internal vg_check_status() implementation. (mornfall)
2009-01-26 22:42:59 +00:00
Alasdair Kergon
ff2f094761
Properly enforce cluster locking in as-yet-unused _vg_lock_and_read. (mornfall)
2009-01-26 22:22:07 +00:00
Alasdair Kergon
bc92cde62c
Introduce as-yet-unused _vg_lock_and_read() and associated header file
...
definitions.
2009-01-26 22:13:22 +00:00
Alasdair Kergon
8544a8a254
Rename vg_read() to vg_read_internal(). (mornfall)
2009-01-26 19:01:32 +00:00
Dave Wysochanski
e9f57f2beb
Add pv_mda_size to 'pvs' and vg_mda_size to 'vgs'.
...
Reports the size of the smallest metadata area in a PV or a VG.
Useful to confirm pvcreate --metadatasize or pvmetadatasize setting in
/etc/lvm/lvm.conf file.
NOTE: Actual value in these fields will most always differ from that
given in pvcreate options due to rounding and alignment effects.
2009-01-09 22:44:33 +00:00
Milan Broz
de28fed87b
Fix "Calculate mirror log size" commit, the le_count should be always set.
2009-01-06 17:24:21 +00:00
Milan Broz
42dee539e2
Do not issue write behind lv size.
...
pvcreate $DEV
vgcreate -s 1k vg_test $DEV
lvcreate -l 1 -n lv1 vg_test
..
/dev/vg_test/lv1: write failed after 1024 of 4096 at 0: No space left on device
Just check for maximum write size in set_lv.
2008-12-19 15:26:01 +00:00
Milan Broz
6d1b3b5385
Calculate mirror log size instead of hardcoding 1 extent size.
...
It fails for 1k PE now.
Patch adds log_region_size into allocation habdle struct
and use it in _alloc_parallel_area() for proper log size calculation
instead of hardcoded 1 extent - which can fail.
Reproducer for incorrect log size calculation:
DEV=/dev/sd[bcd]
pvcreate $DEV
vgcreate -s 1k vg_test $DEV
lvcreate -m1 -L 12M -n mirr vg_test
https://bugzilla.redhat.com/show_bug.cgi?id=477040
The log size calculation is mostly copied from kernel code.
2008-12-19 15:24:52 +00:00
Peter Rajnoha
b47952641a
Added displayable_lvs_in_vg and lv_is_displayable functions to deal with
...
the counts of visible LVs from user's perspective consistently throughout
the code.
2008-12-04 15:54:26 +00:00
Alasdair Kergon
56d8844068
more fixes
2008-11-04 15:07:45 +00:00
Alasdair Kergon
2c44337bd5
Right, a simple build (without options) is working again.
2008-11-03 22:14:30 +00:00
Alasdair Kergon
9e71c18092
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.
2008-10-23 11:21:04 +00:00
Alasdair Kergon
5da4feac0e
Use temp table to set device size when converting mirrors.
...
(Avoids having same mirror table loaded twice concurrently by first
using a 'zero' table to set the size of the device so when mirror
table is preloaded it doesn't have to be activated immediately.)
2008-10-17 10:57:15 +00:00
Alasdair Kergon
3935c3ecd6
In resume_mirror_images replace activate_lv with resume_lv as workaround.
...
(The resume has the side-effect of resuming all of the original
mirror's sub-lvs in addition to the new 'error' target middle layer.)
2008-10-17 10:50:14 +00:00
Alasdair Kergon
9c4bf5db4a
Fix conversion of md chunk size into sectors.
2008-10-03 14:22:18 +00:00
Milan Broz
9352a2fdad
Fix misleading error message when there is no allocatable extents in VG.
2008-09-29 09:59:10 +00:00
Milan Broz
061fa9c4c5
Fix handling of PVs which reappeared with old metadata version.
2008-09-25 15:59:10 +00:00
Milan Broz
affecdc5fc
Try to fix possible infinite loop in dependency tree walking (by mornfall).
2008-09-25 15:57:02 +00:00
Alasdair Kergon
8c5bcdabab
Improve the way VGs with PVs missing are handled so manual intervention
...
is required in fewer circumstances. (mornfall)
2008-09-19 06:42:00 +00:00
Alasdair Kergon
86fb36e2b0
Add device/md_chunk_alignment to lvm.conf
2008-09-19 05:33:37 +00:00
Alasdair Kergon
3c2086efdd
adjust pe_align for md chunk size
2008-09-19 05:19:09 +00:00
Alasdair Kergon
f6700b450e
remove unsed var
2008-09-19 04:30:02 +00:00
Alasdair Kergon
a77f5bf258
Pass struct physical_volume to pe_align.
2008-09-19 04:28:58 +00:00
Alasdair Kergon
df6936c9e1
fix last patch return code
2008-09-19 00:20:39 +00:00
Alasdair Kergon
324e23b72d
Avoid shuffling remaining mirror images when removing one, retaining primary.
2008-09-18 19:56:50 +00:00
Alasdair Kergon
4bb7a2f523
Add missing LV error target activation in _remove_mirror_images.
2008-09-18 19:09:47 +00:00
Milan Broz
3a2fb07349
Fix setting of volume limit count if converting to lvm1 format.
...
Fixes problem when after downconvert to lvm1 VG is broken:
# lvcreate -n lv1 -l 4 vg_test
Invalid LV in extent map (PV /dev/sdb1, PE 0, LV 0, LE 0)
...
2008-08-29 13:41:21 +00:00
Zdenek Kabelac
38a8b563bf
get lv_list properly from vg->lst and fix compiler warning
2008-08-13 13:42:35 +00:00
Zdenek Kabelac
e2151fb4af
vgremove tries to remove lv snapshot first.
...
Added function lv_remove_with_dependencies().
2008-08-05 12:05:26 +00:00
Alasdair Kergon
82185ada82
Cease recognising snapshot-in-use percentages returned by early development kernels.
2008-07-15 00:25:52 +00:00
Alasdair Kergon
59743245b4
Fix up cache for PVs without mdas after consistent VG metadata is processed.
2008-06-27 15:18:31 +00:00
Alasdair Kergon
6db4136358
Update validation of safe mirror log type conversions in lvconvert. (brassow)
2008-06-26 23:05:11 +00:00
Alasdair Kergon
36081ccf2d
Fix reporting of LV fields alongside unallocated PV segments.
2008-06-25 16:52:27 +00:00
Dave Wysochanski
15db00b53e
Refactor pv_create() to take cmd_context - no functional change.
2008-06-24 20:10:32 +00:00
Dave Wysochanski
2d415cf9f8
Add uninitialized_var macro to suppress invalid compiler warnings.
...
One such warning is seen on fedora9 gcc compiler:
/metadata.c:1923: warning: 'results' may be used uninitialized in this function
2008-06-23 19:04:34 +00:00
Jim Meyering
ac27ef2593
Don't deref uninitialized log_lv upon failed mirror addition.
...
* mirror.c (add_mirror_images): Ensure that log_lv is initialized.
2008-06-13 12:15:55 +00:00
Alasdair Kergon
bfadd2133e
Tweak detection of invalid fid after changes to PVs in VG in _vg_read.
2008-06-08 14:18:44 +00:00
Alasdair Kergon
ec40d92889
post-release
2008-06-06 19:28:35 +00:00
Alasdair Kergon
697e3bb2df
back out unnecessary changes for this release
2008-06-06 17:36:19 +00:00
Alasdair Kergon
d0de492ff3
cope with volatile vginfo in vg_read
2008-06-06 11:12:50 +00:00
Alasdair Kergon
57d0dc0db2
Allow for vginfo changing during _vg_read.
2008-06-06 09:48:04 +00:00
Alasdair Kergon
ad134662a2
Drop metadata cache if update fails in vg_revert or vg_commit.
2008-06-03 17:56:54 +00:00
Alasdair Kergon
d9c0105fef
Drop metadata cache before writing precommitted metadata instead of after.
2008-05-08 18:06:58 +00:00
Alasdair Kergon
eddc0f3307
post-release - reinstate incomplete enhancements
2008-04-29 16:11:28 +00:00
Alasdair Kergon
04ed52f6a0
pre-release (bug fixes only - enhancements excluded)
2008-04-29 15:58:25 +00:00
Dave Wysochanski
8e8baf89c0
Fix vgsplit internal counting of snapshot LVs.
2008-04-23 14:33:06 +00:00
Alasdair Kergon
fd1b118942
Check lv_count in vg_validate.
...
Fix internal LV counter when a snapshot is removed.
2008-04-22 12:54:33 +00:00
Milan Broz
581b17def2
Drop cached VG metadata before and after committing changes to it.
2008-04-15 14:46:19 +00:00
Alasdair Kergon
3a370b7350
more pre-release cleanup
2008-04-10 19:59:43 +00:00
Alasdair Kergon
0b2a795ece
make list_move consistent with other list fns
2008-04-10 19:14:27 +00:00
Dave Wysochanski
985ca02b6a
Add vg_is_clustered() helper function.
...
Should be no functional change.
2008-04-10 17:09:32 +00:00
Alasdair Kergon
6eb44b5091
Fix vgreduce to use vg_split_mdas to check sufficient mdas remain.
...
Add (empty) orphan VGs to lvmcache during initialisation.
Fix orphan VG name used for format_pool.
2008-04-08 12:49:21 +00:00
Alasdair Kergon
ad607a23f1
create fids for internal orphan VGs
2008-04-07 22:12:37 +00:00
Milan Broz
5619c629f6
Add detection of clustered mirror log capability.
...
Currently only check for kernel module presence.
2008-04-07 10:23:47 +00:00
Dave Wysochanski
9da5d7ac02
Add check to vg_commit() to ensure lock is held before writing new VG metadata.
2008-04-04 15:41:20 +00:00
Alasdair Kergon
6e210a6c54
Cache VG metadata internally while VG lock is held.
2008-04-01 22:40:13 +00:00
Dave Wysochanski
9332d2cb9d
Add find_lv_in_lv_list() and find_pv_in_pv_list().
...
Update _add_pvs() to call find_pv_in_pv_list().
2008-03-28 19:08:23 +00:00
Dave Wysochanski
8e32e58e00
Use list_move() in applicable places.
2008-03-26 17:26:32 +00:00
Dave Wysochanski
052bbfba3a
Add pvseg_is_allocated() for identifying a PV segment allocated to a LV.
2008-03-26 16:48:10 +00:00
Alasdair Kergon
7284f3f966
preparation for vg cache
2008-03-17 16:51:31 +00:00
Dave Wysochanski
ad8f37df1b
Const cleanups in find_* functions.
2008-03-13 22:51:24 +00:00
Alasdair Kergon
60be88a0a6
Fix resetting of MIRROR_IMAGE and VISIBLE_LV after removal of LV.
2008-02-22 13:28:29 +00:00
Alasdair Kergon
4c0f4125ec
Fix remove_layer_from_lv to empty the LV before removing it. (2.02.30)
2008-02-22 13:22:44 +00:00
Alasdair Kergon
39d3ec0b51
Add missing no-longer-used segs_using_this_lv test to check_lv_segments.
2008-02-22 13:22:21 +00:00
Jim Meyering
a34a6a3f71
is_orphan: make parameter "const" to avoid compiler warning
2008-02-13 20:01:48 +00:00
Alasdair Kergon
bb097a97ea
split orphan VG by format type
2008-02-06 15:47:28 +00:00
Alasdair Kergon
4e9083db10
Fix mirror log name construction during lvconvert. (2.02.30)
...
Make monitor_dev_for_events recurse through the stack of LVs.
Clean up some more compiler warnings.
Add mirror names test script.
2008-01-31 12:19:36 +00:00
Alasdair Kergon
2871881859
undo a few 'stack' moves
2008-01-30 14:17:29 +00:00
Alasdair Kergon
67cdbd7e4d
Some whitespace tidy-ups.
2008-01-30 14:00:02 +00:00
Alasdair Kergon
c51b9fff19
Use stack return macros throughout.
2008-01-30 13:19:47 +00:00
Alasdair Kergon
5dc6c0de80
Fix two check_lv_segments error messages to show whole segment.
2008-01-26 00:30:28 +00:00
Alasdair Kergon
3d13b4677d
Refactor mirror log attachment code.
2008-01-26 00:25:04 +00:00
Alasdair Kergon
ec2bd20886
suppress compiler warning
2008-01-22 16:02:26 +00:00
Dave Wysochanski
1ce224d13f
Fix vgsplit - print error if vgcreate option given w/existing vg destination
...
Fix vgsplit - reject split if metadata types or clustered attributes differ
Fix vgsplit - remove physicalextentsize option
Add vgsplit test cases
2008-01-22 02:48:53 +00:00
Alasdair Kergon
0e0a6eb6cf
Fix lvcreate --nosync not to wait for non-happening sync.
2008-01-18 22:02:37 +00:00
Alasdair Kergon
7644c656d8
add lvconvert messages
2008-01-18 22:00:46 +00:00
Alasdair Kergon
0c06de632a
pre-release review cleanups
2008-01-17 17:17:09 +00:00
Alasdair Kergon
db24ceca33
rename lv_remap_error
2008-01-17 13:54:05 +00:00
Alasdair Kergon
58a63ae973
mirror log stuff
2008-01-17 13:37:51 +00:00
Alasdair Kergon
5cf3c51857
lvconvert/vgreduce fixes
2008-01-17 13:13:54 +00:00
Alasdair Kergon
70955d40a1
fix a _get_vgs return
2008-01-16 22:52:46 +00:00
Alasdair Kergon
79182305ef
additional safety check on new segment list
2008-01-16 20:00:01 +00:00
Dave Wysochanski
d865615e9a
Create vgs_are_compatible() fn to check whether vgs are compatible for merging.
...
Add new vgmerge and vgsplit tests to check rejection of incompatible vgs.
Cleanup comments.
Bugzilla: bz251992
---
lib/metadata/metadata-exported.h | 3 +
lib/metadata/metadata.c | 89 +++++++++++++++++++++++++++++++++-
test/t-vgmerge-usage.sh | 101 +++++++++++++++++++++++++++++++++++++++
test/t-vgsplit-operation.sh | 20 +++++++
tools/vgmerge.c | 69 --------------------------
tools/vgsplit.c | 5 -
6 files changed, 215 insertions(+), 72 deletions(-)
2008-01-16 19:54:39 +00:00
Alasdair Kergon
ba4d6ad8ea
adjust mirror log error message
2008-01-16 19:50:23 +00:00
Alasdair Kergon
17431cddac
cope with stacked LVs as well as PVs when deciding which bits of mirrors to remove
2008-01-16 19:38:39 +00:00
Alasdair Kergon
876003dc44
allow a mirror to contain only one mimage
2008-01-16 19:18:51 +00:00
Alasdair Kergon
171b53fb25
export find_temporary_mirror()
2008-01-16 19:13:51 +00:00
Alasdair Kergon
e344497277
move removable_pvs checking
2008-01-16 19:11:39 +00:00
Alasdair Kergon
7d18ea22eb
reorder funcs
2008-01-16 19:09:35 +00:00
Alasdair Kergon
72baf0c345
Maintain lists of stacked LV segments using each LV.
2008-01-16 19:00:59 +00:00
Alasdair Kergon
fb3226a3ed
use scan_vgs_for_pvs to detect non-orphans without MDAs
2008-01-16 18:15:26 +00:00
Dave Wysochanski
8868a4ffc2
Move more parameter validation into the library.
...
Update vgrename to call validate_vg_rename_params().
Fix vgcreate and vgsplit default arguments by adding defaults parameter to
fill_vg_create_params().
Add t-vgrename-usage.sh test.
Bugzilla: bz251992
---
tools/toollib.c | 32 ++++++++------------------------
tools/toollib.h | 5 ++---
tools/vgcreate.c | 35 +++++++++++++++++++++--------------
tools/vgrename.c | 35 ++++++-----------------------------
tools/vgsplit.c | 21 ++++++++++++++-------
5 files changed, 51 insertions(+), 77 deletions(-)
2008-01-15 22:56:30 +00:00
Dave Wysochanski
b8daca8570
Allow vgcreate options as input to vgsplit when new vg is split destination.
2008-01-14 21:07:58 +00:00
Alasdair Kergon
06ea7eaa27
Various lvconvert/polldaemon-related fixes from NEC. See lvm-devel
...
for original patches & explanations.
2008-01-10 18:35:51 +00:00
Milan Broz
a95892f77d
Fix a segfault if using pvs with --all argument. (2.02.29)
2008-01-07 20:42:57 +00:00
Alasdair Kergon
ba0c495db7
lvconvert uses polldaemon now
2007-12-22 12:13:29 +00:00
Alasdair Kergon
b9c69aa63a
a few more changes/fixes to recent code
2007-12-22 02:13:00 +00:00
Alasdair Kergon
1620864c35
more fixes
2007-12-20 23:12:27 +00:00
Alasdair Kergon
2b3dda7f72
various cleanups in recent patches
2007-12-20 22:37:42 +00:00
Alasdair Kergon
31e9db2690
stacked mirror support (incomplete)
2007-12-20 18:55:46 +00:00
Alasdair Kergon
a69ab65278
Major restructuring of pvmove and lvconvert layer manipulation code
2007-12-20 15:42:55 +00:00
Alasdair Kergon
b680c5c677
export can_split parameter until rest of pvmove allocation restructuring gets done
2007-12-05 22:11:20 +00:00
Alasdair Kergon
940d710ece
drop mirrored_pv/mirrored_pe from alloc handle
2007-11-22 14:54:35 +00:00
Alasdair Kergon
3da4613d7b
Start refactoring pvmove allocation code.
2007-11-22 13:57:21 +00:00
Alasdair Kergon
a68d8ec833
move pvresize_single back under tools
2007-11-15 22:11:18 +00:00
Alasdair Kergon
e5f7352bef
Convert some vg_reads into vg_lock_and_reads
2007-11-15 02:20:03 +00:00
Alasdair Kergon
a6b22cf317
readahead activation code (but no dm support yet)
2007-11-12 20:51:54 +00:00
Alasdair Kergon
b4068515e8
Enhance the management of readahead settings.
2007-11-09 16:51:54 +00:00
Alasdair Kergon
19c865437a
Prevent lvconvert -s from using same LV as origin and snapshot.
2007-11-07 16:33:12 +00:00
Alasdair Kergon
00a7c302ea
Add pv_mda_free and vg_mda_free fields to reports for raw text format.
2007-11-05 17:17:55 +00:00
Alasdair Kergon
b7940c98c1
fix new lvremove checks - mustn't fail when activation is disabled
2007-11-04 16:28:57 +00:00
Alasdair Kergon
d38bf3616c
Fix orphan-related locking in pvdisplay and pvs.
...
Fix missing VG unlocks in some pvchange error paths.
Add some missing validation of VG names.
Rename validate_vg_name() to validate_new_vg_name().
Change orphan lock to VG_ORPHANS.
Change format1 to use ORPHAN as orphan VG name.
2007-11-02 20:40:05 +00:00
Bryn M. Reeves
8b98c12815
Add is_orphan_vg() and change all hardcoded checks to use it.
2007-11-02 13:06:42 +00:00
Dave Wysochanski
0f8387c2d6
Remove comment about allocation of pv->vg_name.
2007-10-12 21:08:38 +00:00
Dave Wysochanski
0283c439ec
Add _alloc_pv() and _free_pv() from _pv_create() code and fix error paths.
...
Modified original patch by Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
2007-10-12 18:37:19 +00:00
Dave Wysochanski
1b8de4cb25
Add pv_dev_name() to access PV device name.
...
Patch by Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
2007-10-12 14:29:32 +00:00
Dave Wysochanski
70d9f98ed3
Accessor functions for PV will not modify the given PV.
...
So we can add 'const' to it.
Patch by Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
2007-10-12 14:08:10 +00:00
Dave Wysochanski
9ea1d647af
Non-functional change - refactor lv_create_empty().
...
Remove struct format_instance param - we can safely obtain
this from vg->fid inside the function.
2007-10-11 19:20:38 +00:00
Dave Wysochanski
8fd14f09e2
Non-functional change - refactor vg_add_snapshot fid parameter.
2007-10-11 18:51:21 +00:00
Dave Wysochanski
bf4f5b21a4
Some const fixups for previous checkins
2007-09-24 21:30:00 +00:00
Dave Wysochanski
dfef7f6942
Add %PVS extents option to lvresize, lvextend, and lvcreate.
2007-09-20 21:39:08 +00:00
Alasdair Kergon
9eea0107ba
Fix strdup memory leak in str_list_dup().
2007-09-17 16:02:46 +00:00
Dave Wysochanski
c6ea067fed
move guts of pvresize into library
2007-08-30 20:30:41 +00:00
Jonathan Earl Brassow
a2cb3d17a7
When mirrors are created with the --nosync option, a status flag
...
(MIRROR_NOTSYNCED) is added to the LVM metadata. This flag is
not cleared when converting to linear. Subsequently, if you
up-convert the linear to a mirror, the flag remains - even though
an up-convert will always force a complete resync.
2007-08-29 20:19:11 +00:00
Dave Wysochanski
f603fe64bd
Modify lvremove to prompt for removal if LV active on other cluster nodes.
...
Add '-f' to vgremove to force removal of VG even if LVs exist.
Update vgremove man page for '-f'.
2007-08-28 16:14:49 +00:00
Alasdair Kergon
21bc366486
Clean up numerous compiler warnings that crept in recently.
...
Remove several unused parameters from _allocate().
2007-08-22 14:38:18 +00:00
Alasdair Kergon
edb3374d32
Clean up mirrorlog argument processing.
...
Only permit --force, --verbose and --debug arguments to be repeated.
2007-08-21 19:46:36 +00:00
Dave Wysochanski
16669b5aa0
Move guts of vgremove into lvm library.
...
Include archiver.h in metadata.c as a result of prior move.
2007-08-21 17:38:20 +00:00
Dave Wysochanski
3d33abbb8c
Prepare to move guts of vgremove into lvm library.
...
Fixup force_t.
2007-08-21 16:40:33 +00:00
Alasdair Kergon
be6845999b
Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1.
2007-08-20 20:55:30 +00:00
Dave Wysochanski
cc78b9800d
Move lv_remove_single() into library (lv_manip.c, metadata-exported.h).
...
Move yes_no_prompt() into library (display.c, display.h).
Fixup includes as a result of movement of prior two functions.
Fixup force_t enum to be more descriptive.
2007-08-20 17:04:53 +00:00
Dave Wysochanski
9eb05d9761
Prepare to move guts of lvremove into lvm library
2007-08-20 16:16:54 +00:00
Dave Wysochanski
be51e010b4
Remove extra checks for sub LV renaming.
...
Patch by Jun'ichi Nomura <j-nomura@ce.jp.nec.com>.
2007-08-08 18:00:36 +00:00
Dave Wysochanski
2835f025b6
A few more cleanups for lvrename of mirrors checkin:
...
* add struct lv_names for old/new names
* replace lv->status & MIRROR checks with lv_is_visible()
2007-08-07 18:55:38 +00:00
Dave Wysochanski
4f4d5fdc67
Some simple fixups for last checkin:
...
* remove "_" from "return_0"
* improve some naming and terminology
* add 'const'
2007-08-07 16:57:09 +00:00
Jim Meyering
08c9ff434b
Add "const" attributes where possible: first cut.
2007-08-07 09:06:05 +00:00
Dave Wysochanski
41a94b5400
Update a few comments
2007-08-06 21:11:27 +00:00
Dave Wysochanski
f58224119c
Add support for renaming mirrored LVs.
...
Patch by Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
2007-08-06 20:35:48 +00:00
Jim Meyering
e5e120a502
For consistency, rename local variable: s/newname/new_name/g.
2007-08-06 14:57:48 +00:00
Jim Meyering
b7449ebc37
Make lv_rename's interface "const correct".
...
* lib/metadata/lv_manip.c (lv_rename): Make char* param "const".
* lib/metadata/metadata-exported.h: Update prototype, too.
2007-08-06 09:04:21 +00:00
Dave Wysochanski
b7cd307f9b
Factor out core of lvrename to lv_rename library function.
...
Patch by Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
2007-08-03 21:22:10 +00:00
Dave Wysochanski
4f629c3bba
Add CORRECT_INCONSISTENT and FAIL_INCONSISTENT flags to vg_lock_and_read
2007-07-23 21:03:42 +00:00
Dave Wysochanski
891c3d298b
Add vg_lock_and_read() external library function.
2007-07-23 17:27:55 +00:00
Alasdair Kergon
03eee0e2ed
Split metadata-external.h out from metadata.h for the tools to use.
2007-07-18 15:38:58 +00:00
Dave Wysochanski
33e5601937
Change pv_read_path to pv_by_path
2007-07-12 15:38:53 +00:00
Dave Wysochanski
0c795e2e18
Turn _add_pv_to_vg() into external library function add_pv_to_vg()
2007-07-12 05:04:42 +00:00
Dave Wysochanski
30303765a3
Refactor vg_extend error path.
2007-07-12 04:12:04 +00:00
Dave Wysochanski
c254039677
Add pv_read_path, a proposed external LVM library function to take a device path and return a PV handle
2007-07-11 23:33:12 +00:00
Alasdair Kergon
3c21da1797
Cope with find_seg_by_le() failure in check_lv_segments().
2007-07-10 18:50:03 +00:00
Dave Wysochanski
ea8a12dbc1
Convert _add_pv_to_vg to usable LVM library function.
2007-07-02 21:48:30 +00:00
Petr Rockai
e7ddf4168d
Make warnings go to stderr. Change log_warn to that effect, log_print
...
continues to send messages to stdout.
2007-06-28 17:33:44 +00:00
Dave Wysochanski
d6b1de30fe
Convert vg->status checks to use vg_check_status function.\nRename status_flags to status in vg_check_status.
2007-06-19 04:36:12 +00:00
Dave Wysochanski
69483a8aaf
Add vg_status function and clean up vg->status in tools directory
2007-06-19 04:23:32 +00:00
Dave Wysochanski
1f54709ee6
Make vg_extend() format_instance * parameter internal to vg_extend()
2007-06-19 00:33:43 +00:00
Dave Wysochanski
ff77bb1ab6
Remove get_ prefix from get_pv_* functions
2007-06-15 22:16:55 +00:00
Dave Wysochanski
3df2c388b1
convert pv->vg_name[0] to \!is_orphan(pv)
2007-06-14 15:48:05 +00:00
Dave Wysochanski
fb6ca78e05
Remove casts in pv_create and find_pv_in_vg_by_uuid
2007-06-13 21:14:07 +00:00
Dave Wysochanski
dd04871295
Convert pv_handle_t to pv_t * and tidy up whitespace
2007-06-13 20:55:56 +00:00
Dave Wysochanski
f1f4c1ea50
Add typedef pv_handle_t
2007-06-13 19:52:48 +00:00
Dave Wysochanski
b496210d9a
Convert find_pv_in_vg_by_uuid and pv_create to use PV handles
2007-06-12 22:41:27 +00:00
Dave Wysochanski
fc2063b660
Change PV_HANDLE_DEREF to pv_field and add paren's
2007-06-12 21:39:49 +00:00
Dave Wysochanski
0e2f6120ee
Add get_pv_* functions to return PV fields in prep for external LVM library
2007-06-12 21:20:20 +00:00
Dave Wysochanski
4e5f3e7331
Add wrappers to functions related to pv commands in preparation for exported LVM lib
2007-06-11 18:29:30 +00:00
Dave Wysochanski
c221b0bc21
Add vg_check_status to consolidate vg status flags checks and error messages.
2007-06-06 19:40:28 +00:00
Alasdair Kergon
4f2f566b06
Add devices/preferred_names config regex list for displayed device names.
...
Free a temporary dir string in fcntl_lock_file() after use.
Fix a dm_pool_destroy() in matcher_create().
Introduce goto_bad macro.
2007-04-26 16:44:59 +00:00
Dave Wysochanski
28d1c4d7e2
Update pvck to include text metadata area and record detection.
...
--
2007-04-25 21:10:55 +00:00
Dave Wysochanski
d915579c6b
Update pvck to read labels on disk, with flexible --labelsector
...
parameter.
--
2007-04-25 20:03:16 +00:00
Dave Wysochanski
17a6fc0b45
Add 'scan_sector' parameter to label_read and _find_labeller to add
...
flexibility in searching for disk labels.
2007-04-23 18:21:01 +00:00
Milan Broz
5d06515c0b
Fix creation and conversion of mirrors with tags.
2007-03-26 16:10:10 +00:00
Milan Broz
851002b87d
Fix vgsplit for lvm1 format (set and validate VG name in PVs metadata).
...
Split metadata areas in vgsplit properly.
2007-03-23 12:43:17 +00:00
Alasdair Kergon
37fb985a82
If a PV reappears after it was removed from its VG, make it an orphan.
2007-02-07 13:29:52 +00:00
Alasdair Kergon
57fc4cc0b6
Add field definitions to report help text.
...
Remove unnecessary cmd arg from target_*monitor_events().
2007-01-24 16:51:24 +00:00
Alasdair Kergon
8a37910d51
register->monitor etc.
2007-01-19 22:21:45 +00:00
Alasdair Kergon
8ef6eb30d9
Report dmeventd mirror monitoring status.
2007-01-12 20:38:30 +00:00
Milan Broz
aa8a4d96bd
Fix create mirror with name longer than 22 chars.
2007-01-05 15:53:40 +00:00
Alasdair Kergon
5b61ca7281
When lvconvert allocates a mirror log, respect parallel area constraints.
...
Use loop to iterate through the now-ordered policy list in _allocate().
Check for failure to allocate just the mirror log.
Introduce calc_area_multiple().
Support mirror log allocation when there is only one PV: area_count now 0.
(See lvm-devel list archives for further details.)
2006-12-13 03:39:58 +00:00
Alasdair Kergon
948ee3e396
Fix detection of smallest area in _alloc_parallel_area() for cling policy.
2006-12-12 19:30:10 +00:00
Alasdair Kergon
4dc0ec2253
Adjust some alignments for ia64 and sparc.
...
(Some of the changes are probably unnecessary.)
2006-11-30 23:11:42 +00:00
Alasdair Kergon
6c48fe7433
Fix mirror segment removal to use temporary error segment.
2006-11-30 17:52:47 +00:00
Alasdair Kergon
be0e37715e
fix cast
2006-11-10 20:15:10 +00:00
Alasdair Kergon
f96cde8cbd
Fix adjusted_mirror_region_size() for 64-bit size.
2006-11-10 19:35:03 +00:00
Alasdair Kergon
a89d601463
Add some missing bounds checks on 32 bit extent counters.
...
Add Petabyte and Exabyte support.
Fix lvcreate error message when 0 extents requested.
2006-11-10 18:24:11 +00:00
Alasdair Kergon
4d2a8d8231
fix last check-in: lv->size is in sectors
2006-11-03 21:07:15 +00:00
Alasdair Kergon
c89024511b
Fix high-level free space check for partial allocations.
2006-10-30 16:10:55 +00:00
Alasdair Kergon
2bdc8e1252
Perform high-level free space check before each allocation attempt.
2006-10-23 15:54:51 +00:00
Alasdair Kergon
9766c3c960
Cope if same PV is included more than once in cmdline PE range list.
2006-10-21 23:18:43 +00:00
Alasdair Kergon
7c5ec12630
Add segment parameter to target_present functions.
2006-10-18 18:01:53 +00:00
Alasdair Kergon
de5c82a0d9
add cling allocation policy
2006-10-08 12:01:13 +00:00
Alasdair Kergon
b4e2a0e179
check_contiguous to use for_each_pv
2006-10-07 23:40:36 +00:00
Alasdair Kergon
5faf02761f
rely on pv_setup functions to fix up pe_count
2006-10-07 23:06:18 +00:00
Alasdair Kergon
80592d845d
more refactoring
2006-10-07 16:00:28 +00:00
Alasdair Kergon
b6f8552074
Extend _for_each_pv() to allow termination without error.
2006-10-07 12:41:06 +00:00
Alasdair Kergon
7dce16f234
abstract _is_contiguous()
2006-10-07 11:34:53 +00:00
Alasdair Kergon
b4ccb00b36
move _for_each_pv()
2006-10-07 11:23:22 +00:00
Alasdair Kergon
68d7c0e601
Remove duplicated pv arg from _check_contiguous().
2006-10-07 11:00:09 +00:00
Alasdair Kergon
209f03f2b6
Fix format_text mda_setup pv->size and pv_setup pe_count calculations.
...
(This area of the code needs a lot more work.)
2006-10-05 22:02:52 +00:00
Alasdair Kergon
8d18637eca
Fix _for_each_pv() for mirror with core log.
2006-10-05 21:24:48 +00:00
Alasdair Kergon
6c81ed26f0
Add LV column to reports listing kernel modules needed for activation.
2006-10-03 17:55:20 +00:00
Alasdair Kergon
5095de5177
Fix two potential NULL pointer derefs in error cases in vg_read().
2006-09-21 20:25:54 +00:00
Alasdair Kergon
13ba0f9492
Fix lvconvert mirror change case detection logic.
...
Fix mirror log detachment so it correctly becomes a standalone LV.
2006-09-19 19:13:41 +00:00
Alasdair Kergon
bbb068562e
Extend _check_contiguous() to detect single-area LVs.
...
Include mirror log (untested) in _for_each_pv() processing.
Use MIRROR_LOG_SIZE constant.
Remove struct seg_pvs from _for_each_pv() for generalisation.
Avoid adding duplicates to list of parallel PVs to avoid.
2006-09-11 21:14:56 +00:00
Alasdair Kergon
d9c6bbab80
Fix several incorrect comparisons in parallel area avoidance code.
...
Fix segment lengths when flattening existing parallel areas.
Log existing parallel areas prior to allocation.
Fix mirror log creation when activation disabled.
2006-09-11 14:24:58 +00:00
Alasdair Kergon
0550c1b618
Move lvm_snprintf into libdevmapper.
2006-08-21 12:54:53 +00:00
Alasdair Kergon
94d501edd9
Fix PE_ALIGN for pagesize over 32KB.
2006-08-17 19:53:36 +00:00