kzak pushed to util-linux (f22). "2.26.1-1: upgrade and fix sfdisk bugs"
notifications at fedoraproject.org
notifications at fedoraproject.org
Mon Apr 13 16:04:24 UTC 2015
>From 3fe05ecbfc63f39328bbd2542198e74365879bdb Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak at redhat.com>
Date: Mon, 13 Apr 2015 18:02:32 +0200
Subject: 2.26.1-1: upgrade and fix sfdisk bugs
diff --git a/.gitignore b/.gitignore
index 83370dc..4f7aeb9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,3 +40,4 @@
/util-linux-2.26-rc1.tar.xz
/util-linux-2.26-rc2.tar.xz
/util-linux-2.26.tar.xz
+/util-linux-2.26.1.tar.xz
diff --git a/2.27-libfdisk-dos-retain-existing-boot-flag-when-resizing.patch b/2.27-libfdisk-dos-retain-existing-boot-flag-when-resizing.patch
new file mode 100644
index 0000000..d15014d
--- /dev/null
+++ b/2.27-libfdisk-dos-retain-existing-boot-flag-when-resizing.patch
@@ -0,0 +1,62 @@
+From 376484140cb7ef117616ac2880bd8ec18381b18f Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak at redhat.com>
+Date: Mon, 13 Apr 2015 10:29:00 +0200
+Subject: [PATCH 2/5] libfdisk: (dos) retain existing boot flag when resizing
+ a partition
+
+Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1210912
+Signed-off-by: Karel Zak <kzak at redhat.com>
+Co-Author: awilliam at redhat.com
+---
+ libfdisk/src/dos.c | 8 +++++---
+ libfdisk/src/partition.c | 3 +--
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/libfdisk/src/dos.c b/libfdisk/src/dos.c
+index dce9829..6468071 100644
+--- a/libfdisk/src/dos.c
++++ b/libfdisk/src/dos.c
+@@ -1221,7 +1221,7 @@ static int add_partition(struct fdisk_context *cxt, size_t n,
+ }
+ }
+
+- set_partition(cxt, n, 0, start, stop, sys, pa && pa->boot == 1 ? 1 : 0);
++ set_partition(cxt, n, 0, start, stop, sys, fdisk_partition_is_bootable(pa));
+ if (n > 4) {
+ struct pte *pe = self_pte(cxt, n);
+ set_partition(cxt, n - 1, 1, pe->offset, stop,
+@@ -1963,13 +1963,15 @@ static int dos_set_partition(struct fdisk_context *cxt, size_t n,
+
+ set_partition(cxt, n, 0, start, start + size - 1,
+ pa->type ? pa->type->code : p->sys_ind,
+- pa->boot == 1);
++ FDISK_IS_UNDEF(pa->boot) ?
++ p->boot_ind == ACTIVE_FLAG :
++ fdisk_partition_is_bootable(pa));
+ } else {
+ DBG(LABEL, ul_debug("DOS: keep size, modify properties"));
+ if (pa->type)
+ p->sys_ind = pa->type->code;
+ if (!FDISK_IS_UNDEF(pa->boot))
+- p->boot_ind = pa->boot == 1 ? ACTIVE_FLAG : 0;
++ p->boot_ind = fdisk_partition_is_bootable(pa) ? ACTIVE_FLAG : 0;
+ }
+
+ partition_set_changed(cxt, n, 1);
+diff --git a/libfdisk/src/partition.c b/libfdisk/src/partition.c
+index 03c0eb5..a0b9ca5 100644
+--- a/libfdisk/src/partition.c
++++ b/libfdisk/src/partition.c
+@@ -757,8 +757,7 @@ int fdisk_partition_to_string(struct fdisk_partition *pa,
+ }
+ break;
+ case FDISK_FIELD_BOOT:
+- if (fdisk_partition_is_bootable(pa))
+- rc = asprintf(&p, "%c", pa->boot ? '*' : ' ');
++ p = fdisk_partition_is_bootable(pa) ? strdup("*") : NULL;
+ break;
+ case FDISK_FIELD_START:
+ if (fdisk_partition_has_start(pa)) {
+--
+2.1.0
+
diff --git a/2.27-libfdisk-fix-symbols-versioning-script.patch b/2.27-libfdisk-fix-symbols-versioning-script.patch
new file mode 100644
index 0000000..12f5ef1
--- /dev/null
+++ b/2.27-libfdisk-fix-symbols-versioning-script.patch
@@ -0,0 +1,41 @@
+From 6ece2f94849d5c61920d435804fb72b59503686f Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak at redhat.com>
+Date: Wed, 25 Mar 2015 11:08:22 +0100
+Subject: [PATCH 1/5] libfdisk: fix symbols versioning script
+
+Really stupid copy & past mistake. The libfdisk symbols should not be
+prefixed by MOUNT_ suffix.
+
+This change makes binaries linked with libfdisk 2.26 incompatible with
+new libfdisk. Fortunately, 2.26 has been the first release and very
+probably the library has been used for util-linux fdisks only.
+
+Signed-off-by: Karel Zak <kzak at redhat.com>
+---
+ libfdisk/src/libfdisk.sym | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/libfdisk/src/libfdisk.sym b/libfdisk/src/libfdisk.sym
+index 8364fe7..541b247 100644
+--- a/libfdisk/src/libfdisk.sym
++++ b/libfdisk/src/libfdisk.sym
+@@ -1,11 +1,12 @@
+ /*
+ * The symbol versioning ensures that a new application requiring symbol foo;
+- * can't run with old libblkid.so not providing foo;
+- * version info can't enforce this since we never change the SONAME.
++ * can't run with old library.so not providing foo.
++
++ * Version info can't enforce this since we never change the SONAME.
+ *
+- * Copyright (C) 2014 Karel Zak <kzak at redhat.com>
++ * Copyright (C) 2014-2015 Karel Zak <kzak at redhat.com>
+ */
+-MOUNT_2.26 {
++FDISK_2.26 {
+ global:
+ fdisk_add_partition;
+ fdisk_align_lba;
+--
+2.1.0
+
diff --git a/2.27-libfdisk-support-bootbits-protection-from-p-MBR.patch b/2.27-libfdisk-support-bootbits-protection-from-p-MBR.patch
new file mode 100644
index 0000000..0da79a9
--- /dev/null
+++ b/2.27-libfdisk-support-bootbits-protection-from-p-MBR.patch
@@ -0,0 +1,357 @@
+From 4bcc9fdca681b48c54954924608b8c337d61fbad Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak at redhat.com>
+Date: Mon, 13 Apr 2015 13:40:25 +0200
+Subject: [PATCH 4/5] libfdisk: support bootbits protection from (p)MBR
+
+Signed-off-by: Karel Zak <kzak at redhat.com>
+---
+ include/pt-mbr.h | 1 +
+ libfdisk/docs/libfdisk-sections.txt | 6 ++-
+ libfdisk/src/context.c | 33 ++++++++++++++++-
+ libfdisk/src/dos.c | 5 ++-
+ libfdisk/src/fdiskP.h | 4 +-
+ libfdisk/src/gpt.c | 6 ++-
+ libfdisk/src/libfdisk.h.in | 2 +
+ libfdisk/src/libfdisk.sym | 5 +++
+ libfdisk/src/sgi.c | 2 +-
+ libfdisk/src/sun.c | 2 +-
+ libfdisk/src/utils.c | 73 ++++++++++++++++++++++++++-----------
+ 11 files changed, 109 insertions(+), 30 deletions(-)
+
+diff --git a/include/pt-mbr.h b/include/pt-mbr.h
+index 1279e3c..6957b95 100644
+--- a/include/pt-mbr.h
++++ b/include/pt-mbr.h
+@@ -11,6 +11,7 @@ struct dos_partition {
+ } __attribute__((packed));
+
+ #define MBR_PT_OFFSET 0x1be
++#define MBR_PT_BOOTBITS_SIZE 440
+
+ static inline struct dos_partition *mbr_get_partition(unsigned char *mbr, int i)
+ {
+diff --git a/libfdisk/docs/libfdisk-sections.txt b/libfdisk/docs/libfdisk-sections.txt
+index 676d500..2d5cd92 100644
+--- a/libfdisk/docs/libfdisk-sections.txt
++++ b/libfdisk/docs/libfdisk-sections.txt
+@@ -279,6 +279,7 @@ fdisk_unref_table
+ fdisk_context
+ fdisk_assign_device
+ fdisk_deassign_device
++fdisk_enable_bootbits_protection
+ fdisk_enable_details
+ fdisk_enable_listonly
+ fdisk_get_alignment_offset
+@@ -297,22 +298,23 @@ fdisk_get_parent
+ fdisk_get_physector_size
+ fdisk_get_sector_size
+ fdisk_get_size_unit
+-FDISK_PLURAL
+-FDISK_SINGULAR
+ fdisk_get_unit
+ fdisk_get_units_per_sector
+ fdisk_has_label
++fdisk_has_protected_bootbits
+ fdisk_is_details
+ fdisk_is_labeltype
+ fdisk_is_listonly
+ fdisk_is_readonly
+ fdisk_new_context
+ fdisk_new_nested_context
++FDISK_PLURAL
+ fdisk_ref_context
+ fdisk_set_first_lba
+ fdisk_set_last_lba
+ fdisk_set_size_unit
+ fdisk_set_unit
++FDISK_SINGULAR
+ fdisk_unref_context
+ fdisk_use_cylinders
+ </SECTION>
+diff --git a/libfdisk/src/context.c b/libfdisk/src/context.c
+index 84867b0..efc961c 100644
+--- a/libfdisk/src/context.c
++++ b/libfdisk/src/context.c
+@@ -94,12 +94,13 @@ static int init_nested_from_parent(struct fdisk_context *cxt, int isnew)
+ cxt->user_log_sector = parent->user_log_sector;
+ cxt->user_pyh_sector = parent->user_pyh_sector;
+
+- /* parent <--> nested independent setting, initialize for new nested
++ /* parent <--> nested independent setting, initialize for new nested
+ * contexts only */
+ if (isnew) {
+ cxt->listonly = parent->listonly;
+ cxt->display_details = parent->display_details;
+ cxt->display_in_cyl_units = parent->display_in_cyl_units;
++ cxt->protect_bootbits = parent->protect_bootbits;
+ }
+
+ free(cxt->dev_path);
+@@ -304,6 +305,36 @@ int fdisk_has_label(struct fdisk_context *cxt)
+ }
+
+ /**
++ * fdisk_has_protected_bootbits:
++ * @cxt: fdisk context
++ *
++ * Returns: return 1 if boot bits protection enabled.
++ */
++int fdisk_has_protected_bootbits(struct fdisk_context *cxt)
++{
++ return cxt && cxt->protect_bootbits;
++}
++
++/**
++ * fdisk_enable_bootbits_protection:
++ * @cxt: fdisk context
++ * @enable: 1 or 0
++ *
++ * The library zeroizes all the first sector when create a new disk label by
++ * default. This function allows to control this behavior. For now it's
++ * supported for MBR and GPT.
++ *
++ * Returns: 0 on success, < 0 on error.
++ */
++int fdisk_enable_bootbits_protection(struct fdisk_context *cxt, int enable)
++{
++ if (!cxt)
++ return -EINVAL;
++ cxt->protect_bootbits = enable ? 1 : 0;
++ return 0;
++}
++
++/**
+ * fdisk_get_npartitions:
+ * @cxt: context
+ *
+diff --git a/libfdisk/src/dos.c b/libfdisk/src/dos.c
+index 6468071..f2308e3 100644
+--- a/libfdisk/src/dos.c
++++ b/libfdisk/src/dos.c
+@@ -659,7 +659,10 @@ static int dos_create_disklabel(struct fdisk_context *cxt)
+ if (!has_id)
+ random_get_bytes(&id, sizeof(id));
+
+- rc = fdisk_init_firstsector_buffer(cxt);
++ if (fdisk_has_protected_bootbits(cxt))
++ rc = fdisk_init_firstsector_buffer(cxt, 0, MBR_PT_BOOTBITS_SIZE);
++ else
++ rc = fdisk_init_firstsector_buffer(cxt, 0, 0);
+ if (rc)
+ return rc;
+ dos_init(cxt);
+diff --git a/libfdisk/src/fdiskP.h b/libfdisk/src/fdiskP.h
+index dc561f3..0ca498d 100644
+--- a/libfdisk/src/fdiskP.h
++++ b/libfdisk/src/fdiskP.h
+@@ -350,6 +350,7 @@ struct fdisk_context {
+ unsigned int readonly : 1, /* don't write to the device */
+ display_in_cyl_units : 1, /* for obscure labels */
+ display_details : 1, /* expert display mode */
++ protect_bootbits : 1, /* don't zeroize fll irst sector */
+ listonly : 1; /* list partition, nothing else */
+
+ int sizeunit; /* SIZE fields, FDISK_SIZEUNIT_* */
+@@ -402,7 +403,8 @@ extern int fdisk_apply_user_device_properties(struct fdisk_context *cxt);
+ extern void fdisk_zeroize_device_properties(struct fdisk_context *cxt);
+
+ /* utils.c */
+-extern int fdisk_init_firstsector_buffer(struct fdisk_context *cxt);
++extern int fdisk_init_firstsector_buffer(struct fdisk_context *cxt,
++ unsigned int protect_off, unsigned int protect_size);
+ extern int fdisk_read_firstsector(struct fdisk_context *cxt);
+ extern char *fdisk_partname(const char *dev, size_t partno);
+
+diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c
+index 61b0a32..22e2d16 100644
+--- a/libfdisk/src/gpt.c
++++ b/libfdisk/src/gpt.c
+@@ -27,6 +27,7 @@
+ #include "bitops.h"
+ #include "strutils.h"
+ #include "all-io.h"
++#include "pt-mbr.h"
+
+ /**
+ * SECTION: gpt
+@@ -406,7 +407,10 @@ static int gpt_mknew_pmbr(struct fdisk_context *cxt)
+ if (!cxt || !cxt->firstsector)
+ return -ENOSYS;
+
+- rc = fdisk_init_firstsector_buffer(cxt);
++ if (fdisk_has_protected_bootbits(cxt))
++ rc = fdisk_init_firstsector_buffer(cxt, 0, MBR_PT_BOOTBITS_SIZE);
++ else
++ rc = fdisk_init_firstsector_buffer(cxt, 0, 0);
+ if (rc)
+ return rc;
+
+diff --git a/libfdisk/src/libfdisk.h.in b/libfdisk/src/libfdisk.h.in
+index 3aeef1e..78c0728 100644
+--- a/libfdisk/src/libfdisk.h.in
++++ b/libfdisk/src/libfdisk.h.in
+@@ -211,6 +211,8 @@ enum {
+ int fdisk_set_size_unit(struct fdisk_context *cxt, int unit);
+ int fdisk_get_size_unit(struct fdisk_context *cxt);
+
++int fdisk_has_protected_bootbits(struct fdisk_context *cxt);
++int fdisk_enable_bootbits_protection(struct fdisk_context *cxt, int enable);
+
+ /* parttype.c */
+ struct fdisk_parttype *fdisk_new_parttype(void);
+diff --git a/libfdisk/src/libfdisk.sym b/libfdisk/src/libfdisk.sym
+index 541b247..9f720ff 100644
+--- a/libfdisk/src/libfdisk.sym
++++ b/libfdisk/src/libfdisk.sym
+@@ -239,3 +239,8 @@ global:
+ local:
+ *;
+ };
++
++FDISK_2.27 {
++ fdisk_enable_bootbits_protection;
++ fdisk_has_protected_bootbits;
++} FDISK_2.26;
+diff --git a/libfdisk/src/sgi.c b/libfdisk/src/sgi.c
+index cd4cedf..7cc68b5 100644
+--- a/libfdisk/src/sgi.c
++++ b/libfdisk/src/sgi.c
+@@ -965,7 +965,7 @@ static int sgi_create_disklabel(struct fdisk_context *cxt)
+ }
+ }
+ #endif
+- rc = fdisk_init_firstsector_buffer(cxt);
++ rc = fdisk_init_firstsector_buffer(cxt, 0, 0);
+ if (rc)
+ return rc;
+
+diff --git a/libfdisk/src/sun.c b/libfdisk/src/sun.c
+index d99c39f..27e3bdd 100644
+--- a/libfdisk/src/sun.c
++++ b/libfdisk/src/sun.c
+@@ -209,7 +209,7 @@ static int sun_create_disklabel(struct fdisk_context *cxt)
+ assert(fdisk_is_label(cxt, SUN));
+
+ /* map first sector to header */
+- rc = fdisk_init_firstsector_buffer(cxt);
++ rc = fdisk_init_firstsector_buffer(cxt, 0, 0);
+ if (rc)
+ return rc;
+
+diff --git a/libfdisk/src/utils.c b/libfdisk/src/utils.c
+index 482a306..cc470d9 100644
+--- a/libfdisk/src/utils.c
++++ b/libfdisk/src/utils.c
+@@ -10,14 +10,49 @@
+ * @short_description: misc fdisk functions
+ */
+
++static int read_from_device(struct fdisk_context *cxt,
++ unsigned char *buf,
++ uintmax_t start, size_t size)
++{
++ ssize_t r;
++
++ assert(cxt);
++
++ DBG(CXT, ul_debugobj(cxt, "reading: offset=%ju, size=%zu",
++ start, size));
++
++ r = lseek(cxt->dev_fd, start, SEEK_SET);
++ if (r == -1)
++ {
++ DBG(CXT, ul_debugobj(cxt, "failed to seek to offset %ju: %m", start));
++ return -errno;
++ }
++
++ r = read(cxt->dev_fd, buf, size);
++ if (r < 0 || r != size) {
++ if (!errno)
++ errno = EINVAL; /* probably too small file/device */
++ DBG(CXT, ul_debugobj(cxt, "failed to read %zu from offset %ju: %m",
++ size, start));
++ return -errno;
++ }
++
++ return 0;
++}
++
++
+ /*
+ * Zeros in-memory first sector buffer
+ */
+-int fdisk_init_firstsector_buffer(struct fdisk_context *cxt)
++int fdisk_init_firstsector_buffer(struct fdisk_context *cxt,
++ unsigned int protect_off,
++ unsigned int protect_size)
+ {
+ if (!cxt)
+ return -EINVAL;
+
++ assert(protect_off + protect_size <= cxt->sector_size);
++
+ if (!cxt->firstsector || cxt->firstsector_bufsz != cxt->sector_size) {
+ /* Let's allocate a new buffer if no allocated yet, or the
+ * current buffer has incorrect size */
+@@ -36,43 +71,37 @@ int fdisk_init_firstsector_buffer(struct fdisk_context *cxt)
+
+ DBG(CXT, ul_debugobj(cxt, "zeroize in-memory first sector buffer"));
+ memset(cxt->firstsector, 0, cxt->firstsector_bufsz);
++
++ if (protect_size) {
++ /*
++ * It would be possible to reuse data from cxt->firstsector
++ * (call memset() for non-protected area only) and avoid one
++ * read() from the device, but it seems like a too fragile
++ * solution as we have no clue about stuff in the buffer --
++ * maybe it was already modified. Let's re-read from the device
++ * to be sure. -- kzak 13-Apr-2015
++ */
++ DBG(CXT, ul_debugobj(cxt, "first sector protection enabled -- re-reading"));
++ read_from_device(cxt, cxt->firstsector, protect_off, protect_size);
++ }
+ return 0;
+ }
+
+ int fdisk_read_firstsector(struct fdisk_context *cxt)
+ {
+- ssize_t r;
+ int rc;
+
+ assert(cxt);
+ assert(cxt->sector_size);
+
+- rc = fdisk_init_firstsector_buffer(cxt);
++ rc = fdisk_init_firstsector_buffer(cxt, 0, 0);
+ if (rc)
+ return rc;
+
+ assert(cxt->sector_size == cxt->firstsector_bufsz);
+
+- DBG(CXT, ul_debugobj(cxt, "reading first sector "
+- "buffer [sector_size=%lu]", cxt->sector_size));
+-
+- r = lseek(cxt->dev_fd, 0, SEEK_SET);
+- if (r == -1)
+- {
+- DBG(CXT, ul_debugobj(cxt, "failed to seek to first sector %m"));
+- return -errno;
+- }
+-
+- r = read(cxt->dev_fd, cxt->firstsector, cxt->sector_size);
+
+- if (r != cxt->sector_size) {
+- if (!errno)
+- errno = EINVAL; /* probably too small file/device */
+- DBG(CXT, ul_debugobj(cxt, "failed to read first sector %m"));
+- return -errno;
+- }
+-
+- return 0;
++ return read_from_device(cxt, cxt->firstsector, 0, cxt->sector_size);
+ }
+
+ /**
+--
+2.1.0
+
diff --git a/2.27-sfdisk-enable-bootbits-protection.patch b/2.27-sfdisk-enable-bootbits-protection.patch
new file mode 100644
index 0000000..ddf7ae4
--- /dev/null
+++ b/2.27-sfdisk-enable-bootbits-protection.patch
@@ -0,0 +1,26 @@
+From 67414f247ef7a3177c1349de7e18fbfe7ad5f904 Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak at redhat.com>
+Date: Mon, 13 Apr 2015 13:41:10 +0200
+Subject: [PATCH 5/5] sfdisk: enable bootbits protection
+
+Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1210428
+Signed-off-by: Karel Zak <kzak at redhat.com>
+---
+ disk-utils/sfdisk.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
+index 8846df8..dcdae33 100644
+--- a/disk-utils/sfdisk.c
++++ b/disk-utils/sfdisk.c
+@@ -190,6 +190,7 @@ static void sfdisk_init(struct sfdisk *sf)
+ if (!sf->cxt)
+ err(EXIT_FAILURE, _("failed to allocate libfdisk context"));
+ fdisk_set_ask(sf->cxt, ask_callback, (void *) sf);
++ fdisk_enable_bootbits_protection(sf->cxt, 1);
+
+ if (sf->label_nested) {
+ struct fdisk_context *x = fdisk_new_nested_context(sf->cxt,
+--
+2.1.0
+
diff --git a/2.27-sfdisk-improve-N-warnings.patch b/2.27-sfdisk-improve-N-warnings.patch
new file mode 100644
index 0000000..a628dff
--- /dev/null
+++ b/2.27-sfdisk-improve-N-warnings.patch
@@ -0,0 +1,62 @@
+From 3275c1ac6d28c2257eb031277510bc9da99deedd Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak at redhat.com>
+Date: Mon, 13 Apr 2015 12:08:50 +0200
+Subject: [PATCH 3/5] sfdisk: improve -N warnings
+
+Signed-off-by: Karel Zak <kzak at redhat.com>
+---
+ disk-utils/sfdisk.8 | 9 ++++++++-
+ disk-utils/sfdisk.c | 9 +++++++--
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/disk-utils/sfdisk.8 b/disk-utils/sfdisk.8
+index 66a8f99..0d63b6b 100644
+--- a/disk-utils/sfdisk.8
++++ b/disk-utils/sfdisk.8
+@@ -57,7 +57,14 @@ input format. If standard input is a terminal, then \fBsfdisk\fR starts an
+ interactive session.
+ .sp
+ If the option \fB\-N\fR is specified, then the changes are applied to
+-the partition addressed by \fIpartition-number\fR.
++the partition addressed by \fIpartition-number\fR. The unspecified fields
++of the partition are not modified.
++.sp
++Note that it's possible to address unused partition by \fB\-N\fR. For example
++MBR always contains 4 partitions, but the number of the used partitions may be
++smaller. In this case sfdisk follows the default values from the partition
++table and it does not use built-in defaults for the unused partition specified
++by \fB\-N\fR. See also \fB\---append\fR.
+ .TP
+ .BR \-a , " \-\-activate \fIdevice\fR [" \fIpartition-number\fR...]
+ Switch on the bootable flag. If no \fIpartition-number\fR is specified,
+diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
+index 2e89d94..8846df8 100644
+--- a/disk-utils/sfdisk.c
++++ b/disk-utils/sfdisk.c
+@@ -1109,16 +1109,21 @@ static int command_fdisk(struct sfdisk *sf, int argc, char **argv)
+ */
+ if (partno >= 0) {
+ size_t n;
++
+ if (!fdisk_has_label(sf->cxt))
+ errx(EXIT_FAILURE, _("%s: cannot modify partition %d: "
+ "no partition table was found"),
+- devname, partno);
++ devname, partno + 1);
+ n = fdisk_get_npartitions(sf->cxt);
+ if ((size_t) partno > n)
+ errx(EXIT_FAILURE, _("%s: cannot modify partition %d: "
+ "partition table contains only %zu "
+ "partitions"),
+- devname, partno, n);
++ devname, partno + 1, n);
++
++ if (!fdisk_is_partition_used(sf->cxt, partno))
++ fdisk_warnx(sf->cxt, _("warning: %s: partition %d is not defined yet"),
++ devname, partno + 1);
+ created = 1;
+ next_partno = partno;
+ }
+--
+2.1.0
+
diff --git a/sources b/sources
index 79b1640..1cde402 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-912c550a4e5c47c0ce9abd0733fa9a64 util-linux-2.26.tar.xz
+2308850946766677f3fabe0685e85de8 util-linux-2.26.1.tar.xz
diff --git a/util-linux.spec b/util-linux.spec
index 6faec3f..6c26d6b 100644
--- a/util-linux.spec
+++ b/util-linux.spec
@@ -1,7 +1,7 @@
### Header
Summary: A collection of basic system utilities
Name: util-linux
-Version: 2.26
+Version: 2.26.1
Release: 1%{?dist}
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
Group: System Environment/Base
@@ -27,7 +27,7 @@ BuildRequires: libcap-ng-devel
BuildRequires: python3-devel
### Sources
-Source0: ftp://ftp.kernel.org/pub/linux/utils/util-linux/v2.25/util-linux-%{upstream_version}.tar.xz
+Source0: ftp://ftp.kernel.org/pub/linux/utils/util-linux/v2.26/util-linux-%{upstream_version}.tar.xz
Source1: util-linux-login.pamd
Source2: util-linux-remote.pamd
Source3: util-linux-chsh-chfn.pamd
@@ -78,6 +78,13 @@ Requires: libfdisk = %{version}-%{release}
# 151635 - makeing /var/log/lastlog
Patch0: 2.23-login-lastlog-create.patch
+# upstream v2.27 / v2.26.2 backports (#1210428 and #1210912)
+Patch1: 2.27-libfdisk-fix-symbols-versioning-script.patch
+Patch2: 2.27-libfdisk-dos-retain-existing-boot-flag-when-resizing.patch
+Patch3: 2.27-sfdisk-improve-N-warnings.patch
+Patch4: 2.27-libfdisk-support-bootbits-protection-from-p-MBR.patch
+Patch5: 2.27-sfdisk-enable-bootbits-protection.patch
+
%description
The util-linux package contains a large variety of low-level system
utilities that are necessary for a Linux system to function. Among
@@ -879,6 +886,12 @@ exit 0
%{_libdir}/python*/site-packages/libmount/*
%changelog
+* Mon Apr 13 2015 Karel Zak <kzak at redhat.com> 2.26.1-1
+- upgrade to v2.26.1
+ ftp://ftp.kernel.org/pub/linux/utils/util-linux/v2.26/v2.26.1-ReleaseNotes
+- fix #1210912 - sfdisk 2.26 does not retain existing boot flag when resizing a partition
+- fix #1210428 - sfdisk 2.26 destroys existing boot sector when editing disk label
+
* Thu Feb 19 2015 Karel Zak <kzak at redhat.com> 2.26-1
- upgrade to stable release 2.26
--
cgit v0.10.2
http://pkgs.fedoraproject.org/cgit/util-linux.git/commit/?h=f22&id=3fe05ecbfc63f39328bbd2542198e74365879bdb
More information about the scm-commits
mailing list