summaryrefslogtreecommitdiffstats
path: root/fdisks/fdisk.c
diff options
context:
space:
mode:
authorKarel Zak2013-01-18 11:43:56 +0100
committerKarel Zak2013-03-11 12:47:29 +0100
commit9fcd49d5517dffa1b98d29faff5090e88e9a68f0 (patch)
treee6446a89c309a8784ecb396ebafe7cda4ff200ad /fdisks/fdisk.c
parentfdisk: (gpt) remove global variables, cleanup header verification (diff)
downloadkernel-qcow2-util-linux-9fcd49d5517dffa1b98d29faff5090e88e9a68f0.tar.gz
kernel-qcow2-util-linux-9fcd49d5517dffa1b98d29faff5090e88e9a68f0.tar.xz
kernel-qcow2-util-linux-9fcd49d5517dffa1b98d29faff5090e88e9a68f0.zip
libfdisk: (gpt) introduce driver independent partitions counters
label->nparts_{max,cur} to later replace global variable partitions Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'fdisks/fdisk.c')
-rw-r--r--fdisks/fdisk.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/fdisks/fdisk.c b/fdisks/fdisk.c
index 2f5029640..2b8538d90 100644
--- a/fdisks/fdisk.c
+++ b/fdisks/fdisk.c
@@ -1146,14 +1146,27 @@ static void new_partition(struct fdisk_context *cxt)
{
int partnum = 0;
+ assert(cxt);
+ assert(cxt->label);
+
if (warn_geometry(cxt))
return;
if (fdisk_is_disklabel(cxt, SUN) ||
fdisk_is_disklabel(cxt, SGI) ||
- fdisk_is_disklabel(cxt, GPT))
- partnum = get_partition(cxt, 0, partitions);
+ fdisk_is_disklabel(cxt, GPT)) {
+ size_t dflt = 0;
+
+ /*
+ * TODO: always use label->nparts_cur + 1
+ * (currenly only few drivers maintain label->nparts_* counters)
+ */
+ if (cxt->label->nparts_max)
+ dflt = cxt->label->nparts_cur + 1;
+
+ partnum = get_partition_dflt(cxt, 0, partitions, dflt);
+ }
fdisk_add_partition(cxt, partnum, NULL);
}