diff options
author | Karel Zak | 2013-01-18 11:43:56 +0100 |
---|---|---|
committer | Karel Zak | 2013-03-11 12:47:29 +0100 |
commit | 9fcd49d5517dffa1b98d29faff5090e88e9a68f0 (patch) | |
tree | e6446a89c309a8784ecb396ebafe7cda4ff200ad /fdisks/fdisk.c | |
parent | fdisk: (gpt) remove global variables, cleanup header verification (diff) | |
download | kernel-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.c | 17 |
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); } |