From: Karel Zak Date: Mon, 8 Jun 2015 14:02:17 +0000 (+0200) Subject: libfdisk: (gpt) make it possible to create really small partitions X-Git-Tag: v2.27-rc1~159 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=765004f3eb95f21b578795ecf8831225a6dcd95a;p=thirdparty%2Futil-linux.git libfdisk: (gpt) make it possible to create really small partitions Signed-off-by: Karel Zak --- diff --git a/disk-utils/fdisk.c b/disk-utils/fdisk.c index a4130afb9e..63eacad4f1 100644 --- a/disk-utils/fdisk.c +++ b/disk-utils/fdisk.c @@ -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); } diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c index 3db81bedfb..e3b86cb1f2 100644 --- a/libfdisk/src/gpt.c +++ b/libfdisk/src/gpt.c @@ -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; } }