]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libfdisk: (gpt) make it possible to create really small partitions
authorKarel Zak <kzak@redhat.com>
Mon, 8 Jun 2015 14:02:17 +0000 (16:02 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 8 Jun 2015 14:02:17 +0000 (16:02 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
disk-utils/fdisk.c
libfdisk/src/gpt.c

index a4130afb9e7c56a0ff478c146700430ab9f472b1..63eacad4f121b423fbdf8648da080bbf2ee4f3a8 100644 (file)
@@ -311,7 +311,7 @@ static int ask_offset(struct fdisk_context *cxt,
                                num, sig, pwr,
                                sig ? "relative" : "absolute"));
                if (num >= low && num <= high) {
-                       if (sig && pwr)
+                       if (sig)
                                fdisk_ask_number_set_relative(ask, 1);
                        return fdisk_ask_number_set_result(ask, num);
                }
index 3db81bedfb9c16632cbc8ec09af2d7ffab83374c..e3b86cb1f2d2a4e0aceb88487ebb54d66fc5711b 100644 (file)
@@ -2162,7 +2162,10 @@ static int gpt_add_partition(
 
                        user_l = fdisk_ask_number_get_result(ask);
                        if (fdisk_ask_number_is_relative(ask)) {
-                               user_l = fdisk_align_lba_in_range(cxt, user_l, user_f, dflt_l) - 1;
+
+                               user_l = fdisk_align_lba_in_range(cxt, user_l, user_f, dflt_l);
+                               if (user_l > user_f)
+                                       user_l -= 1;
 
                                /* no space for anything useful, use all space
                                if (user_l + (cxt->grain / cxt->sector_size) > dflt_l)
@@ -2170,7 +2173,7 @@ static int gpt_add_partition(
                                */
                        }
 
-                       if (user_l > user_f && user_l <= disk_l)
+                       if (user_l >= user_f && user_l <= disk_l)
                                break;
                }
        }