52 lines
1.9 KiB
Diff
52 lines
1.9 KiB
Diff
|
|
From 9e9ad25d690b284427f9a355475bcdddb17cf1e0 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Karel Zak <kzak@redhat.com>
|
||
|
|
Date: Thu, 19 Aug 2021 12:10:02 +0200
|
||
|
|
Subject: [PATCH] sfdisk: write empty label also when only ignored partition
|
||
|
|
specified
|
||
|
|
|
||
|
|
sfdisk writes empty disk label only when "label:" header specified.
|
||
|
|
Unfortunately, this feature is ignored when all specified partitions
|
||
|
|
are ignored
|
||
|
|
|
||
|
|
echo -e "label: dos\n0,0,0\n" | sfdisk /dev/sdc
|
||
|
|
|
||
|
|
Fixes: https://github.com/karelzak/util-linux/issues/1413
|
||
|
|
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||
|
|
---
|
||
|
|
disk-utils/sfdisk.c | 5 +++--
|
||
|
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
|
||
|
|
index 526d090..b08c945 100644
|
||
|
|
--- a/disk-utils/sfdisk.c
|
||
|
|
+++ b/disk-utils/sfdisk.c
|
||
|
|
@@ -1714,7 +1714,7 @@ static void refresh_prompt_buffer(struct sfdisk *sf, const char *devname,
|
||
|
|
*/
|
||
|
|
static int command_fdisk(struct sfdisk *sf, int argc, char **argv)
|
||
|
|
{
|
||
|
|
- int rc = 0, partno = sf->partno, created = 0, unused = 0;
|
||
|
|
+ int rc = 0, partno = sf->partno, created = 0, unused = 0, ignored = 0;
|
||
|
|
struct fdisk_script *dp;
|
||
|
|
struct fdisk_table *tb = NULL;
|
||
|
|
const char *devname = NULL, *label;
|
||
|
|
@@ -1897,6 +1897,7 @@ static int command_fdisk(struct sfdisk *sf, int argc, char **argv)
|
||
|
|
if (ignore_partition(pa)) {
|
||
|
|
fdisk_info(sf->cxt, _("Ignoring partition."));
|
||
|
|
next_partno++;
|
||
|
|
+ ignored++;
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
if (!created) { /* create a new disklabel */
|
||
|
|
@@ -1960,7 +1961,7 @@ static int command_fdisk(struct sfdisk *sf, int argc, char **argv)
|
||
|
|
/* create empty disk label if label, but no partition specified */
|
||
|
|
if ((rc == SFDISK_DONE_EOF || rc == SFDISK_DONE_WRITE) && created == 0
|
||
|
|
&& fdisk_script_has_force_label(dp) == 1
|
||
|
|
- && fdisk_table_get_nents(tb) == 0
|
||
|
|
+ && fdisk_table_get_nents(tb) == (size_t) ignored
|
||
|
|
&& fdisk_script_get_header(dp, "label")) {
|
||
|
|
|
||
|
|
int xrc = fdisk_apply_script_headers(sf->cxt, dp);
|
||
|
|
--
|
||
|
|
1.8.3.1
|
||
|
|
|