1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00
lvm2/lib
Peter Rajnoha e8bbcda2a3 Add lv_layout_and_type fn, lv_layout and lv_type reporting fields.
The lv_layout and lv_type fields together help with LV identification.
We can do basic identification using the lv_attr field which provides
 very condensed view. In contrast to that, the new lv_layout and lv_type
fields provide more detialed information on exact layout and type used
for LVs.

For top-level LVs which are pure types not combined with any
other LV types, the lv_layout value is equal to lv_type value.

For non-top-level LVs which may be combined with other types,
the lv_layout describes the underlying layout used, while the
lv_type describes the use/type/usage of the LV.

These two new fields are both string lists so selection (-S/--select)
criteria can be defined using the list operators easily:
  [] for strict matching
  {} for subset matching.

For example, let's consider this:

$ lvs -a -o name,vg_name,lv_attr,layout,type
  LV                    VG     Attr       Layout       Type
  [lvol1_pmspare]       vg     ewi------- linear       metadata,pool,spare
  pool                  vg     twi-a-tz-- pool,thin    pool,thin
  [pool_tdata]          vg     rwi-aor--- level10,raid data,pool,thin
  [pool_tdata_rimage_0] vg     iwi-aor--- linear       image,raid
  [pool_tdata_rimage_1] vg     iwi-aor--- linear       image,raid
  [pool_tdata_rimage_2] vg     iwi-aor--- linear       image,raid
  [pool_tdata_rimage_3] vg     iwi-aor--- linear       image,raid
  [pool_tdata_rmeta_0]  vg     ewi-aor--- linear       metadata,raid
  [pool_tdata_rmeta_1]  vg     ewi-aor--- linear       metadata,raid
  [pool_tdata_rmeta_2]  vg     ewi-aor--- linear       metadata,raid
  [pool_tdata_rmeta_3]  vg     ewi-aor--- linear       metadata,raid
  [pool_tmeta]          vg     ewi-aor--- level1,raid  metadata,pool,thin
  [pool_tmeta_rimage_0] vg     iwi-aor--- linear       image,raid
  [pool_tmeta_rimage_1] vg     iwi-aor--- linear       image,raid
  [pool_tmeta_rmeta_0]  vg     ewi-aor--- linear       metadata,raid
  [pool_tmeta_rmeta_1]  vg     ewi-aor--- linear       metadata,raid
  thin_snap1            vg     Vwi---tz-k thin         snapshot,thin
  thin_snap2            vg     Vwi---tz-k thin         snapshot,thin
  thin_vol1             vg     Vwi-a-tz-- thin         thin
  thin_vol2             vg     Vwi-a-tz-- thin         multiple,origin,thin

Which is a situation with thin pool, thin volumes and thin snapshots.
We can see internal 'pool_tdata' volume that makes up thin pool has
actually a level10 raid layout and the internal 'pool_tmeta' has
level1 raid layout. Also, we can see that 'thin_snap1' and 'thin_snap2'
are both thin snapshots while 'thin_vol1' is thin origin (having
multiple snapshots).

Such reporting scheme provides much better base for selection criteria
in addition to providing more detailed information, for example:

$ lvs -a -o name,vg_name,lv_attr,layout,type -S 'type=metadata'
LV                   VG   Attr       Layout      Type
[lvol1_pmspare]      vg   ewi------- linear      metadata,pool,spare
[pool_tdata_rmeta_0] vg   ewi-aor--- linear      metadata,raid
[pool_tdata_rmeta_1] vg   ewi-aor--- linear      metadata,raid
[pool_tdata_rmeta_2] vg   ewi-aor--- linear      metadata,raid
[pool_tdata_rmeta_3] vg   ewi-aor--- linear      metadata,raid
[pool_tmeta]         vg   ewi-aor--- level1,raid metadata,pool,thin
[pool_tmeta_rmeta_0] vg   ewi-aor--- linear      metadata,raid
[pool_tmeta_rmeta_1] vg   ewi-aor--- linear      metadata,raid

(selected all LVs which are related to metadata of any type)

lvs -a -o name,vg_name,lv_attr,layout,type -S 'type={metadata,thin}'
LV           VG   Attr       Layout      Type
[pool_tmeta] vg   ewi-aor--- level1,raid metadata,pool,thin

