]> sourceware.org Git - lvm2.git/commitdiff
Make --snapshot optional with lvcreate --virtualsize.
authorAlasdair Kergon <agk@redhat.com>
Wed, 27 May 2009 16:30:29 +0000 (16:30 +0000)
committerAlasdair Kergon <agk@redhat.com>
Wed, 27 May 2009 16:30:29 +0000 (16:30 +0000)
Generalise --virtualoriginsize to --virtualsize.

WHATS_NEW
man/lvcreate.8.in
tools/args.h
tools/commands.h
tools/lvcreate.c
tools/lvmcmdline.c

index 23fce5f9a0fcd1e3d280a8e33fca60fe3dddaa02..b5ba17d459e58f43213a3e571fa27f78996854db 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,7 @@
 Version 2.02.48 - 
 ===============================
+  Make --snapshot optional with lvcreate --virtualsize.
+  Generalise --virtualoriginsize to --virtualsize.
   Skip virtual origins in process_each_lv_in_vg().
   Fix counting of virtual origin LVs in vg_validate.
   Attempt to load dm-zero module if zero target needed but not present.
index 1e5322b09961e8021467a6960da8a63028258046..af3dc283c9d8201ca76cd9c22139b0b979f9539e 100644 (file)
@@ -26,8 +26,10 @@ VolumeGroupName [PhysicalVolumePath...]
  \-L|\-\-size LogicalVolumeSize[kKmMgGtT]}
 [\-c|\-\-chunksize ChunkSize]
 \-n|\-\-name SnapshotLogicalVolumeName
