1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00
lvm2/tools
Jonathan Brassow 6a00a7e33d RAID: Allow implicit stripe (and parity) when creating RAID LVs
There are typically 2 functions for the more advanced segment types that
deal with parameters in lvcreate.c: _get_*_params() and _check_*_params().
(Not all segment types name their functions according to this scheme.)
The former function is responsible for reading parameters before the VG
has been read.  The latter is for sanity checking and possibly setting
parameters after the VG has been read.

This patch adds a _check_raid_parameters() function that will determine
if the user has specified 'stripe' or 'mirror' parameters.  If not, the
proper number is computed from the list of PVs the user has supplied or
the number that are available in the VG.  Now that _check_raid_parameters()
is available, we move the check for proper number of stripes from
_get_* to _check_*.

This gives the user the ability to create RAID LVs as follows:
# 5-device RAID5, 4-data, 1-parity (i.e. implicit '-i 4')
~> lvcreate --type raid5 -L 100G -n lv vg /dev/sd[abcde]1

# 5-device RAID6, 3-data, 2-parity (i.e. implicit '-i 3')
~> lvcreate --type raid6 -L 100G -n lv vg /dev/sd[abcde]1

# If 5 PVs in VG, 4-data, 1-parity RAID5
~> lvcreate --type raid5 -L 100G -n lv vg

Considerations:
This patch only affects RAID.  It might also be useful to apply this to
the 'stripe' segment type.  LVM RAID may include RAID0 at some point in
the future and the implicit stripes would apply there.  It would be odd
to have RAID0 be able to auto-determine the stripe count while 'stripe'
could not.

