From 02e1738cc332a572f1154962589c043bb1dac0b7b784ed74d446a8abe2e2d2cf Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Sat, 22 Mar 2014 06:49:49 +0000 Subject: [PATCH] Accepting request 226832 from Base:System - Merge fixes and features from SLE11 (bnc#831868): * Detect squashfs version <= 3 as squashfs3 and version >= 4 as squashfs. (mszeredi@suse.cz, util-linux-ng-2.16-squashfs3-detect.patch, bnc#666893) * add sfdisk-warn-about-2TB-limit.patch (puzel@novell.com, bnc#495657) * Document barrier option in mount.8 (jack@suse.cz, hvogel@suse.de, util-linux-ng-2.19.1-barrier_documentation.patch, bnc#489740) * lscpu: improve hypervisor detection (puzel@novell.com, fate#310255) - util-linux-lscpu-improve-hypervisor-detection.patch * umount: avoid calling readlink on mountpoints if not necessary - add: umount-avoid-readlink.patch (puzel@suse.com, bnc#794529) * fix file conflict between util-linux and s390-32 (puzel@suse.com, bnc#805684) * util-linux-update-default-commit-interval.patch: mount(8): update default commit interval (puzel@suse.com, bnc#809480) * Obsolete no more packaged uuid-runtime. - Add uname26 (util-linux-setarch-uname26.patch, FATE#313476). (forwarded request 226509 from sbrabec) OBS-URL: https://build.opensuse.org/request/show/226832 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/util-linux?expand=0&rev=182 --- sfdisk-warn-about-2TB-limit.patch | 31 +++ umount-avoid-readlink.patch | 46 ++++ ...x-lscpu-improve-hypervisor-detection.patch | 229 ++++++++++++++++++ util-linux-ng-2.16-squashfs3-detect.patch | 118 +++++++++ ...inux-ng-2.19.1-barrier_documentation.patch | 131 ++++++++++ util-linux-setarch-uname26.patch | 25 ++ ...linux-update-default-commit-interval.patch | 30 +++ util-linux.changes | 25 ++ util-linux.spec | 34 ++- 9 files changed, 667 insertions(+), 2 deletions(-) create mode 100644 sfdisk-warn-about-2TB-limit.patch create mode 100644 umount-avoid-readlink.patch create mode 100644 util-linux-lscpu-improve-hypervisor-detection.patch create mode 100644 util-linux-ng-2.16-squashfs3-detect.patch create mode 100644 util-linux-ng-2.19.1-barrier_documentation.patch create mode 100644 util-linux-setarch-uname26.patch create mode 100644 util-linux-update-default-commit-interval.patch diff --git a/sfdisk-warn-about-2TB-limit.patch b/sfdisk-warn-about-2TB-limit.patch new file mode 100644 index 0000000..0759672 --- /dev/null +++ b/sfdisk-warn-about-2TB-limit.patch @@ -0,0 +1,31 @@ +Index: util-linux-2.19.1/fdisk/sfdisk.c +=================================================================== +--- util-linux-2.24.1.orig/fdisks/sfdisk.c ++++ util-linux-2.24.1/fdisks/sfdisk.c +@@ -1271,6 +1271,26 @@ partitions_ok(int fd, struct disk_desc * + return 0; + } + } ++ /* Are the data partitions and the extended partition ++ within the DOS 2TB limit? */ ++ for (p = partitions; p < partitions+partno; p++) { ++ if (p->size && !is_extended(p->p.sys_type)) { ++ if( p->size >= (unsigned long) 0xffffffff ) { ++ warn(_("Warning: partition %s of size %lu exceeds " ++ "msdos 2TB limit.\n"), ++ PNO(p), p->size); ++ return 0; ++ } ++ for (q = partitions; q < partitions+partno; q++) ++ if (is_extended(q->p.sys_type)) ++ if ( q->size >= (unsigned long) 0xffffffff ) { ++ warn(_("Warning: partition %s of size %lu exceeds " ++ "msdos 2TB limit.\n"), ++ PNO(q), q->size); ++ return 0; ++ } ++ } ++ } + + /* + * Do all partitions start at a cylinder boundary ? diff --git a/umount-avoid-readlink.patch b/umount-avoid-readlink.patch new file mode 100644 index 0000000..fdf7d6f --- /dev/null +++ b/umount-avoid-readlink.patch @@ -0,0 +1,46 @@ +Subject: umount: avoid calling readlink on mountpoints. +References: bnc#794529 + +We normally want to canonicalize a path given to umount +in case it contains symlinks. This ensure the right entry +is removed from /etc/mtab. +However if the mountpoint is for a non-responsive NFS server, +that readlink could hang (*will* have if mounted with -o noac). + +In the normal case where no symlinks are used we don't need the +readlink() and we can easily detect this by checking if the +mount table contains the given name. +If it does, use the name as-is. +If it doesn't, then call canonicalize() + +--- + mount/umount.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +Index: util-linux-2.19.1/mount/umount.c +=================================================================== +--- util-linux-2.19.1.orig/mount-deprecated/umount.c ++++ util-linux-2.19.1/mount-deprecated/umount.c +@@ -588,12 +588,22 @@ umount_file (char *arg) { + return 0; + } + ++ /* If the name given is listed in the mount table, don't ++ * bother with canonicalize() - it can block an a non-responsive ++ * NFS server. ++ */ ++ file = arg; ++ mc = getmntdirbackward(arg, NULL); ++ if (!mc && !nocanonicalize) + file = canonicalize(arg); /* mtab paths are canonicalized */ ++ else ++ file = strdup(arg); + + try_loopdev: + if (verbose > 1) + printf(_("Trying to unmount %s\n"), file); + ++ if (!mc) + mc = getmntdirbackward(file, NULL); + if (!mc) { + mc = getmntdevbackward(file, NULL); diff --git a/util-linux-lscpu-improve-hypervisor-detection.patch b/util-linux-lscpu-improve-hypervisor-detection.patch new file mode 100644 index 0000000..6ab24c0 --- /dev/null +++ b/util-linux-lscpu-improve-hypervisor-detection.patch @@ -0,0 +1,229 @@ +--- + sys-utils/lscpu.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 152 insertions(+), 4 deletions(-) + +Index: util-linux-2.24.1/sys-utils/lscpu.c +=================================================================== +--- util-linux-2.24.1.orig/sys-utils/lscpu.c ++++ util-linux-2.24.1/sys-utils/lscpu.c +@@ -32,6 +32,15 @@ + #include + #include + #include ++#include ++#include ++#include ++#include ++#if defined(__x86_64__) || defined(__i386__) ++#ifdef HAVE_sys_io_h ++#include ++#endif ++#endif + + #include "cpuset.h" + #include "nls.h" +@@ -59,6 +68,7 @@ + #define _PATH_PROC_STATUS "/proc/self/status" + #define _PATH_PROC_VZ "/proc/vz" + #define _PATH_PROC_BC "/proc/bc" ++#define _PATH_PROC_DEVICETREE "/proc/device-tree" + #define _PATH_DEV_MEM "/dev/mem" + + /* virtualization types */ +@@ -86,7 +96,28 @@ const char *hv_vendors[] = { + [HYPER_UML] = "User-mode Linux", + [HYPER_INNOTEK] = "Innotek GmbH", + [HYPER_HITACHI] = "Hitachi", +- [HYPER_PARALLELS] = "Parallels" ++ [HYPER_PARALLELS] = "Parallels", ++ [HYPER_VBOX] = "Oracle", ++ [HYPER_OS400] = "OS/400", ++ [HYPER_PHYP] = "pHyp" ++}; ++ ++const int hv_vendor_pci[] = { ++ [HYPER_NONE] = 0x0000, ++ [HYPER_XEN] = 0x5853, ++ [HYPER_KVM] = 0x0000, ++ [HYPER_MSHV] = 0x1414, ++ [HYPER_VMWARE] = 0x15ad, ++ [HYPER_VBOX] = 0x80ee ++}; ++ ++const int hv_graphics_pci[] = { ++ [HYPER_NONE] = 0x0000, ++ [HYPER_XEN] = 0x0001, ++ [HYPER_KVM] = 0x0000, ++ [HYPER_MSHV] = 0x5353, ++ [HYPER_VMWARE] = 0x0710, ++ [HYPER_VBOX] = 0xbeef + }; + + /* CPU modes */ +@@ -550,10 +581,111 @@ read_hypervisor_cpuid(struct lscpu_desc + desc->hyper = HYPER_VMWARE; + } + ++#define VMWARE_BDOOR_MAGIC 0x564D5868 ++#define VMWARE_BDOOR_PORT 0x5658 ++#define VMWARE_BDOOR_CMD_GETVERSION 10 ++ ++#define VMWARE_BDOOR(eax, ebx, ecx, edx) \ ++ __asm__("inl (%%dx)" : \ ++ "=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) : \ ++ "0"(VMWARE_BDOOR_MAGIC), "1"(VMWARE_BDOOR_CMD_GETVERSION), \ ++ "2"(VMWARE_BDOOR_PORT), "3"(0) : \ ++ "memory"); ++ ++static jmp_buf segv_handler_env; ++ ++static void ++segv_handler(int sig, siginfo_t *info, void *ignored) ++{ ++ siglongjmp(segv_handler_env, 1); ++} ++ ++static int ++is_vmware_platform(void) ++{ ++ uint32_t eax, ebx, ecx, edx; ++ struct sigaction act, oact; ++ ++ /* ++ * The assembly routine for vmware detection works ++ * fine under vmware, even if ran as regular user. But ++ * on real HW or under other hypervisors, it segfaults (which is ++ * expected). So we temporarily install SIGSEGV handler to catch ++ * the signal. All this magic is needed because lscpu ++ * isn't supposed to require root privileges. ++ */ ++ if (sigsetjmp(segv_handler_env, 1)) ++ return 0; ++ ++ bzero(&act, sizeof(act)); ++ act.sa_sigaction = segv_handler; ++ act.sa_flags = SA_SIGINFO; ++ ++ if (sigaction(SIGSEGV, &act, &oact)) ++ err(EXIT_FAILURE, _("error: can not set signal handler")); ++ ++ VMWARE_BDOOR(eax, ebx, ecx, edx); ++ ++ if (sigaction(SIGSEGV, &oact, NULL)) ++ err(EXIT_FAILURE, _("error: can not restore signal handler")); ++ ++ return eax != (uint32_t)-1 && ebx == VMWARE_BDOOR_MAGIC; ++} ++ + #else /* ! __x86_64__ */ + static void + read_hypervisor_cpuid(struct lscpu_desc *desc __attribute__((__unused__))) + { ++#ifdef __powerpc__ ++ /* powerpc: ++ * IBM iSeries: legacy, if /proc/iSeries exists, its para-virtualized on top of OS/400 ++ * IBM pSeries: always has a hypervisor ++ * if partition-name is "full", its kind of "bare-metal": full-system-partition ++ * otherwise its some partition created by Hardware Management Console ++ * in any case, its always some sort of HVM ++ * KVM: "linux,kvm" in /hypervisor/compatible indicates a KVM guest ++ * Xen: not in use, not detected ++ */ ++ if (path_exist("/proc/iSeries")) { ++ desc->hyper = HYPER_OS400; ++ desc->virtype = VIRT_FULL; ++ } else if (path_exist(_PATH_PROC_DEVICETREE "/ibm,partition-name")) { ++ FILE *fd; ++ desc->hyper = HYPER_PHYP; ++ desc->virtype = VIRT_FULL; ++ fd = fopen(_PATH_PROC_DEVICETREE "/ibm,partition-name", "r"); ++ if (fd) { ++ char buf[256]; ++ if (fscanf(fd, "%s", buf) == 1 && !strcmp(buf, "full")) ++ desc->virtype = VIRT_NONE; ++ fclose(fd); ++ } ++ } else if (path_exist(_PATH_PROC_DEVICETREE "/hypervisor/compatible")) { ++ FILE *fd; ++ fd = fopen(_PATH_PROC_DEVICETREE "/hypervisor/compatible", "r"); ++ if (fd) { ++ char buf[256]; ++ int i; ++ memset(buf, 0, sizeof(buf)); ++ fread(buf, sizeof(buf) - 1, 1, fd); ++ fclose(fd); ++ for (i = 0; i < sizeof(buf);) { ++ if (!strcmp(&buf[i], "linux,kvm")) { ++ desc->hyper = HYPER_KVM; ++ desc->virtype = VIRT_FULL; ++ break; ++ } ++ i += strlen(&buf[i]); ++ i++; ++ } ++ } ++ } ++#endif ++} ++ ++static int is_vmware_platform(void) ++{ ++ return 0; + } + #endif + +@@ -588,9 +720,18 @@ read_hypervisor(struct lscpu_desc *desc, + desc->hyper = HYPER_XEN; + + /* Xen full-virt on non-x86_64 */ +- } else if (has_pci_device(0x5853, 0x0001)) { ++ } else if (has_pci_device( hv_vendor_pci[HYPER_XEN], hv_graphics_pci[HYPER_XEN])) { + desc->hyper = HYPER_XEN; + desc->virtype = VIRT_FULL; ++ } else if (is_vmware_platform()) { ++ desc->hyper = HYPER_VMWARE; ++ desc->virtype = VIRT_FULL; ++ } else if (has_pci_device( hv_vendor_pci[HYPER_VMWARE], hv_graphics_pci[HYPER_VMWARE])) { ++ desc->hyper = HYPER_VMWARE; ++ desc->virtype = VIRT_FULL; ++ } else if (has_pci_device( hv_vendor_pci[HYPER_VBOX], hv_graphics_pci[HYPER_VBOX])) { ++ desc->hyper = HYPER_VBOX; ++ desc->virtype = VIRT_FULL; + + /* IBM PR/SM */ + } else if (path_exist(_PATH_PROC_SYSINFO)) { +@@ -1181,6 +1322,7 @@ print_parsable(struct lscpu_desc *desc, + } + fputs(data && *data ? data : "", stdout); + } ++ printf(",HvVendor,VirtType"); + putchar('\n'); + + /* +@@ -1210,7 +1352,9 @@ print_parsable(struct lscpu_desc *desc, + buf, sizeof(buf)); + fputs(data && *data ? data : "", stdout); + } +- putchar('\n'); ++ printf(",%s,%s\n", ++ hv_vendors[desc->hyper] ? hv_vendors[desc->hyper] : "none", ++ virt_types[desc->virtype]); + } + } + +Index: util-linux-2.24.1/sys-utils/lscpu.h +=================================================================== +--- util-linux-2.24.1.orig/sys-utils/lscpu.h ++++ util-linux-2.24.1/sys-utils/lscpu.h +@@ -13,7 +13,10 @@ enum { + HYPER_UML, + HYPER_INNOTEK, /* VBOX */ + HYPER_HITACHI, +- HYPER_PARALLELS /* OpenVZ/VIrtuozzo */ ++ HYPER_PARALLELS, /* OpenVZ/VIrtuozzo */ ++ HYPER_VBOX, ++ HYPER_OS400, ++ HYPER_PHYP + }; + + extern int read_hypervisor_dmi(void); diff --git a/util-linux-ng-2.16-squashfs3-detect.patch b/util-linux-ng-2.16-squashfs3-detect.patch new file mode 100644 index 0000000..94caaab --- /dev/null +++ b/util-linux-ng-2.16-squashfs3-detect.patch @@ -0,0 +1,118 @@ +--- + shlibs/blkid/src/superblocks/superblocks.c | 1 + shlibs/blkid/src/superblocks/superblocks.h | 1 + shlibs/blkid/src/superblocks/squashfs.c | 63 +++++++++++++++++++++++++++--------- + 3 files changed, 50 insertions(+), 15 deletions(-) + +Index: util-linux-2.19/shlibs/blkid/src/superblocks/superblocks.c +=================================================================== +--- util-linux-2.19.orig/libblkid/src/superblocks/superblocks.c ++++ util-linux-2.19/libblkid/src/superblocks/superblocks.c +@@ -131,6 +131,7 @@ static const struct blkid_idinfo *idinfo + &oracleasm_idinfo, + &vxfs_idinfo, + &squashfs_idinfo, ++ &squashfs3_idinfo, + &netware_idinfo, + &btrfs_idinfo, + &ubifs_idinfo, +Index: util-linux-2.19/shlibs/blkid/src/superblocks/superblocks.h +=================================================================== +--- util-linux-2.19.orig/libblkid/src/superblocks/superblocks.h ++++ util-linux-2.19/libblkid/src/superblocks/superblocks.h +@@ -54,6 +54,7 @@ extern const struct blkid_idinfo luks_id + extern const struct blkid_idinfo highpoint37x_idinfo; + extern const struct blkid_idinfo highpoint45x_idinfo; + extern const struct blkid_idinfo squashfs_idinfo; ++extern const struct blkid_idinfo squashfs3_idinfo; + extern const struct blkid_idinfo netware_idinfo; + extern const struct blkid_idinfo sysv_idinfo; + extern const struct blkid_idinfo xenix_idinfo; +Index: util-linux-2.19/shlibs/blkid/src/superblocks/squashfs.c +=================================================================== +--- util-linux-2.19.orig/libblkid/src/superblocks/squashfs.c ++++ util-linux-2.19/libblkid/src/superblocks/squashfs.c +@@ -31,20 +31,46 @@ struct sqsh_super_block { + static int probe_squashfs(blkid_probe pr, const struct blkid_idmag *mag) + { + struct sqsh_super_block *sq; ++ uint16_t major; ++ uint16_t minor; + + sq = blkid_probe_get_sb(pr, mag, struct sqsh_super_block); + if (!sq) + return -1; + +- if (strcmp(mag->magic, "sqsh") == 0 || +- strcmp(mag->magic, "qshs") == 0) +- blkid_probe_sprintf_version(pr, "%u.%u", +- sq->s_major, +- sq->s_minor); +- else +- blkid_probe_sprintf_version(pr, "%u.%u", +- swab16(sq->s_major), +- swab16(sq->s_minor)); ++ major = le16_to_cpu(sq->s_major); ++ minor = le16_to_cpu(sq->s_minor); ++ if (major < 4) ++ return -1; ++ ++ blkid_probe_sprintf_version(pr, "%u.%u", major, minor); ++ ++ return 0; ++} ++ ++static int probe_squashfs3(blkid_probe pr, const struct blkid_idmag *mag) ++{ ++ struct sqsh_super_block *sq; ++ uint16_t major; ++ uint16_t minor; ++ ++ sq = blkid_probe_get_sb(pr, mag, struct sqsh_super_block); ++ if (!sq) ++ return -1; ++ ++ if (strcmp(mag->magic, "sqsh") == 0) { ++ major = be16_to_cpu(sq->s_major); ++ minor = be16_to_cpu(sq->s_minor); ++ } else { ++ major = le16_to_cpu(sq->s_major); ++ minor = le16_to_cpu(sq->s_minor); ++ } ++ ++ if (major > 3) ++ return -1; ++ ++ blkid_probe_sprintf_version(pr, "%u.%u", major, minor); ++ + return 0; + } + +@@ -55,14 +81,21 @@ const struct blkid_idinfo squashfs_idinf + .probefunc = probe_squashfs, + .magics = + { +- { .magic = "sqsh", .len = 4 }, +- { .magic = "hsqs", .len = 4 }, /* swap */ +- +- /* LZMA version */ +- { .magic = "qshs", .len = 4 }, +- { .magic = "shsq", .len = 4 }, /* swap */ ++ { .magic = "hsqs", .len = 4 }, + { NULL } + } + }; + ++const struct blkid_idinfo squashfs3_idinfo = ++{ ++ .name = "squashfs3", ++ .usage = BLKID_USAGE_FILESYSTEM, ++ .probefunc = probe_squashfs3, ++ .magics = ++ { ++ { .magic = "sqsh", .len = 4 }, /* big endian */ ++ { .magic = "hsqs", .len = 4 }, /* little endian */ ++ { NULL } ++ } ++}; + diff --git a/util-linux-ng-2.19.1-barrier_documentation.patch b/util-linux-ng-2.19.1-barrier_documentation.patch new file mode 100644 index 0000000..a6aee65 --- /dev/null +++ b/util-linux-ng-2.19.1-barrier_documentation.patch @@ -0,0 +1,131 @@ +From: Jan Kara +Subject: Update documentation of mount(8) about barrier mount options + +Signed-off-by: Jan Kara + +Index: util-linux-2.24.1/sys-utils/mount.8 +=================================================================== +--- util-linux-2.24.1.orig/sys-utils/mount.8 ++++ util-linux-2.24.1/sys-utils/mount.8 +@@ -1524,12 +1524,13 @@ ordered mode. + Abort the journal if an error occurs in a file data buffer in ordered mode. + .TP + .BR barrier=0 " / " barrier=1 " +-This enables/disables barriers. barrier=0 disables it, barrier=1 enables it. +-Write barriers enforce proper on-disk ordering of journal commits, making +-volatile disk write caches safe to use, at some performance penalty. The ext3 +-filesystem does not enable write barriers by default. Be sure to enable +-barriers unless your disks are battery-backed one way or another. Otherwise +-you risk filesystem corruption in case of power failure. ++This disables / enables the use of write barriers in the jbd code. barrier=0 ++disables, barrier=1 enables (default). This also requires an IO stack which can ++support barriers, and if jbd gets an error on a barrier write, it will disable ++barriers again with a warning. Write barriers enforce proper on-disk ordering ++of journal commits, making volatile disk write caches safe to use, at some ++performance penalty. If your disks are battery-backed in one way or another, ++disabling barriers may safely improve performance. + .TP + .BI commit= nrsec + Sync all data and metadata every +@@ -1577,15 +1578,9 @@ enabled older kernels cannot mount the d + This will enable 'journal_checksum' internally. + .TP + .BR barrier=0 " / " barrier=1 " / " barrier " / " nobarrier +-This enables/disables the use of write barriers in the jbd code. barrier=0 +-disables, barrier=1 enables. This also requires an IO stack which can support +-barriers, and if jbd gets an error on a barrier write, it will disable again +-with a warning. Write barriers enforce proper on-disk ordering of journal +-commits, making volatile disk write caches safe to use, at some performance +-penalty. If your disks are battery-backed in one way or another, disabling +-barriers may safely improve performance. The mount options "barrier" and +-"nobarrier" can also be used to enable or disable barriers, for consistency +-with other ext4 mount options. ++These mount options have the same effect as in ext3. The mount options ++"barrier" and "nobarrier" are added for consistency with other ext4 mount ++options. + + The ext4 filesystem enables write barriers by default. + .TP +@@ -2266,13 +2261,13 @@ Enable POSIX Access Control Lists. See t + manual page. + .TP + .BR barrier=none " / " barrier=flush " +-This enables/disables the use of write barriers in the journaling code. +-barrier=none disables it, barrier=flush enables it. Write barriers enforce ++This disables / enables the use of write barriers in the journaling code. ++barrier=none disables, barrier=flush enables (default). This also requires an ++IO stack which can support barriers, and if reiserfs gets an error on a barrier ++write, it will disable barriers again with a warning. Write barriers enforce + proper on-disk ordering of journal commits, making volatile disk write caches +-safe to use, at some performance penalty. The reiserfs filesystem does not +-enable write barriers by default. Be sure to enable barriers unless your disks +-are battery-backed one way or another. Otherwise you risk filesystem +-corruption in case of power failure. ++safe to use, at some performance penalty. If your disks are battery-backed in ++one way or another, disabling barriers may safely improve performance. + + .SH "Mount options for romfs" + None. +Index: util-linux-2.24.1/mount-deprecated/mount.8 +=================================================================== +--- util-linux-2.24.1.orig/mount-deprecated/mount.8 ++++ util-linux-2.24.1/mount-deprecated/mount.8 +@@ -1389,12 +1389,13 @@ in files after a crash and journal recov + .RE + .TP + .BR barrier=0 " / " barrier=1 " +-This enables/disables barriers. barrier=0 disables it, barrier=1 enables it. +-Write barriers enforce proper on-disk ordering of journal commits, making +-volatile disk write caches safe to use, at some performance penalty. The ext3 +-filesystem does not enable write barriers by default. Be sure to enable +-barriers unless your disks are battery-backed one way or another. Otherwise +-you risk filesystem corruption in case of power failure. ++This disables / enables the use of write barriers in the jbd code. barrier=0 ++disables, barrier=1 enables (default). This also requires an IO stack which can ++support barriers, and if jbd gets an error on a barrier write, it will disable ++barriers again with a warning. Write barriers enforce proper on-disk ordering ++of journal commits, making volatile disk write caches safe to use, at some ++performance penalty. If your disks are battery-backed in one way or another, ++disabling barriers may safely improve performance. + .TP + .BI commit= nrsec + Sync all data and metadata every +@@ -1433,15 +1434,9 @@ enabled older kernels cannot mount the d + This will enable 'journal_checksum' internally. + .TP + .BR barrier=0 " / " barrier=1 " / " barrier " / " nobarrier +-This enables/disables the use of write barriers in the jbd code. barrier=0 +-disables, barrier=1 enables. This also requires an IO stack which can support +-barriers, and if jbd gets an error on a barrier write, it will disable again +-with a warning. Write barriers enforce proper on-disk ordering of journal +-commits, making volatile disk write caches safe to use, at some performance +-penalty. If your disks are battery-backed in one way or another, disabling +-barriers may safely improve performance. The mount options "barrier" and +-"nobarrier" can also be used to enable or disable barriers, for consistency +-with other ext4 mount options. ++These mount options have the same effect as in ext3. The mount options ++"barrier" and "nobarrier" are added for consistency with other ext4 mount ++options. + + The ext4 filesystem enables write barriers by default. + .TP +@@ -2099,13 +2094,13 @@ Enable POSIX Access Control Lists. See t + manual page. + .TP + .BR barrier=none " / " barrier=flush " +-This enables/disables the use of write barriers in the journaling code. +-barrier=none disables it, barrier=flush enables it. Write barriers enforce ++This disables / enables the use of write barriers in the journaling code. ++barrier=none disables, barrier=flush enables (default). This also requires an ++IO stack which can support barriers, and if reiserfs gets an error on a barrier ++write, it will disable barriers again with a warning. Write barriers enforce + proper on-disk ordering of journal commits, making volatile disk write caches +-safe to use, at some performance penalty. The reiserfs filesystem does not +-enable write barriers by default. Be sure to enable barriers unless your disks +-are battery-backed one way or another. Otherwise you risk filesystem +-corruption in case of power failure. ++safe to use, at some performance penalty. If your disks are battery-backed in ++one way or another, disabling barriers may safely improve performance. + + .SH "Mount options for romfs" + None. diff --git a/util-linux-setarch-uname26.patch b/util-linux-setarch-uname26.patch new file mode 100644 index 0000000..eab770f --- /dev/null +++ b/util-linux-setarch-uname26.patch @@ -0,0 +1,25 @@ +Index: util-linux-2.24/sys-utils/setarch.c +=================================================================== +--- util-linux-2.24.orig/sys-utils/setarch.c ++++ util-linux-2.24/sys-utils/setarch.c +@@ -146,6 +146,7 @@ set_arch(const char *pers, unsigned long + int perval; + const char *target_arch, *result_arch; + } transitions[] = { ++ {UNAME26, "uname26", NULL}, + {PER_LINUX32, "linux32", NULL}, + {PER_LINUX, "linux64", NULL}, + #if defined(__powerpc__) || defined(__powerpc64__) +Index: util-linux-2.24/sys-utils/Makemodule.am +=================================================================== +--- util-linux-2.24.orig/sys-utils/Makemodule.am ++++ util-linux-2.24/sys-utils/Makemodule.am +@@ -89,7 +89,7 @@ usrbin_exec_PROGRAMS += setarch + dist_man_MANS += sys-utils/setarch.8 + setarch_SOURCES = sys-utils/setarch.c + +-SETARCH_LINKS = linux32 linux64 ++SETARCH_LINKS = uname26 linux32 linux64 + + if ARCH_S390 + SETARCH_LINKS += s390 s390x diff --git a/util-linux-update-default-commit-interval.patch b/util-linux-update-default-commit-interval.patch new file mode 100644 index 0000000..db3f5c8 --- /dev/null +++ b/util-linux-update-default-commit-interval.patch @@ -0,0 +1,30 @@ +--- + mount/mount.8 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: util-linux-2.19.1/mount/mount.8 +=================================================================== +--- util-linux-2.19.1.orig/sys-utils/mount.8 ++++ util-linux-2.19.1/sys-utils/mount.8 +@@ -1384,7 +1384,7 @@ disabling barriers may safely improve pe + .BI commit= nrsec + Sync all data and metadata every + .I nrsec +-seconds. The default value is 5 seconds. Zero means default. ++seconds. The default value is 15 seconds. Zero means default. + .TP + .BR user_xattr + Enable Extended User Attributes. See the +Index: util-linux-2.19.1/mount/mount.8 +=================================================================== +--- util-linux-2.19.1.orig/mount-deprecated/mount.8 ++++ util-linux-2.19.1/mount-deprecated/mount.8 +@@ -1384,7 +1384,7 @@ disabling barriers may safely improve pe + .BI commit= nrsec + Sync all data and metadata every + .I nrsec +-seconds. The default value is 5 seconds. Zero means default. ++seconds. The default value is 15 seconds. Zero means default. + .TP + .BR user_xattr + Enable Extended User Attributes. See the diff --git a/util-linux.changes b/util-linux.changes index 03b811e..85aef43 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,28 @@ +------------------------------------------------------------------- +Mon Mar 17 22:36:58 CET 2014 - sbrabec@suse.cz + +- Merge fixes and features from SLE11 (bnc#831868): + * Detect squashfs version <= 3 as squashfs3 and version >= 4 as + squashfs. (mszeredi@suse.cz, + util-linux-ng-2.16-squashfs3-detect.patch, bnc#666893) + * add sfdisk-warn-about-2TB-limit.patch (puzel@novell.com, + bnc#495657) + * Document barrier option in mount.8 (jack@suse.cz, + hvogel@suse.de, + util-linux-ng-2.19.1-barrier_documentation.patch, bnc#489740) + * lscpu: improve hypervisor detection (puzel@novell.com, + fate#310255) + - util-linux-lscpu-improve-hypervisor-detection.patch + * umount: avoid calling readlink on mountpoints if not necessary + - add: umount-avoid-readlink.patch (puzel@suse.com, bnc#794529) + * fix file conflict between util-linux and s390-32 + (puzel@suse.com, bnc#805684) + * util-linux-update-default-commit-interval.patch: + mount(8): update default commit interval (puzel@suse.com, + bnc#809480) + * Obsolete no more packaged uuid-runtime. +- Add uname26 (util-linux-setarch-uname26.patch, FATE#313476). + ------------------------------------------------------------------- Thu Mar 6 09:43:34 UTC 2014 - werner@suse.de diff --git a/util-linux.spec b/util-linux.spec index a943e1a..a7bb3af 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -114,10 +114,22 @@ Patch16: agetty-on-s390-on-dev-3270-tty1-line.patch Patch17: sulogin-fooled-on-tty-line-due-plymouth.patch # PATCH-FIX-SUSE -- sulogin: find suitable console device even if first is not usable Patch18: sulogin-does-not-find-any-console.patch - +# PATCH-FEATURE-SLES util-linux-setarch-uname26.patch fate313476 sbrabec@suse.cz -- Support for uname26 binary. +Patch19: util-linux-setarch-uname26.patch # hack for boot.localfs Patch20: util-linux-HACK-boot.localfs.diff - +# PATCH-FEATURE-SLES util-linux-ng-2.16-squashfs3-detect.patch bnc666893 mszeredi@suse.cz -- Detect squashfs version <= 3 as squashfs3 and version >= 4 as squashfs. +Patch21: util-linux-ng-2.16-squashfs3-detect.patch +# PATCH-FEATURE-SLES fdisk-warn-about-2TB-limit.patch bnc495657 puzel@novell.com -- Warn about 2TB limit. +Patch22: sfdisk-warn-about-2TB-limit.patch +# PATCH-FEATURE-SLES util-linux-ng-2.19.1-barrier_documentation.patch bnc489740 jack@suse.cz -- Document barrier option in mount.8. +Patch23: util-linux-ng-2.19.1-barrier_documentation.patch +# PATCH-FEATURE-SLES util-linux-lscpu-improve-hypervisor-detection.patch fate310255 puzel@novell.com -- Improve hypervisor detection. +Patch24: util-linux-lscpu-improve-hypervisor-detection.patch +# PATCH-FIX-SLES umount-avoid-readlink.patch bnc794529 puzel@suse.com -- umount: avoid calling readlink on mountpoints if not necessary. +Patch25: umount-avoid-readlink.patch +# PATCH-FIX-SLES util-linux-update-default-commit-interval.patch bnc#809480 puzel@suse.com -- Update default commit interval. +Patch26: util-linux-update-default-commit-interval.patch ## ## klogconsole ## @@ -146,6 +158,14 @@ Conflicts: coreutils < 8.21 # File conflict of sulogin and utmpdump (up to 12.3 and SLE11). Conflicts: sysvinit-tools < 2.88+-87 %endif +# bnc#805684: +%ifarch s390x +Obsoletes: s390-32 +Provides: s390-32 +%endif +# uuid-runtime appeared in SLE11 SP1 to SLE11 SP3 +Provides: uuid-runtime = %{version}-%{release} +Obsoletes: uuid-runtime < %{version}-%{release} # # Using "Requires" here would lend itself to help upgrading, but since # util-linux is in the initial bootstrap, that is not a good thing to do: @@ -235,9 +255,17 @@ xzcat %{S:0} | %gpg_verify %{S:12} - %patch16 -p0 %patch17 -p0 %patch18 -p0 +%patch19 -p1 # %patch20 -p1 # +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +# # setctsid cp -p %{S:22} %{S:23} . # nologin @@ -693,6 +721,7 @@ fi %{_bindir}/utmpdump %endif %{_bindir}/uuidgen +%{_bindir}/uname26 %ifnarch ppc ppc64 %{_bindir}/chrp-addnote %{_bindir}/mkzimage_cmdline @@ -836,6 +865,7 @@ fi %{_mandir}/man8/swapoff.8.gz %{_mandir}/man8/swapon.8.gz %{_mandir}/man8/umount.8.gz +%{_mandir}/man8/uname26.8.gz %{_mandir}/man8/setctsid.8.gz %{_mandir}/man8/wipefs.8.gz %{_mandir}/man8/fstrim.8.gz