-\-s|\-\-snapshot
-[OriginalLogicalVolumePath | VolumeGroupName \-\-virtualoriginsize VirtualOriginSize]
+{{\-s|\-\-snapshot}
+OriginalLogicalVolumePath | 
+[\-s|\-\-snapshot]
+VolumeGroupName \-\-virtualsize VirtualSize}
 .SH DESCRIPTION
 lvcreate creates a new logical volume in a volume group ( see
 .B vgcreate(8), vgchange(8)
@@ -152,11 +154,11 @@ allocate slightly more space than you actually need and monitor the
 rate at which the snapshot data is growing so you can avoid running out
 of space.
 .TP
-.I \-\-virtualoriginsize VirtualOriginSize
-In conjunction with \-\-snapshot, create a sparse device of the given size
-(in MB by default).  Anything written to the device will be returned when
-reading from it.  Reading from other areas of the device will return
-blocks of zeros.  It is implemented by creating a hidden virtual device of the
+.I \-\-virtualsize VirtualSize
+Create a sparse device of the given size (in MB by default) using a snapshot.  
+Anything written to the device will be returned when reading from it.
+Reading from other areas of the device will return blocks of zeros.
+It is implemented by creating a hidden virtual device of the
 requested size using the zero target.  A suffix of _vorigin is used for
 this device.
 .TP
index c3f233200cf5026da9100d3aab1ab3b7901027d4..f8dc02c606bd61d24301357648e573399d0e3641 100644 (file)
@@ -59,6 +59,7 @@ arg(unquoted_ARG, '\0', "unquoted", NULL, 0)
 arg(rows_ARG, '\0', "rows", NULL, 0)
 arg(dataalignment_ARG, '\0', "dataalignment", size_kb_arg, 0)
 arg(virtualoriginsize_ARG, '\0', "virtualoriginsize", size_mb_arg, 0)
+arg(virtualsize_ARG, '\0', "virtualsize", size_mb_arg, 0)
 
 /* Allow some variations */
 arg(resizable_ARG, '\0', "resizable", yes_no_arg, 0)
index 18495288834331a3c1a6b381b2206ae70c7647ca..eec62e3bba8af62c8f8108ae5d20f99de8656858 100644 (file)
@@ -145,7 +145,9 @@ xx(lvcreate,
    "\t[--version]\n"
    "\tVolumeGroupName [PhysicalVolumePath...]\n\n"
 
-   "lvcreate -s|--snapshot\n"
+   "lvcreate \n"
+   "\t{ {-s|--snapshot} OriginalLogicalVolume[Path] |\n"
+   "\t  [-s|--snapshot] VolumeGroupName[Path] --virtualsize VirtualSize}\n"
    "\t[-c|--chunksize]\n"
    "\t[-A|--autobackup {y|n}]\n"
    "\t[--addtag Tag]\n"
@@ -163,15 +165,14 @@ xx(lvcreate,
    "\t[-t|--test]\n"
    "\t[-v|--verbose]\n"
    "\t[--version]\n"
-   "\t[OriginalLogicalVolume[Path] |\n"
-   "\t VolumeGroupName[Path] --virtualoriginsize VirtualOriginSize]]\n"
+
    "\t[PhysicalVolumePath...]\n\n",
 
    addtag_ARG, alloc_ARG, autobackup_ARG, chunksize_ARG, contiguous_ARG,
    corelog_ARG, extents_ARG, major_ARG, minor_ARG, mirrorlog_ARG, mirrors_ARG,
    name_ARG, nosync_ARG, permission_ARG, persistent_ARG, readahead_ARG,
    regionsize_ARG, size_ARG, snapshot_ARG, stripes_ARG, stripesize_ARG,
-   test_ARG, type_ARG, virtualoriginsize_ARG, zero_ARG)
+   test_ARG, type_ARG, virtualoriginsize_ARG, virtualsize_ARG, zero_ARG)
 
 xx(lvdisplay,
    "Display information about a logical volume",
index 65dc39a436c45bf48245feb1e2aa5a5d54fb20ce..b7dce37b5d07230b7b280042ed156c2acd05b5e2 100644 (file)
@@ -66,7 +66,7 @@ static int _lvcreate_name_params(struct lvcreate_params *lp,
        if (arg_count(cmd, name_ARG))
                lp->lv_name = arg_value(cmd, name_ARG);
 
-       if (lp->snapshot && !arg_count(cmd, virtualoriginsize_ARG)) {
+       if (lp->snapshot && !arg_count(cmd, virtualsize_ARG)) {
                if (!argc) {
                        log_err("Please specify a logical volume to act as "
                                "the snapshot origin.");
@@ -178,12 +178,12 @@ static int _read_size_params(struct lvcreate_params *lp,
        }
 
        /* Size returned in kilobyte units; held in sectors */
-       if (arg_count(cmd, virtualoriginsize_ARG)) {
-               if (arg_sign_value(cmd, virtualoriginsize_ARG, 0) == SIGN_MINUS) {
+       if (arg_count(cmd, virtualsize_ARG)) {
+               if (arg_sign_value(cmd, virtualsize_ARG, 0) == SIGN_MINUS) {
                        log_error("Negative virtual origin size is invalid");
                        return 0;
                }
-               lp->voriginsize = arg_uint64_value(cmd, virtualoriginsize_ARG,
+               lp->voriginsize = arg_uint64_value(cmd, virtualsize_ARG,
                                                   UINT64_C(0));
                if (!lp->voriginsize) {
                        log_error("Virtual origin size may not be zero");
@@ -362,7 +362,8 @@ static int _lvcreate_params(struct lvcreate_params *lp, struct cmd_context *cmd,
        if (arg_count(cmd, stripes_ARG) && lp->stripes == 1)
                log_print("Redundant stripes argument: default is 1");
 
-       if (arg_count(cmd, snapshot_ARG) || seg_is_snapshot(lp))
+       if (arg_count(cmd, snapshot_ARG) || seg_is_snapshot(lp) ||
+           arg_count(cmd, virtualsize_ARG))
                lp->snapshot = 1;
 
        lp->mirrors = 1;
@@ -406,10 +407,6 @@ static int _lvcreate_params(struct lvcreate_params *lp, struct cmd_context *cmd,
                        log_error("-c is only available with snapshots");
                        return 0;
                }
-               if (arg_count(cmd, virtualoriginsize_ARG)) {
-                       log_error("--virtualoriginsize is only available with snapshots");
-                       return 0;
-               }
        }
 
        if (lp->mirrors > 1) {
@@ -722,7 +719,7 @@ static int _lvcreate(struct cmd_context *cmd, struct volume_group *vg,
                /* Must zero cow */
                status |= LVM_WRITE;
 
-               if (arg_count(cmd, virtualoriginsize_ARG))
+               if (arg_count(cmd, virtualsize_ARG))
                        origin_active = 1;
                else {
 
@@ -733,7 +730,7 @@ static int _lvcreate(struct cmd_context *cmd, struct volume_group *vg,
                        }
                        if (lv_is_virtual_origin(org)) {
                                log_error("Can't share virtual origins. "
-                                         "Use --virtualoriginsize.");
+                                         "Use --virtualsize.");
                                return 0;
                        }
                        if (lv_is_cow(org)) {
index bedf9e2d169e4a101fd17fcb9425de5b8e7f1f5a..0d4e230aa33a7398027621b99f2d53aef046710e 100644 (file)
@@ -816,7 +816,8 @@ static int _get_settings(struct cmd_context *cmd)
        /* Handle synonyms */
        if (!_merge_synonym(cmd, resizable_ARG, resizeable_ARG) ||
            !_merge_synonym(cmd, allocation_ARG, allocatable_ARG) ||
-           !_merge_synonym(cmd, allocation_ARG, resizeable_ARG))
+           !_merge_synonym(cmd, allocation_ARG, resizeable_ARG) ||
+           !_merge_synonym(cmd, virtualoriginsize_ARG, virtualsize_ARG))
                return EINVALID_CMD_LINE;
 
        /* Zero indicates success */
This page took 0.046596 seconds and 5 git commands to generate.