The only draw-back of this patch that I can see is that there might be
less error checking.  Rather than informing the user that they forgot
to supply an argument (e.g. '-i'), the value would be computed and it
may differ from what the user actually wanted.  I don't see this as a
problem, because the user can check the device count after creation
and remove the LV if they have made an error.
2014-02-17 20:18:23 -06:00
..
.exported_symbols generate liblvm2cmd exported symbols too 2010-06-25 18:23:10 +00:00
.gitignore More .gitignore files for an in-source-tree build. 2012-06-08 16:34:43 +01:00
args.h cache: Ability to convert an existing LV into a cached LV 2014-02-12 09:55:35 -06:00
cmdnames.h Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1. 2007-08-20 20:55:30 +00:00
commands.h cache: Ability to convert an existing LV into a cached LV 2014-02-12 09:55:35 -06:00
dmsetup.c gcc: replace #ifdef linux with __linux__ 2013-11-13 13:56:29 +00:00
dumpconfig.c dumpconfig: also mention profilable type if giving hint about known types 2013-08-19 08:32:03 +02:00
errors.h lvresize: separate validation from action 2013-07-06 03:28:21 +01:00
formats.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
lvchange.c cleanup: use compound literals for wipe_lv 2013-11-28 12:45:52 +01:00
lvconvert.c thin: fix merge of old snaphost 2014-02-17 22:25:53 +01:00
lvcreate.c RAID: Allow implicit stripe (and parity) when creating RAID LVs 2014-02-17 20:18:23 -06:00
lvdisplay.c Rework the toollib interface (process_each_*) on top of new vg_read. 2009-07-01 17:00:50 +00:00
lvextend.c Some whitespace tidy-ups. 2008-01-30 14:00:02 +00:00
lvm2cmd-static.c Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1. 2007-08-20 20:55:30 +00:00
lvm2cmd.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
lvm2cmd.h lvresize: separate validation from action 2013-07-06 03:28:21 +01:00
lvm2cmdline.h Support repetition of --addtag and --deltag arguments. 2010-11-11 17:29:05 +00:00
lvm-static.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
lvm.c config: add profile arg to find_config_tree_int 2013-07-02 15:19:09 +02:00
lvmchange.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
lvmcmdlib.c cleanup: drop unneeded included header files 2012-08-23 14:37:20 +02:00
lvmcmdline.c cmdline: Add --ignoreskippedcluster. 2013-10-01 21:20:10 +01:00
lvmdiskscan.c Few more close and dev_close trace 2012-03-01 21:12:37 +00:00
lvreduce.c Some whitespace tidy-ups. 2008-01-30 14:00:02 +00:00
lvremove.c snapshot: move virtsnap code from tool to lib 2013-10-12 00:14:52 +02:00
lvrename.c cleanup: stack usage 2013-07-01 23:11:14 +02:00
lvresize.c lvresize: separate validation from action 2013-07-06 03:28:21 +01:00
lvscan.c config: add silent mode 2012-08-25 20:35:48 +01:00
Makefile.in tools: Add internal tags command. 2014-01-30 13:09:15 +00:00
polldaemon.c pvmove: clean exit on failed pvmove restart 2013-09-23 19:46:28 +01:00
polldaemon.h Start using 64-bit status flags - most of the code already handles them. 2011-09-06 18:49:31 +00:00
pvchange.c locking: Make it possible to pass down an LV to activation code. 2013-06-10 17:26:38 +02:00
pvck.c Move the core of the lib/config/config.c functionality into libdevmapper, 2011-08-30 14:55:15 +00:00
pvcreate.c tools: remove metadata-exported.h 2013-07-09 03:07:55 +01:00
pvdisplay.c cmdline: Add --ignoreskippedcluster. 2013-10-01 21:20:10 +01:00
pvmove.c pvcreate: Avoid spurious 'not found' messages. 2013-11-29 21:45:37 +00:00
pvremove.c pvremove: stack trace 2013-07-08 14:01:41 +02:00
pvresize.c tools: remove metadata-exported.h 2013-07-09 03:07:55 +01:00
pvscan.c activation: change log_error to log_warn if refresh before autoactivation fails 2013-11-27 08:53:26 +01:00
reporter.c pvs: fix segfaults with orphans 2014-01-14 03:17:27 +00:00
segtypes.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
stub.h Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
tags.c tools: Add internal tags command. 2014-01-30 13:09:15 +00:00
toollib.c Fix premature return from get_pool_params 2014-02-13 10:50:56 +01:00
toollib.h compilation: Rename tags variables to tagsl. 2014-01-30 21:09:28 +00:00
tools.h filters: check for mpath before opening devs 2013-08-13 23:26:58 +01:00
vgcfgbackup.c cleanup: stack usage 2013-07-01 23:11:14 +02:00
vgcfgrestore.c vgcfgrestore: Remove VG rom lvmetad later, to better deal with errors. 2013-09-18 11:24:58 +02:00
vgchange.c device: add physical block size info and make sure VG extent size >= PV's phys. block size 2013-12-12 15:02:36 +01:00
vgck.c vgck: Fix #894136, notice on-disk corruption in spite of lvmetad. 2013-08-13 23:25:49 +02:00
vgconvert.c vgconvert: Do not call lvmetad_vg_remove (path shared with vgcfgbackup). 2013-09-18 12:53:11 +02:00
vgcreate.c metadata: add support for storing profile name in metadata (during vgcreate/lvcreate) 2013-07-02 15:19:09 +02:00
vgdisplay.c vgdisplay: select only active volumes groups if -A option is used 2013-12-03 14:43:00 +01:00
vgexport.c config: add silent mode 2012-08-25 20:35:48 +01:00
vgextend.c cleanup: introduce return_ECMD_FAILED macro 2013-07-01 23:10:33 +02:00
vgimport.c cleanup: comments and a message 2013-07-24 22:10:37 +01:00
vgmerge.c thin: vgsplit and vgmerge spare support 2013-07-18 18:22:44 +02:00
vgmknodes.c cleanup: introduce return_ECMD_FAILED macro 2013-07-01 23:10:33 +02:00
vgreduce.c metadata.c: Call refactored vgreduce_single 2013-11-19 14:40:30 -06:00
vgremove.c cleanup: introduce return_ECMD_FAILED macro 2013-07-01 23:10:33 +02:00
vgrename.c vgrename: run fullscan 2013-10-08 13:39:11 +02:00
vgscan.c locking: Make it possible to pass down an LV to activation code. 2013-06-10 17:26:38 +02:00
vgsplit.c thin: vgsplit and vgmerge spare support 2013-07-18 18:22:44 +02:00