|
@@ -0,0 +1,208 @@
|
|
|
|
+This patch was adopted from
|
|
|
|
+http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-core/util-linux/util-linux/util-linux-native.patch
|
|
|
|
+
|
|
|
|
+Support older hosts with latest util-linux-native
|
|
|
|
+
|
|
|
|
+mkostemp is not defined on older machines. So we detect this and
|
|
|
|
+provide a define that uses mkstemp instead.
|
|
|
|
+
|
|
|
|
+O_CLOEXEC is not defined on older machines. It is however defined
|
|
|
|
+in the 'c.h' header. Fix up the users to include 'c.h'.
|
|
|
|
+
|
|
|
|
+fdisks/fdisksunlabel.c was modified to use qsort_r, however
|
|
|
|
+this is not defined on older hosts. Revert:
|
|
|
|
+ commit c69bbca9c1f6645097bd20fe3a21f5a99a2a0698
|
|
|
|
+ fdisk: (sun): use ask API, remove global variable
|
|
|
|
+
|
|
|
|
+Upstream-Status: Inappropriate [other]
|
|
|
|
+Patches revert upstream changes in order to support older
|
|
|
|
+machines.
|
|
|
|
+
|
|
|
|
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
|
|
|
+
|
|
|
|
+--- a/configure.ac 2013-09-05 15:31:11.460864363 -0500
|
|
|
|
++++ b/configure.ac 2013-09-05 15:31:21.590981268 -0500
|
|
|
|
+@@ -323,6 +323,7 @@
|
|
|
|
+ llseek \
|
|
|
|
+ lseek64 \
|
|
|
|
+ mempcpy \
|
|
|
|
++ mkostemp \
|
|
|
|
+ nanosleep \
|
|
|
|
+ personality \
|
|
|
|
+ posix_fadvise \
|
|
|
|
+--- a/include/c.h 2013-07-30 03:39:26.200738180 -0500
|
|
|
|
++++ b/include/c.h 2013-09-05 15:31:21.590981268 -0500
|
|
|
|
+@@ -236,6 +236,13 @@
|
|
|
|
+ #endif
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
++ * mkostemp replacement
|
|
|
|
++ */
|
|
|
|
++#ifndef HAVE_MKOSTEMP
|
|
|
|
++#define mkostemp(template, flags) mkstemp(template)
|
|
|
|
++#endif
|
|
|
|
++
|
|
|
|
++/*
|
|
|
|
+ * MAXHOSTNAMELEN replacement
|
|
|
|
+ */
|
|
|
|
+ static inline size_t get_hostname_max(void)
|
|
|
|
+--- a/lib/randutils.c 2013-06-13 02:46:10.408650519 -0500
|
|
|
|
++++ b/lib/randutils.c 2013-09-05 15:31:21.650099925 -0500
|
|
|
|
+@@ -16,6 +16,7 @@
|
|
|
|
+ #include <sys/syscall.h>
|
|
|
|
+
|
|
|
|
+ #include "randutils.h"
|
|
|
|
++#include "c.h"
|
|
|
|
+
|
|
|
|
+ #ifdef HAVE_TLS
|
|
|
|
+ #define THREAD_LOCAL static __thread
|
|
|
|
+--- a/lib/wholedisk.c 2013-06-13 02:46:10.411650545 -0500
|
|
|
|
++++ b/lib/wholedisk.c 2013-09-05 15:31:21.650099925 -0500
|
|
|
|
+@@ -10,6 +10,7 @@
|
|
|
|
+
|
|
|
|
+ #include "blkdev.h"
|
|
|
|
+ #include "wholedisk.h"
|
|
|
|
++#include "c.h"
|
|
|
|
+
|
|
|
|
+ int is_whole_disk_fd(int fd, const char *name)
|
|
|
|
+ {
|
|
|
|
+--- a/fdisks/fdisksunlabel.c 2013-07-30 03:39:26.197738150 -0500
|
|
|
|
++++ b/fdisks/fdisksunlabel.c 2013-09-05 15:31:21.650099925 -0500
|
|
|
|
+@@ -383,10 +383,10 @@
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+-static int verify_sun_cmp(int *a, int *b, void *data)
|
|
|
|
+-{
|
|
|
|
+- unsigned int *verify_sun_starts = (unsigned int *) data;
|
|
|
|
++static unsigned int *verify_sun_starts;
|
|
|
|
+
|
|
|
|
++static int verify_sun_cmp(int *a, int *b)
|
|
|
|
++{
|
|
|
|
+ if (*a == -1)
|
|
|
|
+ return 1;
|
|
|
|
+ if (*b == -1)
|
|
|
|
+@@ -401,7 +401,6 @@
|
|
|
|
+ uint32_t starts[SUN_MAXPARTITIONS], lens[SUN_MAXPARTITIONS], start, stop;
|
|
|
|
+ uint32_t i,j,k,starto,endo;
|
|
|
|
+ int array[SUN_MAXPARTITIONS];
|
|
|
|
+- unsigned int *verify_sun_starts;
|
|
|
|
+
|
|
|
|
+ assert(cxt);
|
|
|
|
+ assert(cxt->label);
|
|
|
|
+@@ -442,16 +441,14 @@
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+-
|
|
|
|
+ for (i = 0; i < SUN_MAXPARTITIONS; i++) {
|
|
|
|
+ if (lens[i])
|
|
|
|
+ array[i] = i;
|
|
|
|
+ else
|
|
|
|
+ array[i] = -1;
|
|
|
|
+ }
|
|
|
|
+- qsort_r(array,ARRAY_SIZE(array),sizeof(array[0]),
|
|
|
|
+- (int (*)(const void *,const void *,void *)) verify_sun_cmp,
|
|
|
|
+- verify_sun_starts);
|
|
|
|
++ qsort(array,ARRAY_SIZE(array),sizeof(array[0]),
|
|
|
|
++ (int (*)(const void *,const void *)) verify_sun_cmp);
|
|
|
|
+
|
|
|
|
+ if (array[0] == -1) {
|
|
|
|
+ fdisk_info(cxt, _("No partitions defined"));
|
|
|
|
+@@ -468,6 +465,7 @@
|
|
|
|
+ start = (starts[array[i]] + lens[array[i]]);
|
|
|
|
+ if (start < stop)
|
|
|
|
+ fdisk_warnx(cxt, _("Unused gap - sectors %d-%d"), start, stop);
|
|
|
|
++
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+@@ -746,18 +744,12 @@
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+-
|
|
|
|
+ void fdisk_sun_set_alt_cyl(struct fdisk_context *cxt)
|
|
|
|
+ {
|
|
|
|
+ struct sun_disklabel *sunlabel = self_disklabel(cxt);
|
|
|
|
+- uintmax_t res;
|
|
|
|
+- int rc = fdisk_ask_number(cxt, 0, /* low */
|
|
|
|
+- be16_to_cpu(sunlabel->acyl), /* default */
|
|
|
|
+- 65535, /* high */
|
|
|
|
+- _("Number of alternate cylinders"), /* query */
|
|
|
|
+- &res); /* result */
|
|
|
|
+- if (!rc)
|
|
|
|
+- sunlabel->acyl = cpu_to_be16(res);
|
|
|
|
++ sunlabel->acyl =
|
|
|
|
++ cpu_to_be16(read_int(cxt, 0, be16_to_cpu(sunlabel->acyl), 65535, 0,
|
|
|
|
++ _("Number of alternate cylinders")));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ void fdisk_sun_set_ncyl(struct fdisk_context *cxt, int cyl)
|
|
|
|
+@@ -769,54 +761,33 @@
|
|
|
|
+ void fdisk_sun_set_xcyl(struct fdisk_context *cxt)
|
|
|
|
+ {
|
|
|
|
+ struct sun_disklabel *sunlabel = self_disklabel(cxt);
|
|
|
|
+- uintmax_t res;
|
|
|
|
+- int rc = fdisk_ask_number(cxt, 0, /* low */
|
|
|
|
+- be16_to_cpu(sunlabel->apc), /* default */
|
|
|
|
+- cxt->geom.sectors, /* high */
|
|
|
|
+- _("Extra sectors per cylinder"), /* query */
|
|
|
|
+- &res); /* result */
|
|
|
|
+- if (!rc)
|
|
|
|
+- sunlabel->apc = cpu_to_be16(res);
|
|
|
|
++ sunlabel->apc =
|
|
|
|
++ cpu_to_be16(read_int(cxt, 0, be16_to_cpu(sunlabel->apc), cxt->geom.sectors, 0,
|
|
|
|
++ _("Extra sectors per cylinder")));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ void fdisk_sun_set_ilfact(struct fdisk_context *cxt)
|
|
|
|
+ {
|
|
|
|
+ struct sun_disklabel *sunlabel = self_disklabel(cxt);
|
|
|
|
+- uintmax_t res;
|
|
|
|
+- int rc = fdisk_ask_number(cxt, 1, /* low */
|
|
|
|
+- be16_to_cpu(sunlabel->intrlv), /* default */
|
|
|
|
+- 32, /* high */
|
|
|
|
+- _("Interleave factor"), /* query */
|
|
|
|
+- &res); /* result */
|
|
|
|
+- if (!rc)
|
|
|
|
+- sunlabel->intrlv = cpu_to_be16(res);
|
|
|
|
++ sunlabel->intrlv =
|
|
|
|
++ cpu_to_be16(read_int(cxt, 1, be16_to_cpu(sunlabel->intrlv), 32, 0,
|
|
|
|
++ _("Interleave factor")));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ void fdisk_sun_set_rspeed(struct fdisk_context *cxt)
|
|
|
|
+ {
|
|
|
|
+ struct sun_disklabel *sunlabel = self_disklabel(cxt);
|
|
|
|
+- uintmax_t res;
|
|
|
|
+- int rc = fdisk_ask_number(cxt, 1, /* low */
|
|
|
|
+- be16_to_cpu(sunlabel->rpm), /* default */
|
|
|
|
+- USHRT_MAX, /* high */
|
|
|
|
+- _("Rotation speed (rpm)"), /* query */
|
|
|
|
+- &res); /* result */
|
|
|
|
+- if (!rc)
|
|
|
|
+- sunlabel->rpm = cpu_to_be16(res);
|
|
|
|
+-
|
|
|
|
++ sunlabel->rpm =
|
|
|
|
++ cpu_to_be16(read_int(cxt, 1, be16_to_cpu(sunlabel->rpm), 100000, 0,
|
|
|
|
++ _("Rotation speed (rpm)")));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ void fdisk_sun_set_pcylcount(struct fdisk_context *cxt)
|
|
|
|
+ {
|
|
|
|
+ struct sun_disklabel *sunlabel = self_disklabel(cxt);
|
|
|
|
+- uintmax_t res;
|
|
|
|
+- int rc = fdisk_ask_number(cxt, 0, /* low */
|
|
|
|
+- be16_to_cpu(sunlabel->pcyl), /* default */
|
|
|
|
+- USHRT_MAX, /* high */
|
|
|
|
+- _("Number of physical cylinders"), /* query */
|
|
|
|
+- &res); /* result */
|
|
|
|
+- if (!rc)
|
|
|
|
+- sunlabel->pcyl = cpu_to_be16(res);
|
|
|
|
++ sunlabel->pcyl =
|
|
|
|
++ cpu_to_be16(read_int(cxt, 0, be16_to_cpu(sunlabel->pcyl), 65535, 0,
|
|
|
|
++ _("Number of physical cylinders")));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ static int sun_write_disklabel(struct fdisk_context *cxt)
|