(selected all LVs which hold metadata related to thin)

lvs -a -o name,vg_name,lv_attr,layout,type -S 'type={thin,snapshot}'
LV         VG   Attr       Layout     Type
thin_snap1 vg   Vwi---tz-k thin       snapshot,thin
thin_snap2 vg   Vwi---tz-k thin       snapshot,thin

(selected all LVs which are thin snapshots)

lvs -a -o name,vg_name,lv_attr,layout,type -S 'layout=raid'
LV           VG   Attr       Layout       Type
[pool_tdata] vg   rwi-aor--- level10,raid data,pool,thin
[pool_tmeta] vg   ewi-aor--- level1,raid  metadata,pool,thin

(selected all LVs with raid layout, any raid layout)

lvs -a -o name,vg_name,lv_attr,layout,type -S 'layout={raid,level1}'
  LV           VG   Attr       Layout      Type
  [pool_tmeta] vg   ewi-aor--- level1,raid metadata,pool,thin

(selected all LVs with raid level1 layout exactly)

And so on...
2014-08-15 14:50:38 +02:00
..
activate activation: Fix upgrades using uuid suffixes. 2014-07-30 21:55:11 +01:00
cache cleanup: just safely copy string 2014-07-04 12:31:17 +02:00
cache_segtype cache: use get_cache_mode for validation 2014-07-17 16:16:45 +02:00
commands conf: add report/list_item_separator lvm.conf option 2014-07-10 16:18:45 +02:00
config thin and cache: unify pool common code 2014-07-22 22:41:38 +02:00
datastruct Add lv_layout_and_type fn, lv_layout and lv_type reporting fields. 2014-08-15 14:50:38 +02:00
device dev-type: print aborting log_error 2014-07-04 12:31:17 +02:00
display prompt: display 'n' for EOF 2014-07-11 12:47:41 +02:00
error cleanup: modules_needed only for devmapper 2014-04-30 10:26:30 +02:00
filters filter-mpath: fix primary device lookup failure for partition when processing mpath filter 2014-08-08 10:49:19 +02:00
format1 metadata: fix ALLOCATABLE_PV for lvm1 format 2014-07-11 12:24:15 +02:00
format_pool pvscan: use format feature flags in lvmetad code 2014-01-08 02:13:13 +00:00
format_text metadata: Reinstate system info in metadata. 2014-07-21 15:54:20 +01:00
freeseg cleanup: drop unneeded included header files 2012-08-23 14:37:20 +02:00
label cleanup: remove unneeded header files 2014-02-11 19:00:06 +01:00
locking locking: fix cluster locking 2014-06-20 16:38:48 +01:00
log report: select: refactor: move str_list to libdm 2014-06-17 16:27:20 +02:00
metadata Add lv_layout_and_type fn, lv_layout and lv_type reporting fields. 2014-08-15 14:50:38 +02:00
mirror report: select: refactor: move percent handling code to libdm for reuse 2014-06-17 16:27:21 +02:00
misc activation: Fix upgrades using uuid suffixes. 2014-07-30 21:55:11 +01:00
mm memlock: skip more entries 2014-06-20 11:13:41 +02:00
properties report: add separate fields for PV/VG/LV attributes 2014-07-04 15:40:17 +02:00
raid refactor: add defines for raid segtypes 2014-08-15 13:28:43 +02:00
replicator compilation: fix warnings: build_dm_uuid now accepts whole struct logical_volume, not lvid 2014-06-18 14:43:13 +02:00
report Add lv_layout_and_type fn, lv_layout and lv_type reporting fields. 2014-08-15 14:50:38 +02:00
snapshot report: select: refactor: move percent handling code to libdm for reuse 2014-06-17 16:27:21 +02:00
striped metadata: use outfc for comments 2014-07-17 16:17:44 +02:00
thin report: select: refactor: move percent handling code to libdm for reuse 2014-06-17 16:27:21 +02:00
unknown unknown: add_target_line is not needed 2014-04-30 10:26:30 +02:00
uuid cleanup: drop unused define 2014-03-12 19:12:34 +01:00
zero cleanup: modules_needed only for devmapper 2014-04-30 10:26:30 +02:00
Makefile.in locking: Separate out flock and signal code. 2014-05-01 17:37:14 +01:00