Allow resizing to friendly units
authorJamie Cameron <jcameron@webmin.com>
Tue, 14 Jun 2011 00:53:03 +0000 (17:53 -0700)
committerJamie Cameron <jcameron@webmin.com>
Tue, 14 Jun 2011 00:53:03 +0000 (17:53 -0700)
lvm/CHANGELOG
lvm/edit_lv.cgi
lvm/lang/en
lvm/save_lv.cgi

index 3063b26..7da239a 100644 (file)
@@ -31,3 +31,4 @@ When editing a physical volume, its size can be increased to match the underlyin
 When creating a new striped logical volume, the strip size can now be selected.
 ---- Changes since 1.550 ----
 LVs being used by Cloudmin on the same system are now shown on the Logical Volumes page.
+When editing an LV whose size is not a round number of GB, MB or TB and is instead shown in kB, sizing can now be done to a size in GB, MB or TB.
index bd51b8b..7452bf8 100755 (executable)
@@ -38,7 +38,8 @@ if (!&can_resize_lv_stat(@stat)) {
 else {
        # Details for new LV
        if ($stat[2]) {
-               print &ui_table_row($text{'lv_name'}, $lv->{'name'});
+               print &ui_table_row($text{'lv_name'}, $lv->{'name'},
+                                   undef, [ "", "valign=top" ]);
                print &ui_hidden("name", $lv->{'name'});
                }
        else {
@@ -86,7 +87,12 @@ else {
                else {
                        # Show in exactly kB
                        print &ui_table_row($text{'lv_size'},
-                               &ui_textbox("size", $lv->{'size'}, 8)." kB");
+                               &ui_radio_table("size_mode", 4,
+                                   [ [ 4, $text{'lv_sizeabs'},
+                                       &ui_textbox("sizekb", $lv->{'size'}, 8).
+                                       " kB" ],
+                                     [ 0, $text{'lv_sizesimple'},
+                                       &ui_bytesbox("size", $size, 8) ] ]));
                        }
                }
        }
index 160c7bc..f4aed83 100644 (file)
@@ -52,6 +52,8 @@ lv_size1=Percentage of VG size
 lv_size2=Percentage of VG free space
 lv_size3=Percentage of PV free space
 lv_size3a=$1 of $2
+lv_sizeabs=Exact size
+lv_sizesimple=Size with units
 lv_device=Device file
 lv_status=Current status
 lv_mount=Mounted on $1 as $2
index b5dba74..7dda68a 100755 (executable)
@@ -64,7 +64,7 @@ else {
                $size = $in{'freesize'};
                $sizeof = 'FREE';
                }
-       else {
+       elsif ($in{'size_mode'} == 3) {
                # Size of some PV
                $in{'pvsize'} =~ /^\d+$/ &&
                        $in{'pvsize'} > 0 &&
@@ -72,6 +72,15 @@ else {
                $size = $in{'pvsize'};
                $sizeof = $in{'pvof'};
                }
+       elsif ($in{'size_mode'} == 4) {
+               # Size in kB
+               $in{'sizekb'} =~ /^\d+$/ || &error($text{'lv_esize'});
+               $size = $in{'sizekb'};
+               $sizeof = undef;
+               }
+       else {
+               &error("Invalid size mode ".$in{'size_mode'});
+               }
        $in{'snap'} || $in{'lv'} || $in{'stripe_def'} ||
                $in{'stripe'} =~ /^[1-9]\d*$/ || &error($text{'lv_estripe'});