From 7cdd2de735f0bd2e534d414afb6fb341598b0d711a9dd178f52b757f424a943b Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Mon, 27 Nov 2017 10:06:27 +0000 Subject: [PATCH 1/4] Accepting request 543952 from home:sbrabec:branches:util-linux-2.31 - Update to version 2.31: * New utilities: uuidparse, rfkill. * su has been refactored and extended to create pseudo terminal (new option --pty, CVE-2016-2779, bsc#968674). This new EXPERIMENTAL feature provides better isolation between root's terminal and an unprivileged su. * libuuid: Improved to match * libuuid, uuidgen: support hash-based UUIDs v3 (md5) and v5 (sha1) as specified by RFC-4122. Provide UUID templates for dns, url, oid, or x500. * libblkid: Extended support for DM-integrity, HPE (aka extended-XFS) and UBI superblock. New API to hide already detected signatures. * libfdisk: New API to modify grain, make possible to completely disable dialog driven partitioning. * libsmartcols: New API to move columns. * column: --table-header-repeat to repeat table headers. * libfdisk: Use BLKPG ioctls to inform the kernel about changes. * fdisk: Improved ^C and ^D behavior. * cfdisk: Dialog to resize partition. * look: Follow the WORDLIST environment variable. * script: Follow the usual semantics for stop/continue signals. * setpriv: New command line options --ambient-caps and --init-groups. * hwclock: Reduce system shutdown times, log --systz when using libaudit. * Other bug fixes. - Drop upstreamed util-linux-use-tinfow.patch. - Update to version 2.31: OBS-URL: https://build.opensuse.org/request/show/543952 OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=352 --- make-sure-sbin-resp-usr-sbin-are-in-PATH.diff | 54 +++++----- python-libmount.changes | 32 ++++++ python-libmount.spec | 14 ++- util-linux-2.30.1.tar.sign | 17 ---- util-linux-2.30.1.tar.xz | 3 - util-linux-2.31.tar.sign | 16 +++ util-linux-2.31.tar.xz | 3 + util-linux-systemd.changes | 32 ++++++ util-linux-systemd.spec | 14 ++- util-linux-use-tinfow.patch | 98 ------------------- util-linux.changes | 32 ++++++ util-linux.spec | 14 ++- 12 files changed, 173 insertions(+), 156 deletions(-) delete mode 100644 util-linux-2.30.1.tar.sign delete mode 100644 util-linux-2.30.1.tar.xz create mode 100644 util-linux-2.31.tar.sign create mode 100644 util-linux-2.31.tar.xz delete mode 100644 util-linux-use-tinfow.patch diff --git a/make-sure-sbin-resp-usr-sbin-are-in-PATH.diff b/make-sure-sbin-resp-usr-sbin-are-in-PATH.diff index 3fb223c..0a6116a 100644 --- a/make-sure-sbin-resp-usr-sbin-are-in-PATH.diff +++ b/make-sure-sbin-resp-usr-sbin-are-in-PATH.diff @@ -1,7 +1,9 @@ ---- a/login-utils/su-common.c -+++ b/login-utils/su-common.c -@@ -523,6 +523,117 @@ set_path(const struct passwd* pw) - err (EXIT_FAILURE, _("failed to set the %s environment variable"), "PATH"); +Index: util-linux-2.31/login-utils/su-common.c +=================================================================== +--- util-linux-2.31.orig/login-utils/su-common.c ++++ util-linux-2.31/login-utils/su-common.c +@@ -944,6 +944,117 @@ static void setenv_path(const struct pas + err(EXIT_FAILURE, _("failed to set the PATH environment variable")); } +/* Add or clear /sbin and /usr/sbin for the su command @@ -115,29 +117,29 @@ + return ret; +} + - /* Update `environ' for the new shell based on PW, with SHELL being - the value for the SHELL environment variable. */ + static void modify_environment(struct su_context *su, const char *shell) + { + const struct passwd *pw = su->pwd; +@@ -982,6 +1093,22 @@ static void modify_environment(struct su -@@ -560,6 +671,22 @@ modify_environment (const struct passwd *pw, const char *shell) - xsetenv ("SHELL", shell, 1); - if (getlogindefs_bool ("ALWAYS_SET_PATH", 0)) - set_path(pw); -+ else -+ { -+ char const *path = getenv ("PATH"); -+ char *new = NULL; -+ -+ if (pw->pw_uid) -+ new = clearsbin (path); -+ else -+ new = addsbin (path); -+ -+ if (new) + if (getlogindefs_bool("ALWAYS_SET_PATH", 0)) + setenv_path(pw); ++ else + { -+ xsetenv ("PATH", new, 1); -+ free (new); ++ char const *path = getenv ("PATH"); ++ char *new = NULL; ++ ++ if (pw->pw_uid) ++ new = clearsbin (path); ++ else ++ new = addsbin (path); ++ ++ if (new) ++ { ++ xsetenv ("PATH", new, 1); ++ free (new); ++ } + } -+ } - if (pw->pw_uid) - { + if (pw->pw_uid) { + xsetenv("USER", pw->pw_name, 1); diff --git a/python-libmount.changes b/python-libmount.changes index 3c2368b..ec5c271 100644 --- a/python-libmount.changes +++ b/python-libmount.changes @@ -1,3 +1,35 @@ +------------------------------------------------------------------- +Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com + +- Update to version 2.31: + * New utilities: uuidparse, rfkill. + * su has been refactored and extended to create pseudo terminal + (new option --pty, CVE-2016-2779, bsc#968674). This new + EXPERIMENTAL feature provides better isolation between root's + terminal and an unprivileged su. + * libuuid: Improved to match + * libuuid, uuidgen: support hash-based UUIDs v3 (md5) and v5 + (sha1) as specified by RFC-4122. Provide UUID templates for + dns, url, oid, or x500. + * libblkid: Extended support for DM-integrity, HPE (aka + extended-XFS) and UBI superblock. New API to hide already + detected signatures. + * libfdisk: New API to modify grain, make possible to completely + disable dialog driven partitioning. + * libsmartcols: New API to move columns. + * column: --table-header-repeat to repeat table headers. + * libfdisk: Use BLKPG ioctls to inform the kernel about changes. + * fdisk: Improved ^C and ^D behavior. + * cfdisk: Dialog to resize partition. + * look: Follow the WORDLIST environment variable. + * script: Follow the usual semantics for stop/continue signals. + * setpriv: New command line options --ambient-caps and + --init-groups. + * hwclock: Reduce system shutdown times, log --systz when using + libaudit. + * Other bug fixes. +- Drop upstreamed util-linux-use-tinfow.patch. + ------------------------------------------------------------------- Thu Sep 21 14:41:01 UTC 2017 - jengelh@inai.de diff --git a/python-libmount.spec b/python-libmount.spec index 0035c66..8ecf244 100644 --- a/python-libmount.spec +++ b/python-libmount.spec @@ -116,7 +116,7 @@ BuildRequires: libmount-devel %endif %endif #END SECOND STAGE DEPENDENCIES -Version: 2.30.1 +Version: 2.31 Release: 0 # util-linux is a base package and uuidd pre-requiring pwdutils pulls # that into the core build cycle. pwdutils also pulls in the whole @@ -157,8 +157,6 @@ Source51: blkid.conf Patch0: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff # PATCH-FEATURE-SLE util-linux-losetup-Add-support-for-setting-logical-blocksize.patch bsc931634 FATE319010 hare@suse.de -- Add support for setting logical blocksizes. Patch1: util-linux-losetup-Add-support-for-setting-logical-blocksize.patch -# PATCH-FIX-UPSTREAM util-linux-use-tinfow.patch bsc#1056171 sbrabec@suse.com -- Link against tinfow instead of tinfo. -Patch2: util-linux-use-tinfow.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # %if %build_util_linux @@ -173,10 +171,13 @@ PreReq: %install_info_prereq permissions Recommends: %{name}-lang = %{version} Provides: eject = 2.1.0-166.8 Provides: login = 4.0-33.7 +Provides: rfkill = 0.5-8.6 # File conflict of eject (up to 12.3 and SLE11). Obsoletes: eject < 2.1.0-166.8 # File conflict of login (up to 12.1 and SLE11). Obsoletes: login < 4.0-33.7 +# File confluct (man page) of rfkill (up to Leap 15 and SLE 15). +Obsoletes: rfkill < 0.5-8.6 # File conflict of su and kill (up to 12.3 and SLE11). # It should be coreutils < 8.21-4, but coreutils provide Release-less symbol. Conflicts: coreutils < 8.21 @@ -422,7 +423,6 @@ library. # logical block size support in loop does not exist in Tumbleweed and upstream kernel yet %patch1 -p1 %endif -%patch2 -p1 # # setctsid cp -p %{S:22} %{S:23} . @@ -557,6 +557,8 @@ AUTOPOINT=true autoreconf -vfi --disable-silent-rules \ --localstatedir=/run \ --docdir=%{_docdir}/%{_name} \ + --disable-makeinstall-chown \ + --disable-makeinstall-setuid \ --with-audit \ --with-btrfs \ --with-gnu-ld \ @@ -993,6 +995,7 @@ getent passwd uuidd >/dev/null || \ %{_bindir}/rename %{_bindir}/renice %{_bindir}/rev +%{_bindir}/rfkill %{_bindir}/script %{_bindir}/scriptreplay %{_bindir}/setarch @@ -1005,6 +1008,7 @@ getent passwd uuidd >/dev/null || \ %{_bindir}/mountpoint %{_bindir}/utmpdump %{_bindir}/uuidgen +%{_bindir}/uuidparse %{_bindir}/uname26 %ifnarch ppc ppc64 %{_bindir}/chrp-addnote @@ -1108,6 +1112,7 @@ getent passwd uuidd >/dev/null || \ %{_mandir}/man1/utmpdump.1.gz %{_mandir}/man1/runuser.1.gz %{_mandir}/man1/uuidgen.1.gz +%{_mandir}/man1/uuidparse.1.gz %{_mandir}/man5/fstab.5.gz %{_mandir}/man5/terminal-colors.d.5.gz %{_mandir}/man8/addpart.8.gz @@ -1142,6 +1147,7 @@ getent passwd uuidd >/dev/null || \ %{_mandir}/man8/fsfreeze.8.gz %{_mandir}/man8/swaplabel.8.gz %{_mandir}/man8/readprofile.8.gz +%{_mandir}/man8/rfkill.8.gz %{_mandir}/man8/chcpu.8.gz %ifnarch ppc ppc64 %{_mandir}/man8/mkzimage_cmdline.8.gz diff --git a/util-linux-2.30.1.tar.sign b/util-linux-2.30.1.tar.sign deleted file mode 100644 index 91fb9b4..0000000 --- a/util-linux-2.30.1.tar.sign +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2 - -iQIcBAABCAAGBQJZcHfsAAoJEOS3HV7sOcKEl7wP/jnzss0+A1BW5EVZywk69lDa -534rzlHJVyvysOXKD+zDk+Ky4Q8BYPizGQ4hYg/fhHvxgPVb8jrynwcNzdGEPjHV -OCQ1fikRgun2i77KoU2vZJ6vvo66mFRytKaoRAJRHhkkQQkcGlNPCcN0V+ZlBfn+ -RWL50P0knqw/LK9NfKhASoI315p7nUypmqf+g3jxFNLjXXnHefUDLlZNn85oJLgf -Vsx/1IYk3MTOgDjAx5K24H31XNWOKaO/pvPezd1RPt6gc4EcKc2I/8AY+5yM5XAF -sCk6wCIjvf3+2B8K6XgUIBhABxgDnyQi8+lNqDUfR4NbufonzBZDpQLHfjN7XWgg -Zgfo7as21fM1vCuEuwOQbkbDFA4wso5kRgof+HfTDnLU3hDtbNiI/5ZH0cTf2qp9 -8CwnSpxdES3Hw/eFkOaVMlwE4CoGJqZejMnOzNWo+b5lVqfmeSUgUxyvW3IDSUfm -+Zu9+MVL+T9YDkVuqB+rCeWSBxShev0+cRHP6p5NkWkGRgbCHkecZ7zZ9aFZ9Dsm -OE6nOot05oS8mUjpXyUs96VwbRqqBR54Tc3+DjBUjrpzlwajhz++g+XjAiwON5NT -ex30EbDFW/VRm3cWo4YH1MdesVcWqrqsrDRN0RyqZ/ctqOMgkQG6vNaQ6f3O2wgc -qFbsvhGu7NctRjuOj9UP -=cMtf ------END PGP SIGNATURE----- diff --git a/util-linux-2.30.1.tar.xz b/util-linux-2.30.1.tar.xz deleted file mode 100644 index bb34c59..0000000 --- a/util-linux-2.30.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1be4363a91ac428c9e43fc04dc6d2c66a19ec1e36f1105bd4b481540be13b841 -size 4459284 diff --git a/util-linux-2.31.tar.sign b/util-linux-2.31.tar.sign new file mode 100644 index 0000000..732793b --- /dev/null +++ b/util-linux-2.31.tar.sign @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEsMZNFDAcxu+u32Dk5LcdXuw5woQFAlnoipIACgkQ5LcdXuw5 +woSnthAAhqdxus2J9uxERU1JwMJxiDpjwZnRR3NFHvBlY04maoaniAsVlQG8uWWr +xE13jVkiG2hc+llt4UhDJA3sT0Hz1elNOKJD6fsZ598fptTYvF3fqLjstuJGCVyF +hDio8lqAqurnpX3jtyG0tNrT3CVIUU2jrTq9QXqpB8jq699ez8xulMdU+VEqmbOg +E5i5skWxfnaYxleXN8WkV+5WZx2tczWufLqVbLcUE7bOUyiEAubmXhbm9xgOJ8pX +cUrOverbfvopZYlIUB44UcNYyWsj12r7/aIQBh2q6xmv5wOOAiZzFMBh4eZu07vc +jZFKv2GYxVBU+e/1ERH0x4xbxCRXV9l1G9+V/H9GSbGCHK0+/0r7MzXf+QiADowx +YkqROTvfTagNVPBbzU0pNeTsQs+AZg49JhTcCBVtk1yxufOK3BuRqU5PtuDBQCw4 +u8Z/kkZSdaOexJeaBJDhHEvPTCkAUBcuppU9tJ8dZ+3Orpdb8ghbBOxS3VUKIHn5 +FAnaC7OLPPB2uBTKrG5JH+mUnXCTYfctEPB3D/Rnjsyjs+T8h6zf5cnQ6NFvXPxw +xm8FA3bcKvdSVcLwqFQLkvORfy1/Ju53HRDABSDLe4yjTUi8oAj4hqbR607/XPMA +ZYBRRZntdKNLcrQUjnawjaExXcR2oACocaZ8Ul+mpaXsmjKIEc8= +=u6TW +-----END PGP SIGNATURE----- diff --git a/util-linux-2.31.tar.xz b/util-linux-2.31.tar.xz new file mode 100644 index 0000000..5272549 --- /dev/null +++ b/util-linux-2.31.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9be7cdcf4fc5c5064a226599acdda6bdf3d86c640152ba01ea642d91108dc8a +size 4503892 diff --git a/util-linux-systemd.changes b/util-linux-systemd.changes index 3c2368b..ec5c271 100644 --- a/util-linux-systemd.changes +++ b/util-linux-systemd.changes @@ -1,3 +1,35 @@ +------------------------------------------------------------------- +Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com + +- Update to version 2.31: + * New utilities: uuidparse, rfkill. + * su has been refactored and extended to create pseudo terminal + (new option --pty, CVE-2016-2779, bsc#968674). This new + EXPERIMENTAL feature provides better isolation between root's + terminal and an unprivileged su. + * libuuid: Improved to match + * libuuid, uuidgen: support hash-based UUIDs v3 (md5) and v5 + (sha1) as specified by RFC-4122. Provide UUID templates for + dns, url, oid, or x500. + * libblkid: Extended support for DM-integrity, HPE (aka + extended-XFS) and UBI superblock. New API to hide already + detected signatures. + * libfdisk: New API to modify grain, make possible to completely + disable dialog driven partitioning. + * libsmartcols: New API to move columns. + * column: --table-header-repeat to repeat table headers. + * libfdisk: Use BLKPG ioctls to inform the kernel about changes. + * fdisk: Improved ^C and ^D behavior. + * cfdisk: Dialog to resize partition. + * look: Follow the WORDLIST environment variable. + * script: Follow the usual semantics for stop/continue signals. + * setpriv: New command line options --ambient-caps and + --init-groups. + * hwclock: Reduce system shutdown times, log --systz when using + libaudit. + * Other bug fixes. +- Drop upstreamed util-linux-use-tinfow.patch. + ------------------------------------------------------------------- Thu Sep 21 14:41:01 UTC 2017 - jengelh@inai.de diff --git a/util-linux-systemd.spec b/util-linux-systemd.spec index f0e2436..aae9d06 100644 --- a/util-linux-systemd.spec +++ b/util-linux-systemd.spec @@ -116,7 +116,7 @@ BuildRequires: libmount-devel %endif %endif #END SECOND STAGE DEPENDENCIES -Version: 2.30.1 +Version: 2.31 Release: 0 # util-linux is a base package and uuidd pre-requiring pwdutils pulls # that into the core build cycle. pwdutils also pulls in the whole @@ -157,8 +157,6 @@ Source51: blkid.conf Patch0: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff # PATCH-FEATURE-SLE util-linux-losetup-Add-support-for-setting-logical-blocksize.patch bsc931634 FATE319010 hare@suse.de -- Add support for setting logical blocksizes. Patch1: util-linux-losetup-Add-support-for-setting-logical-blocksize.patch -# PATCH-FIX-UPSTREAM util-linux-use-tinfow.patch bsc#1056171 sbrabec@suse.com -- Link against tinfow instead of tinfo. -Patch2: util-linux-use-tinfow.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # %if %build_util_linux @@ -173,10 +171,13 @@ PreReq: %install_info_prereq permissions Recommends: %{name}-lang = %{version} Provides: eject = 2.1.0-166.8 Provides: login = 4.0-33.7 +Provides: rfkill = 0.5-8.6 # File conflict of eject (up to 12.3 and SLE11). Obsoletes: eject < 2.1.0-166.8 # File conflict of login (up to 12.1 and SLE11). Obsoletes: login < 4.0-33.7 +# File confluct (man page) of rfkill (up to Leap 15 and SLE 15). +Obsoletes: rfkill < 0.5-8.6 # File conflict of su and kill (up to 12.3 and SLE11). # It should be coreutils < 8.21-4, but coreutils provide Release-less symbol. Conflicts: coreutils < 8.21 @@ -422,7 +423,6 @@ library. # logical block size support in loop does not exist in Tumbleweed and upstream kernel yet %patch1 -p1 %endif -%patch2 -p1 # # setctsid cp -p %{S:22} %{S:23} . @@ -557,6 +557,8 @@ AUTOPOINT=true autoreconf -vfi --disable-silent-rules \ --localstatedir=/run \ --docdir=%{_docdir}/%{_name} \ + --disable-makeinstall-chown \ + --disable-makeinstall-setuid \ --with-audit \ --with-btrfs \ --with-gnu-ld \ @@ -993,6 +995,7 @@ getent passwd uuidd >/dev/null || \ %{_bindir}/rename %{_bindir}/renice %{_bindir}/rev +%{_bindir}/rfkill %{_bindir}/script %{_bindir}/scriptreplay %{_bindir}/setarch @@ -1005,6 +1008,7 @@ getent passwd uuidd >/dev/null || \ %{_bindir}/mountpoint %{_bindir}/utmpdump %{_bindir}/uuidgen +%{_bindir}/uuidparse %{_bindir}/uname26 %ifnarch ppc ppc64 %{_bindir}/chrp-addnote @@ -1108,6 +1112,7 @@ getent passwd uuidd >/dev/null || \ %{_mandir}/man1/utmpdump.1.gz %{_mandir}/man1/runuser.1.gz %{_mandir}/man1/uuidgen.1.gz +%{_mandir}/man1/uuidparse.1.gz %{_mandir}/man5/fstab.5.gz %{_mandir}/man5/terminal-colors.d.5.gz %{_mandir}/man8/addpart.8.gz @@ -1142,6 +1147,7 @@ getent passwd uuidd >/dev/null || \ %{_mandir}/man8/fsfreeze.8.gz %{_mandir}/man8/swaplabel.8.gz %{_mandir}/man8/readprofile.8.gz +%{_mandir}/man8/rfkill.8.gz %{_mandir}/man8/chcpu.8.gz %ifnarch ppc ppc64 %{_mandir}/man8/mkzimage_cmdline.8.gz diff --git a/util-linux-use-tinfow.patch b/util-linux-use-tinfow.patch deleted file mode 100644 index 0cb07d0..0000000 --- a/util-linux-use-tinfow.patch +++ /dev/null @@ -1,98 +0,0 @@ -From ad442a818c6eefabb8258a9949206e12f2296161 Mon Sep 17 00:00:00 2001 -From: Karel Zak -Date: Tue, 19 Sep 2017 12:55:49 +0200 -Subject: [PATCH] build-sys: add libtinfow check - -It seems some systems differentiate between tinfo and tinfow. And it -seems that mix ncursesw and tinfo (wide vs. non-wide char) is problem -for the systems. - -Note that for example Fedora have ncursesw as well as ncurses, but -only one tinfo library. So, we need fallback this scenario. - -Reported-by: Stanislav Brabec -Signed-off-by: Karel Zak ---- - configure.ac | 24 +++++++++--------------- - m4/ul.m4 | 27 +++++++++++++++++++++++++++ - 2 files changed, 36 insertions(+), 15 deletions(-) - -diff --git a/configure.ac b/configure.ac -index c534b49f2..73cf22168 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -905,27 +905,21 @@ AC_ARG_WITH([tinfo], AS_HELP_STRING([--without-tinfo], [compile without libtinfo - [], [with_tinfo=auto] - ) - have_tinfo=no -+have_tinfow=no - AS_IF([test "x$with_tinfo" != xno], [ -- dnl Try pkg-config for libtinfo -- PKG_CHECK_MODULES(TINFO, [tinfo], [ -- dnl pkg-config success -- have_tinfo=yes -- UL_PKG_STATIC([TINFO_LIBS_STATIC], [tinfo])], [ -- -- dnl If pkg-config failed, fall back to classic searching. -- AC_CHECK_LIB([tinfo], [tgetent], [ -- have_tinfo=yes -- TINFO_LIBS="-ltinfo" -- TINFO_LIBS_STATIC="-ltinfo" -- TINFO_CFLAGS=""]) -+ AS_IF([test "x$have_ncursesw" = xyes], [ -+ UL_TINFO_CHECK([tinfow]) -+ ]) -+ AS_IF([test "x$have_tinfow" = xno], [ -+ UL_TINFO_CHECK([tinfo]) - ]) - ]) - AC_SUBST([TINFO_LIBS]) - AC_SUBST([TINFO_LIBS_STATIC]) - AC_SUBST([TINFO_CFLAGS]) --AM_CONDITIONAL([HAVE_TINFO], [test "x$have_tinfo" = xyes]) --AS_IF([test "x$have_tinfo" = xyes], [ -- AC_DEFINE(HAVE_LIBTINFO, 1, [Define if libtinfo available.]) -+AM_CONDITIONAL([HAVE_TINFO], [test "x$have_tinfo" = xyes -o "x$have_tinfow" = xyes]) -+AS_IF([test "x$have_tinfo" = xyes -o "x$have_tinfow" = xyes], [ -+ AC_DEFINE(HAVE_LIBTINFO, 1, [Define if libtinfo or libtinfow available.]) - ]) - - -diff --git a/m4/ul.m4 b/m4/ul.m4 -index cfd2e68fc..351d9cb6b 100644 ---- a/m4/ul.m4 -+++ b/m4/ul.m4 -@@ -498,3 +498,30 @@ AC_DEFUN([UL_NCURSES_CHECK], [ - AS_IF([test "x$have_[]suffix" = xyes], [NCURSES_LIBS="-l[]suffix"]) - ]) - ]) -+ -+dnl -+dnl UL_TINFO_CHECK(NAME) -+dnl -+dnl Initializes $have_, TINFO_LIBS and TINFO_CFLAGS variables. -+dnl -+dnl The expected is tinfow or tinfo. -+dnl -+AC_DEFUN([UL_TINFO_CHECK], [ -+ m4_define([suffix], $1) -+ m4_define([SUFFIX], m4_toupper($1)) -+ -+ PKG_CHECK_MODULES(SUFFIX, [$1], [ -+ dnl pkg-config success -+ have_[]suffix=yes -+ TINFO_LIBS=${SUFFIX[]_LIBS} -+ TINFO_CFLAGS=${SUFFIX[]_CFLAGS} -+ UL_PKG_STATIC([TINFO_LIBS_STATIC], [$1]) -+ ],[ -+ dnl If pkg-config failed, fall back to classic searching. -+ AC_CHECK_LIB([$1], [tgetent], [ -+ have_[]suffix=yes -+ TINFO_LIBS="-l[]suffix" -+ TINFO_LIBS_STATIC="-l[]suffix" -+ TINFO_CFLAGS=""]) -+ ]) -+]) --- -2.14.1 - diff --git a/util-linux.changes b/util-linux.changes index 3c2368b..ec5c271 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,35 @@ +------------------------------------------------------------------- +Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com + +- Update to version 2.31: + * New utilities: uuidparse, rfkill. + * su has been refactored and extended to create pseudo terminal + (new option --pty, CVE-2016-2779, bsc#968674). This new + EXPERIMENTAL feature provides better isolation between root's + terminal and an unprivileged su. + * libuuid: Improved to match + * libuuid, uuidgen: support hash-based UUIDs v3 (md5) and v5 + (sha1) as specified by RFC-4122. Provide UUID templates for + dns, url, oid, or x500. + * libblkid: Extended support for DM-integrity, HPE (aka + extended-XFS) and UBI superblock. New API to hide already + detected signatures. + * libfdisk: New API to modify grain, make possible to completely + disable dialog driven partitioning. + * libsmartcols: New API to move columns. + * column: --table-header-repeat to repeat table headers. + * libfdisk: Use BLKPG ioctls to inform the kernel about changes. + * fdisk: Improved ^C and ^D behavior. + * cfdisk: Dialog to resize partition. + * look: Follow the WORDLIST environment variable. + * script: Follow the usual semantics for stop/continue signals. + * setpriv: New command line options --ambient-caps and + --init-groups. + * hwclock: Reduce system shutdown times, log --systz when using + libaudit. + * Other bug fixes. +- Drop upstreamed util-linux-use-tinfow.patch. + ------------------------------------------------------------------- Thu Sep 21 14:41:01 UTC 2017 - jengelh@inai.de diff --git a/util-linux.spec b/util-linux.spec index 0fb6eff..a96a47d 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -116,7 +116,7 @@ BuildRequires: libmount-devel %endif %endif #END SECOND STAGE DEPENDENCIES -Version: 2.30.1 +Version: 2.31 Release: 0 # util-linux is a base package and uuidd pre-requiring pwdutils pulls # that into the core build cycle. pwdutils also pulls in the whole @@ -157,8 +157,6 @@ Source51: blkid.conf Patch0: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff # PATCH-FEATURE-SLE util-linux-losetup-Add-support-for-setting-logical-blocksize.patch bsc931634 FATE319010 hare@suse.de -- Add support for setting logical blocksizes. Patch1: util-linux-losetup-Add-support-for-setting-logical-blocksize.patch -# PATCH-FIX-UPSTREAM util-linux-use-tinfow.patch bsc#1056171 sbrabec@suse.com -- Link against tinfow instead of tinfo. -Patch2: util-linux-use-tinfow.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # %if %build_util_linux @@ -173,10 +171,13 @@ PreReq: %install_info_prereq permissions Recommends: %{name}-lang = %{version} Provides: eject = 2.1.0-166.8 Provides: login = 4.0-33.7 +Provides: rfkill = 0.5-8.6 # File conflict of eject (up to 12.3 and SLE11). Obsoletes: eject < 2.1.0-166.8 # File conflict of login (up to 12.1 and SLE11). Obsoletes: login < 4.0-33.7 +# File confluct (man page) of rfkill (up to Leap 15 and SLE 15). +Obsoletes: rfkill < 0.5-8.6 # File conflict of su and kill (up to 12.3 and SLE11). # It should be coreutils < 8.21-4, but coreutils provide Release-less symbol. Conflicts: coreutils < 8.21 @@ -422,7 +423,6 @@ library. # logical block size support in loop does not exist in Tumbleweed and upstream kernel yet %patch1 -p1 %endif -%patch2 -p1 # # setctsid cp -p %{S:22} %{S:23} . @@ -557,6 +557,8 @@ AUTOPOINT=true autoreconf -vfi --disable-silent-rules \ --localstatedir=/run \ --docdir=%{_docdir}/%{_name} \ + --disable-makeinstall-chown \ + --disable-makeinstall-setuid \ --with-audit \ --with-btrfs \ --with-gnu-ld \ @@ -993,6 +995,7 @@ getent passwd uuidd >/dev/null || \ %{_bindir}/rename %{_bindir}/renice %{_bindir}/rev +%{_bindir}/rfkill %{_bindir}/script %{_bindir}/scriptreplay %{_bindir}/setarch @@ -1005,6 +1008,7 @@ getent passwd uuidd >/dev/null || \ %{_bindir}/mountpoint %{_bindir}/utmpdump %{_bindir}/uuidgen +%{_bindir}/uuidparse %{_bindir}/uname26 %ifnarch ppc ppc64 %{_bindir}/chrp-addnote @@ -1108,6 +1112,7 @@ getent passwd uuidd >/dev/null || \ %{_mandir}/man1/utmpdump.1.gz %{_mandir}/man1/runuser.1.gz %{_mandir}/man1/uuidgen.1.gz +%{_mandir}/man1/uuidparse.1.gz %{_mandir}/man5/fstab.5.gz %{_mandir}/man5/terminal-colors.d.5.gz %{_mandir}/man8/addpart.8.gz @@ -1142,6 +1147,7 @@ getent passwd uuidd >/dev/null || \ %{_mandir}/man8/fsfreeze.8.gz %{_mandir}/man8/swaplabel.8.gz %{_mandir}/man8/readprofile.8.gz +%{_mandir}/man8/rfkill.8.gz %{_mandir}/man8/chcpu.8.gz %ifnarch ppc ppc64 %{_mandir}/man8/mkzimage_cmdline.8.gz From 5c789a611b32706b07a21e35d613f0b6ce01f29cd130dc7321ba4f63dc4e76fa Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Mon, 27 Nov 2017 17:13:08 +0000 Subject: [PATCH 2/4] OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=353 --- python-libmount.spec | 7 ++++--- util-linux-systemd.spec | 4 ++-- util-linux.spec | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/python-libmount.spec b/python-libmount.spec index 8ecf244..c59b155 100644 --- a/python-libmount.spec +++ b/python-libmount.spec @@ -73,7 +73,7 @@ Name: python-libmount %endif Summary: %main_summary License: GPL-2.0+ -Group: %main_group +Group: %group_pl BuildRequires: audit-devel BuildRequires: bc BuildRequires: binutils-devel @@ -125,7 +125,7 @@ Release: 0 # these tools as well #!BuildIgnore: pwdutils Url: https://www.kernel.org/pub/linux/utils/util-linux/ -Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.30/util-linux-%{version}.tar.xz +Source: https://www.kernel.org/pub/linux/utils/util-linux/v%{version}/util-linux-%{version}.tar.xz Source1: util-linux-rpmlintrc Source4: raw.service Source5: etc.raw @@ -135,7 +135,7 @@ Source8: login.pamd Source9: remote.pamd Source10: su.pamd Source11: su.default -Source12: https://www.kernel.org/pub/linux/utils/util-linux/v2.30/util-linux-%{version}.tar.sign +Source12: https://www.kernel.org/pub/linux/utils/util-linux/v%{version}/util-linux-%{version}.tar.sign Source13: %{_name}.keyring Source14: runuser.pamd # klogconsole, http://opensuse.github.com/kiwi, 7.02.25, git 859dc050 @@ -406,6 +406,7 @@ SMP systems. %if %build_util_linux %package -n python-libmount Summary: %summary_pl +License: GPL-2.0+ Group: %group_pl %description -n python-libmount diff --git a/util-linux-systemd.spec b/util-linux-systemd.spec index aae9d06..f1557fc 100644 --- a/util-linux-systemd.spec +++ b/util-linux-systemd.spec @@ -125,7 +125,7 @@ Release: 0 # these tools as well #!BuildIgnore: pwdutils Url: https://www.kernel.org/pub/linux/utils/util-linux/ -Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.30/util-linux-%{version}.tar.xz +Source: https://www.kernel.org/pub/linux/utils/util-linux/v%{version}/util-linux-%{version}.tar.xz Source1: util-linux-rpmlintrc Source4: raw.service Source5: etc.raw @@ -135,7 +135,7 @@ Source8: login.pamd Source9: remote.pamd Source10: su.pamd Source11: su.default -Source12: https://www.kernel.org/pub/linux/utils/util-linux/v2.30/util-linux-%{version}.tar.sign +Source12: https://www.kernel.org/pub/linux/utils/util-linux/v%{version}/util-linux-%{version}.tar.sign Source13: %{_name}.keyring Source14: runuser.pamd # klogconsole, http://opensuse.github.com/kiwi, 7.02.25, git 859dc050 diff --git a/util-linux.spec b/util-linux.spec index a96a47d..38578d7 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -125,7 +125,7 @@ Release: 0 # these tools as well #!BuildIgnore: pwdutils Url: https://www.kernel.org/pub/linux/utils/util-linux/ -Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.30/util-linux-%{version}.tar.xz +Source: https://www.kernel.org/pub/linux/utils/util-linux/v%{version}/util-linux-%{version}.tar.xz Source1: util-linux-rpmlintrc Source4: raw.service Source5: etc.raw @@ -135,7 +135,7 @@ Source8: login.pamd Source9: remote.pamd Source10: su.pamd Source11: su.default -Source12: https://www.kernel.org/pub/linux/utils/util-linux/v2.30/util-linux-%{version}.tar.sign +Source12: https://www.kernel.org/pub/linux/utils/util-linux/v%{version}/util-linux-%{version}.tar.sign Source13: %{_name}.keyring Source14: runuser.pamd # klogconsole, http://opensuse.github.com/kiwi, 7.02.25, git 859dc050 From 8d036d9bf7b269342db244c02921d8ffd9a825e188af63e02fb5e91110056920 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Wed, 6 Dec 2017 09:44:40 +0000 Subject: [PATCH 3/4] Accepting request 548188 from home:sbrabec:branches:util-linux-1065471 - lsmem: Add support for zone awareness (bsc#1065471, FATE#324252, util-linux-lsmem-memory-zone-1.patch, util-linux-lsmem-memory-zone-2.patch, util-linux-lsmem-memory-zone-3.patch). - Drop util-linux-losetup-Add-support-for-setting-logical-blocksize.patch. Different implementations exists in the new kernel, and it has a conflicting implementation in util-linux. OBS-URL: https://build.opensuse.org/request/show/548188 OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=354 --- python-libmount.changes | 12 + python-libmount.spec | 22 +- ...upport-for-setting-logical-blocksize.patch | 156 ----- util-linux-lsmem-memory-zone-1.patch | 536 ++++++++++++++++++ util-linux-lsmem-memory-zone-2.patch | 107 ++++ util-linux-lsmem-memory-zone-3.patch | 44 ++ util-linux-systemd.changes | 12 + util-linux-systemd.spec | 19 +- util-linux.changes | 12 + util-linux.spec | 19 +- 10 files changed, 748 insertions(+), 191 deletions(-) delete mode 100644 util-linux-losetup-Add-support-for-setting-logical-blocksize.patch create mode 100644 util-linux-lsmem-memory-zone-1.patch create mode 100644 util-linux-lsmem-memory-zone-2.patch create mode 100644 util-linux-lsmem-memory-zone-3.patch diff --git a/python-libmount.changes b/python-libmount.changes index ec5c271..65cf296 100644 --- a/python-libmount.changes +++ b/python-libmount.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Mon Dec 4 17:28:04 CET 2017 - sbrabec@suse.com + +- lsmem: Add support for zone awareness (bsc#1065471, FATE#324252, + util-linux-lsmem-memory-zone-1.patch, + util-linux-lsmem-memory-zone-2.patch, + util-linux-lsmem-memory-zone-3.patch). +- Drop util-linux-losetup-Add-support-for-setting-logical-blocksize.patch. + Different implementations exists in the new kernel, and it has + a conflicting implementation in util-linux. + ------------------------------------------------------------------- Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com @@ -22,6 +33,7 @@ Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com * fdisk: Improved ^C and ^D behavior. * cfdisk: Dialog to resize partition. * look: Follow the WORDLIST environment variable. + * losetup: Added support for --sector-size (FATE#319010). * script: Follow the usual semantics for stop/continue signals. * setpriv: New command line options --ambient-caps and --init-groups. diff --git a/python-libmount.spec b/python-libmount.spec index c59b155..4f124a1 100644 --- a/python-libmount.spec +++ b/python-libmount.spec @@ -73,7 +73,7 @@ Name: python-libmount %endif Summary: %main_summary License: GPL-2.0+ -Group: %group_pl +Group: %main_group BuildRequires: audit-devel BuildRequires: bc BuildRequires: binutils-devel @@ -155,8 +155,12 @@ Source51: blkid.conf ## # PATCH-EXTEND-UPSTREAM: Let `su' handle /sbin and /usr/sbin in path Patch0: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff -# PATCH-FEATURE-SLE util-linux-losetup-Add-support-for-setting-logical-blocksize.patch bsc931634 FATE319010 hare@suse.de -- Add support for setting logical blocksizes. -Patch1: util-linux-losetup-Add-support-for-setting-logical-blocksize.patch +# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-1.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. +Patch1: util-linux-lsmem-memory-zone-1.patch +# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-2.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. +Patch2: util-linux-lsmem-memory-zone-2.patch +# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-3.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. +Patch3: util-linux-lsmem-memory-zone-3.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # %if %build_util_linux @@ -214,12 +218,6 @@ Recommends: adjtimex Recommends: time Recommends: which # -%if 0%{?suse_version} < 1330 -# Using Conflicts as util-linux-losetup-Add-support-for-setting-logical-blocksize -# now uses bit 5 of lo_flags with meaning LO_FLAGS_BLOCKSIZE bsc#966891 -# -Conflicts: kernel < 4.4 -%endif %else %if %build_python_libmount %else @@ -406,7 +404,6 @@ SMP systems. %if %build_util_linux %package -n python-libmount Summary: %summary_pl -License: GPL-2.0+ Group: %group_pl %description -n python-libmount @@ -420,10 +417,9 @@ library. %prep %setup -q -n %{_name}-%{version} -b 40 %patch0 -p1 -%if 0%{?suse_version} < 1330 -# logical block size support in loop does not exist in Tumbleweed and upstream kernel yet %patch1 -p1 -%endif +%patch2 -p1 +%patch3 -p1 # # setctsid cp -p %{S:22} %{S:23} . diff --git a/util-linux-losetup-Add-support-for-setting-logical-blocksize.patch b/util-linux-losetup-Add-support-for-setting-logical-blocksize.patch deleted file mode 100644 index e0710b6..0000000 --- a/util-linux-losetup-Add-support-for-setting-logical-blocksize.patch +++ /dev/null @@ -1,156 +0,0 @@ -From a60cc5c2eeaad7ea5ea0c4a74cc4af5e2dc3f6c2 Mon Sep 17 00:00:00 2001 -From: Ruediger Meier -Date: Tue, 4 Apr 2017 16:29:58 +0200 -Subject: [PATCH] - util-linux-losetup-Add-support-for-setting-logical-blocksize.patch - -Signed-off-by: Ruediger Meier ---- - include/loopdev.h | 5 ++++- - lib/loopdev.c | 20 ++++++++++++++++++++ - sys-utils/losetup.c | 19 +++++++++++++++---- - 3 files changed, 39 insertions(+), 5 deletions(-) - -diff --git a/include/loopdev.h b/include/loopdev.h -index 953d2db..7c783bf 100644 ---- a/include/loopdev.h -+++ b/include/loopdev.h -@@ -41,6 +41,7 @@ enum { - LO_FLAGS_AUTOCLEAR = 4, /* kernel >= 2.6.25 */ - LO_FLAGS_PARTSCAN = 8, /* kernel >= 3.2 */ - LO_FLAGS_DIRECT_IO = 16, /* kernel >= 4.2 */ -+ LO_FLAGS_BLOCKSIZE = 32, /* Tentative */ - }; - - #define LO_NAME_SIZE 64 -@@ -120,7 +121,8 @@ enum { - LOOPDEV_FL_NOIOCTL = (1 << 6), - LOOPDEV_FL_DEVSUBDIR = (1 << 7), - LOOPDEV_FL_CONTROL = (1 << 8), /* system with /dev/loop-control */ -- LOOPDEV_FL_SIZELIMIT = (1 << 9) -+ LOOPDEV_FL_SIZELIMIT = (1 << 9), -+ LOOPDEV_FL_BLOCKSIZE = (1 << 10) - }; - - /* -@@ -173,6 +175,7 @@ int loopcxt_set_offset(struct loopdev_cxt *lc, uint64_t offset); - int loopcxt_set_sizelimit(struct loopdev_cxt *lc, uint64_t sizelimit); - int loopcxt_set_flags(struct loopdev_cxt *lc, uint32_t flags); - int loopcxt_set_backing_file(struct loopdev_cxt *lc, const char *filename); -+int loopcxt_set_blocksize(struct loopdev_cxt *lc, uint64_t blocksize); - - extern char *loopcxt_get_backing_file(struct loopdev_cxt *lc); - extern int loopcxt_get_backing_devno(struct loopdev_cxt *lc, dev_t *devno); -diff --git a/lib/loopdev.c b/lib/loopdev.c -index fd4f166..b85e2ce 100644 ---- a/lib/loopdev.c -+++ b/lib/loopdev.c -@@ -1115,6 +1115,26 @@ int loopcxt_set_backing_file(struct loopdev_cxt *lc, const char *filename) - } - - /* -+ * @lc: context -+ * @blocksize: logical blocksize for the device -+ * -+ * The setting is removed by loopcxt_set_device() loopcxt_next()! -+ * -+ * Returns: 0 on success, <0 on error. -+ */ -+int loopcxt_set_blocksize(struct loopdev_cxt *lc, uint64_t blocksize) -+{ -+ if (!lc) -+ return -EINVAL; -+ -+ lc->info.lo_init[0] = blocksize; -+ lc->info.lo_flags |= LO_FLAGS_BLOCKSIZE; -+ -+ DBG(CXT, ul_debugobj(lc, "set blocksize=%llu", (long long unsigned int)lc->info.lo_init[0])); -+ return 0; -+} -+ -+/* - * In kernels prior to v3.9, if the offset or sizelimit options - * are used, the block device's size won't be synced automatically. - * blockdev --getsize64 and filesystems will use the backing -diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c -index 2218d3b..d8f1bfa 100644 ---- a/sys-utils/losetup.c -+++ b/sys-utils/losetup.c -@@ -399,6 +399,7 @@ static void usage(FILE *out) - fputs(USAGE_SEPARATOR, out); - fputs(_(" -o, --offset start at offset into file\n"), out); - fputs(_(" --sizelimit device is limited to bytes of the file\n"), out); -+ fputs(_(" --logical-blocksize set the logical block size to \n"), out); - fputs(_(" -P, --partscan create a partitioned loop device\n"), out); - fputs(_(" -r, --read-only set up a read-only loop device\n"), out); - fputs(_(" --direct-io[=] open backing file with O_DIRECT\n"), out); -@@ -448,7 +449,8 @@ static void warn_size(const char *filename, uint64_t size) - - static int create_loop(struct loopdev_cxt *lc, - int nooverlap, int lo_flags, int flags, -- const char *file, uint64_t offset, uint64_t sizelimit) -+ const char *file, uint64_t offset, uint64_t sizelimit, -+ uint64_t blocksize) - { - int hasdev = loopcxt_has_device(lc); - int rc = 0; -@@ -534,6 +536,8 @@ static int create_loop(struct loopdev_cxt *lc, - loopcxt_set_offset(lc, offset); - if (flags & LOOPDEV_FL_SIZELIMIT) - loopcxt_set_sizelimit(lc, sizelimit); -+ if (flags & LOOPDEV_FL_BLOCKSIZE) -+ loopcxt_set_blocksize(lc, blocksize); - if (lo_flags) - loopcxt_set_flags(lc, lo_flags); - if ((rc = loopcxt_set_backing_file(lc, file))) { -@@ -562,7 +566,7 @@ int main(int argc, char **argv) - struct loopdev_cxt lc; - int act = 0, flags = 0, no_overlap = 0, c; - char *file = NULL; -- uint64_t offset = 0, sizelimit = 0; -+ uint64_t offset = 0, sizelimit = 0, blocksize = 0; - int res = 0, showdev = 0, lo_flags = 0; - char *outarg = NULL; - int list = 0; -@@ -572,7 +576,8 @@ int main(int argc, char **argv) - OPT_SIZELIMIT = CHAR_MAX + 1, - OPT_SHOW, - OPT_RAW, -- OPT_DIO -+ OPT_DIO, -+ OPT_BLOCKSIZE, - }; - static const struct option longopts[] = { - { "all", no_argument, NULL, 'a' }, -@@ -585,6 +590,7 @@ int main(int argc, char **argv) - { "associated", required_argument, NULL, 'j' }, - { "json", no_argument, NULL, 'J' }, - { "list", no_argument, NULL, 'l' }, -+ { "logical-blocksize", required_argument, NULL, OPT_BLOCKSIZE }, - { "noheadings", no_argument, NULL, 'n' }, - { "offset", required_argument, NULL, 'o' }, - { "output", required_argument, NULL, 'O' }, -@@ -658,6 +664,10 @@ int main(int argc, char **argv) - act = A_SHOW; - file = optarg; - break; -+ case OPT_BLOCKSIZE: -+ blocksize = strtosize_or_err(optarg, _("failed to parse logical block size")); -+ flags |= LOOPDEV_FL_BLOCKSIZE; -+ break; - case 'l': - list = 1; - break; -@@ -790,7 +800,8 @@ int main(int argc, char **argv) - - switch (act) { - case A_CREATE: -- res = create_loop(&lc, no_overlap, lo_flags, flags, file, offset, sizelimit); -+ res = create_loop(&lc, no_overlap, lo_flags, flags, file, offset, -+ sizelimit, blocksize); - if (res == 0) { - if (showdev) - printf("%s\n", loopcxt_get_device(&lc)); --- -1.8.5.6 - diff --git a/util-linux-lsmem-memory-zone-1.patch b/util-linux-lsmem-memory-zone-1.patch new file mode 100644 index 0000000..a0e2db9 --- /dev/null +++ b/util-linux-lsmem-memory-zone-1.patch @@ -0,0 +1,536 @@ +From 60a7e9e94e49215b1e6ac6e33b69c3bd0a426b5e Mon Sep 17 00:00:00 2001 +From: Gerald Schaefer +Date: Wed, 27 Sep 2017 19:44:44 +0200 +Subject: [PATCH 1/3] lsmem/chmem: add memory zone awareness + +With this patch, valid memory zones can be shown with lsmem, and chmem can +set memory online/offline in a specific memory zone, if allowed by the +kernel. The valid memory zones are read from the "valid_zones" sysfs +attribute, and setting memory online to a specific zone is done by +echoing "online_kernel" or "online_movable" to the "state" sysfs +attribute, in addition to the previous "online". + +This patch also changes the default behavior of chmem, when setting memory +online without specifying a memory zone. If valid, memory will be set +online to the zone Movable. This zone is preferable for memory hotplug, as +it makes memory offline much more likely to succeed. + +Signed-off-by: Gerald Schaefer +--- + sys-utils/chmem.8 | 19 ++++++++ + sys-utils/chmem.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++---- + sys-utils/lsmem.1 | 4 +- + sys-utils/lsmem.c | 98 ++++++++++++++++++++++++++++++++++++++- + 4 files changed, 246 insertions(+), 11 deletions(-) + +diff --git a/sys-utils/chmem.8 b/sys-utils/chmem.8 +index a116bc9e7..dae7413d4 100644 +--- a/sys-utils/chmem.8 ++++ b/sys-utils/chmem.8 +@@ -5,6 +5,7 @@ chmem \- configure memory + .B chmem + .RB [ \-h "] [" \-V "] [" \-v "] [" \-e | \-d "]" + [\fISIZE\fP|\fIRANGE\fP|\fB\-b\fP \fIBLOCKRANGE\fP] ++[-z ZONE] + .SH DESCRIPTION + The chmem command sets a particular size or range of memory online or offline. + . +@@ -25,6 +26,19 @@ and is the number of the last memory block in the memory + range. Alternatively a single block can be specified. \fIBLOCKRANGE\fP requires + the \fB--blocks\fP option. + . ++.IP "\(hy" 2 ++Specify \fIZONE\fP as the name of a memory zone, as shown in the output of the ++\fBlsmem -o +ZONES\fP command. The output shows one or more valid memory zones ++for each memory range. If multiple zones are shown, then the memory range ++currently belongs to the first zone. By default, chmem will set memory online ++to the zone Movable, if this is among the valid zones. This default can be ++changed by specifying the \fB--zone\fP option with another valid zone. ++For memory ballooning, it is recommended to select the zone Movable for memory ++online and offline, if possible. Memory in this zone is much more likely to be ++able to be offlined again, but it cannot be used for arbitrary kernel ++allocations, only for migratable pages (e.g. anonymous and page cache pages). ++Use the \fB\-\-help\fR option to see all available zones. ++. + .PP + \fISIZE\fP and \fIRANGE\fP must be aligned to the Linux memory block size, as + shown in the output of the \fBlsmem\fP command. +@@ -51,6 +65,11 @@ Set the specified \fIRANGE\fP, \fISIZE\fP, or \fIBLOCKRANGE\fP of memory offline + .BR \-e ", " \-\-enable + Set the specified \fIRANGE\fP, \fISIZE\fP, or \fIBLOCKRANGE\fP of memory online. + .TP ++.BR \-z ", " \-\-zone ++Select the memory \fIZONE\fP where to set the specified \fIRANGE\fP, \fISIZE\fP, ++or \fIBLOCKRANGE\fP of memory online or offline. By default, memory will be set ++online to the zone Movable, if possible. ++.TP + .BR \-h ", " \-\-help + Print a short help text, then exit. + .TP +diff --git a/sys-utils/chmem.c b/sys-utils/chmem.c +index d9bc95cc1..2f0680de8 100644 +--- a/sys-utils/chmem.c ++++ b/sys-utils/chmem.c +@@ -49,6 +49,7 @@ struct chmem_desc { + unsigned int use_blocks : 1; + unsigned int is_size : 1; + unsigned int verbose : 1; ++ unsigned int have_zones : 1; + }; + + enum { +@@ -57,6 +58,38 @@ enum { + CMD_NONE + }; + ++enum zone_id { ++ ZONE_DMA = 0, ++ ZONE_DMA32, ++ ZONE_NORMAL, ++ ZONE_HIGHMEM, ++ ZONE_MOVABLE, ++ ZONE_DEVICE, ++}; ++ ++static char *zone_names[] = { ++ [ZONE_DMA] = "DMA", ++ [ZONE_DMA32] = "DMA32", ++ [ZONE_NORMAL] = "Normal", ++ [ZONE_HIGHMEM] = "Highmem", ++ [ZONE_MOVABLE] = "Movable", ++ [ZONE_DEVICE] = "Device", ++}; ++ ++/* ++ * name must be null-terminated ++ */ ++static int zone_name_to_id(const char *name) ++{ ++ size_t i; ++ ++ for (i = 0; i < ARRAY_SIZE(zone_names); i++) { ++ if (!strcasecmp(name, zone_names[i])) ++ return i; ++ } ++ return -1; ++} ++ + static void idxtostr(struct chmem_desc *desc, uint64_t idx, char *buf, size_t bufsz) + { + uint64_t start, end; +@@ -68,22 +101,49 @@ static void idxtostr(struct chmem_desc *desc, uint64_t idx, char *buf, size_t bu + idx, start, end); + } + +-static int chmem_size(struct chmem_desc *desc, int enable) ++static int chmem_size(struct chmem_desc *desc, int enable, int zone_id) + { + char *name, *onoff, line[BUFSIZ], str[BUFSIZ]; + uint64_t size, index; ++ const char *zn; + int i, rc; + + size = desc->size; + onoff = enable ? "online" : "offline"; + i = enable ? 0 : desc->ndirs - 1; + ++ if (enable && zone_id >= 0) { ++ if (zone_id == ZONE_MOVABLE) ++ onoff = "online_movable"; ++ else ++ onoff = "online_kernel"; ++ } ++ + for (; i >= 0 && i < desc->ndirs && size; i += enable ? 1 : -1) { + name = desc->dirs[i]->d_name; + index = strtou64_or_err(name + 6, _("Failed to parse index")); + path_read_str(line, sizeof(line), _PATH_SYS_MEMORY "/%s/state", name); +- if (strcmp(onoff, line) == 0) ++ if (strncmp(onoff, line, 6) == 0) + continue; ++ ++ if (desc->have_zones) { ++ path_read_str(line, sizeof(line), ++ _PATH_SYS_MEMORY "/%s/valid_zones", name); ++ if (zone_id >= 0) { ++ zn = zone_names[zone_id]; ++ if (enable && !strcasestr(line, zn)) ++ continue; ++ if (!enable && strncasecmp(line, zn, strlen(zn))) ++ continue; ++ } else if (enable) { ++ /* By default, use zone Movable for online, if valid */ ++ if (strcasestr(line, zone_names[ZONE_MOVABLE])) ++ onoff = "online_movable"; ++ else ++ onoff = "online"; ++ } ++ } ++ + idxtostr(desc, index, str, sizeof(str)); + rc = path_write_str(onoff, _PATH_SYS_MEMORY"/%s/state", name); + if (rc == -1 && desc->verbose) { +@@ -115,15 +175,23 @@ static int chmem_size(struct chmem_desc *desc, int enable) + return size == 0 ? 0 : size == desc->size ? -1 : 1; + } + +-static int chmem_range(struct chmem_desc *desc, int enable) ++static int chmem_range(struct chmem_desc *desc, int enable, int zone_id) + { + char *name, *onoff, line[BUFSIZ], str[BUFSIZ]; + uint64_t index, todo; ++ const char *zn; + int i, rc; + + todo = desc->end - desc->start + 1; + onoff = enable ? "online" : "offline"; + ++ if (enable && zone_id >= 0) { ++ if (zone_id == ZONE_MOVABLE) ++ onoff = "online_movable"; ++ else ++ onoff = "online_kernel"; ++ } ++ + for (i = 0; i < desc->ndirs; i++) { + name = desc->dirs[i]->d_name; + index = strtou64_or_err(name + 6, _("Failed to parse index")); +@@ -133,7 +201,7 @@ static int chmem_range(struct chmem_desc *desc, int enable) + break; + idxtostr(desc, index, str, sizeof(str)); + path_read_str(line, sizeof(line), _PATH_SYS_MEMORY "/%s/state", name); +- if (strcmp(onoff, line) == 0) { ++ if (strncmp(onoff, line, 6) == 0) { + if (desc->verbose && enable) + fprintf(stdout, _("%s already enabled\n"), str); + else if (desc->verbose && !enable) +@@ -141,6 +209,29 @@ static int chmem_range(struct chmem_desc *desc, int enable) + todo--; + continue; + } ++ ++ if (desc->have_zones) { ++ path_read_str(line, sizeof(line), ++ _PATH_SYS_MEMORY "/%s/valid_zones", name); ++ if (zone_id >= 0) { ++ zn = zone_names[zone_id]; ++ if (enable && !strcasestr(line, zn)) { ++ warnx(_("%s enable failed: Zone mismatch"), str); ++ continue; ++ } ++ if (!enable && strncasecmp(line, zn, strlen(zn))) { ++ warnx(_("%s disable failed: Zone mismatch"), str); ++ continue; ++ } ++ } else if (enable) { ++ /* By default, use zone Movable for online, if valid */ ++ if (strcasestr(line, zone_names[ZONE_MOVABLE])) ++ onoff = "online_movable"; ++ else ++ onoff = "online"; ++ } ++ } ++ + rc = path_write_str(onoff, _PATH_SYS_MEMORY"/%s/state", name); + if (rc == -1) { + if (enable) +@@ -237,6 +328,8 @@ static void parse_parameter(struct chmem_desc *desc, char *param) + static void __attribute__((__noreturn__)) usage(void) + { + FILE *out = stdout; ++ unsigned int i; ++ + fputs(USAGE_HEADER, out); + fprintf(out, _(" %s [options] [SIZE|RANGE|BLOCKRANGE]\n"), program_invocation_short_name); + +@@ -247,6 +340,14 @@ static void __attribute__((__noreturn__)) usage(void) + fputs(_(" -e, --enable enable memory\n"), out); + fputs(_(" -d, --disable disable memory\n"), out); + fputs(_(" -b, --blocks use memory blocks\n"), out); ++ fputs(_(" -z, --zone select memory zone ("), out); ++ for (i = 0; i < ARRAY_SIZE(zone_names); i++) { ++ fputs(zone_names[i], out); ++ if (i < ARRAY_SIZE(zone_names) - 1) ++ fputc('|', out); ++ } ++ fputs(")\n", out); ++ + fputs(_(" -v, --verbose verbose output\n"), out); + fputs(USAGE_SEPARATOR, out); + printf(USAGE_HELP_OPTIONS(16)); +@@ -259,7 +360,8 @@ static void __attribute__((__noreturn__)) usage(void) + int main(int argc, char **argv) + { + struct chmem_desc _desc = { }, *desc = &_desc; +- int cmd = CMD_NONE; ++ int cmd = CMD_NONE, zone_id = -1; ++ char *zone = NULL; + int c, rc; + + static const struct option longopts[] = { +@@ -269,6 +371,7 @@ int main(int argc, char **argv) + {"help", no_argument, NULL, 'h'}, + {"verbose", no_argument, NULL, 'v'}, + {"version", no_argument, NULL, 'V'}, ++ {"zone", required_argument, NULL, 'z'}, + {NULL, 0, NULL, 0} + }; + +@@ -285,7 +388,7 @@ int main(int argc, char **argv) + + read_info(desc); + +- while ((c = getopt_long(argc, argv, "bdehvV", longopts, NULL)) != -1) { ++ while ((c = getopt_long(argc, argv, "bdehvVz:", longopts, NULL)) != -1) { + + err_exclusive_options(c, longopts, excl, excl_st); + +@@ -308,6 +411,9 @@ int main(int argc, char **argv) + case 'V': + printf(UTIL_LINUX_VERSION); + return EXIT_SUCCESS; ++ case 'z': ++ zone = xstrdup(optarg); ++ break; + default: + errtryhelp(EXIT_FAILURE); + } +@@ -320,10 +426,24 @@ int main(int argc, char **argv) + + parse_parameter(desc, argv[optind]); + ++ /* The valid_zones sysfs attribute was introduced with kernel 3.18 */ ++ if (path_exist(_PATH_SYS_MEMORY "/memory0/valid_zones")) ++ desc->have_zones = 1; ++ else if (zone) ++ warnx(_("zone ignored, no valid_zones sysfs attribute present")); ++ ++ if (zone && desc->have_zones) { ++ zone_id = zone_name_to_id(zone); ++ if (zone_id == -1) { ++ warnx(_("unknown memory zone: %s"), zone); ++ errtryhelp(EXIT_FAILURE); ++ } ++ } ++ + if (desc->is_size) +- rc = chmem_size(desc, cmd == CMD_MEMORY_ENABLE ? 1 : 0); ++ rc = chmem_size(desc, cmd == CMD_MEMORY_ENABLE ? 1 : 0, zone_id); + else +- rc = chmem_range(desc, cmd == CMD_MEMORY_ENABLE ? 1 : 0); ++ rc = chmem_range(desc, cmd == CMD_MEMORY_ENABLE ? 1 : 0, zone_id); + + return rc == 0 ? EXIT_SUCCESS : + rc < 0 ? EXIT_FAILURE : CHMEM_EXIT_SOMEOK; +diff --git a/sys-utils/lsmem.1 b/sys-utils/lsmem.1 +index be2862d94..e7df50a4e 100644 +--- a/sys-utils/lsmem.1 ++++ b/sys-utils/lsmem.1 +@@ -41,12 +41,12 @@ Do not print a header line. + .BR \-o , " \-\-output " \fIlist\fP + Specify which output columns to print. Use \fB\-\-help\fR + to get a list of all supported columns. ++The default list of columns may be extended if \fIlist\fP is ++specified in the format \fB+\fIlist\fP (e.g. \fBlsmem \-o +NODE\fP). + .TP + .BR \-P , " \-\-pairs" + Produce output in the form of key="value" pairs. + All potentially unsafe characters are hex-escaped (\\x). +-The default list of columns may be extended if \fIlist\fP is +-specified in the format \fB+\fIlist\fP (e.g. \fBlsmem \-o +NODE\fP). + .TP + .BR \-r , " \-\-raw" + Produce output in raw format. All potentially unsafe characters are hex-escaped +diff --git a/sys-utils/lsmem.c b/sys-utils/lsmem.c +index aeffd29dd..1d26579fd 100644 +--- a/sys-utils/lsmem.c ++++ b/sys-utils/lsmem.c +@@ -42,11 +42,25 @@ + #define MEMORY_STATE_GOING_OFFLINE 2 + #define MEMORY_STATE_UNKNOWN 3 + ++enum zone_id { ++ ZONE_DMA = 0, ++ ZONE_DMA32, ++ ZONE_NORMAL, ++ ZONE_HIGHMEM, ++ ZONE_MOVABLE, ++ ZONE_DEVICE, ++ ZONE_NONE, ++ ZONE_UNKNOWN, ++ MAX_NR_ZONES, ++}; ++ + struct memory_block { + uint64_t index; + uint64_t count; + int state; + int node; ++ int nr_zones; ++ int zones[MAX_NR_ZONES]; + unsigned int removable:1; + }; + +@@ -72,7 +86,9 @@ struct lsmem { + want_state : 1, + want_removable : 1, + want_summary : 1, +- want_table : 1; ++ want_table : 1, ++ want_zones : 1, ++ have_zones : 1; + }; + + enum { +@@ -82,6 +98,18 @@ enum { + COL_REMOVABLE, + COL_BLOCK, + COL_NODE, ++ COL_ZONES, ++}; ++ ++static char *zone_names[] = { ++ [ZONE_DMA] = "DMA", ++ [ZONE_DMA32] = "DMA32", ++ [ZONE_NORMAL] = "Normal", ++ [ZONE_HIGHMEM] = "Highmem", ++ [ZONE_MOVABLE] = "Movable", ++ [ZONE_DEVICE] = "Device", ++ [ZONE_NONE] = "None", /* block contains more than one zone, can't be offlined */ ++ [ZONE_UNKNOWN] = "Unknown", + }; + + /* column names */ +@@ -102,6 +130,7 @@ static struct coldesc coldescs[] = { + [COL_REMOVABLE] = { "REMOVABLE", 0, SCOLS_FL_RIGHT, N_("memory is removable")}, + [COL_BLOCK] = { "BLOCK", 0, SCOLS_FL_RIGHT, N_("memory block number or blocks range")}, + [COL_NODE] = { "NODE", 0, SCOLS_FL_RIGHT, N_("numa node of memory")}, ++ [COL_ZONES] = { "ZONES", 0, SCOLS_FL_RIGHT, N_("valid zones for the memory range")}, + }; + + /* columns[] array specifies all currently wanted output column. The columns +@@ -120,6 +149,20 @@ static inline size_t err_columns_index(size_t arysz, size_t idx) + return idx; + } + ++/* ++ * name must be null-terminated ++ */ ++static int zone_name_to_id(const char *name) ++{ ++ size_t i; ++ ++ for (i = 0; i < ARRAY_SIZE(zone_names); i++) { ++ if (!strcasecmp(name, zone_names[i])) ++ return i; ++ } ++ return ZONE_UNKNOWN; ++} ++ + #define add_column(ary, n, id) \ + ((ary)[ err_columns_index(ARRAY_SIZE(ary), (n)) ] = (id)) + +@@ -214,6 +257,25 @@ static void add_scols_line(struct lsmem *lsmem, struct memory_block *blk) + else + str = xstrdup("-"); + break; ++ case COL_ZONES: ++ if (lsmem->have_zones) { ++ char valid_zones[BUFSIZ]; ++ int j, zone_id; ++ ++ valid_zones[0] = '\0'; ++ for (j = 0; j < blk->nr_zones; j++) { ++ zone_id = blk->zones[j]; ++ if (strlen(valid_zones) + ++ strlen(zone_names[zone_id]) > BUFSIZ - 2) ++ break; ++ strcat(valid_zones, zone_names[zone_id]); ++ if (j + 1 < blk->nr_zones) ++ strcat(valid_zones, "/"); ++ } ++ str = xstrdup(valid_zones); ++ } else ++ str = xstrdup("-"); ++ break; + } + + if (str && scols_line_refer_data(line, i, str) != 0) +@@ -272,7 +334,9 @@ static int memory_block_get_node(char *name) + static void memory_block_read_attrs(struct lsmem *lsmem, char *name, + struct memory_block *blk) + { ++ char *token = NULL; + char line[BUFSIZ]; ++ int i; + + blk->count = 1; + blk->index = strtoumax(name + 6, NULL, 10); /* get of "memory" */ +@@ -287,11 +351,26 @@ static void memory_block_read_attrs(struct lsmem *lsmem, char *name, + blk->state = MEMORY_STATE_GOING_OFFLINE; + if (lsmem->have_nodes) + blk->node = memory_block_get_node(name); ++ ++ blk->nr_zones = 0; ++ if (lsmem->have_zones) { ++ path_read_str(line, sizeof(line), _PATH_SYS_MEMORY"/%s/%s", name, ++ "valid_zones"); ++ token = strtok(line, " "); ++ } ++ for (i = 0; i < MAX_NR_ZONES; i++) { ++ if (token) { ++ blk->zones[i] = zone_name_to_id(token); ++ blk->nr_zones++; ++ token = strtok(NULL, " "); ++ } ++ } + } + + static int is_mergeable(struct lsmem *lsmem, struct memory_block *blk) + { + struct memory_block *curr; ++ int i; + + if (!lsmem->nblocks) + return 0; +@@ -308,6 +387,15 @@ static int is_mergeable(struct lsmem *lsmem, struct memory_block *blk) + if (curr->node != blk->node) + return 0; + } ++ if (lsmem->want_zones && lsmem->have_zones) { ++ if (curr->nr_zones != blk->nr_zones) ++ return 0; ++ for (i = 0; i < curr->nr_zones; i++) { ++ if (curr->zones[i] == ZONE_UNKNOWN || ++ curr->zones[i] != blk->zones[i]) ++ return 0; ++ } ++ } + return 1; + } + +@@ -362,6 +450,12 @@ static void read_basic_info(struct lsmem *lsmem) + + if (memory_block_get_node(lsmem->dirs[0]->d_name) != -1) + lsmem->have_nodes = 1; ++ ++ /* The valid_zones sysfs attribute was introduced with kernel 3.18 */ ++ if (path_exist(_PATH_SYS_MEMORY "/memory0/valid_zones")) ++ lsmem->have_zones = 1; ++ else if (lsmem->want_zones) ++ warnx(_("Cannot read zones, no valid_zones sysfs attribute present")); + } + + static void __attribute__((__noreturn__)) usage(void) +@@ -553,6 +647,8 @@ int main(int argc, char **argv) + lsmem->want_node = 1; + if (has_column(COL_REMOVABLE)) + lsmem->want_removable = 1; ++ if (has_column(COL_ZONES)) ++ lsmem->want_zones = 1; + + /* + * Read data and print output +-- +2.15.0 + diff --git a/util-linux-lsmem-memory-zone-2.patch b/util-linux-lsmem-memory-zone-2.patch new file mode 100644 index 0000000..db965b4 --- /dev/null +++ b/util-linux-lsmem-memory-zone-2.patch @@ -0,0 +1,107 @@ +From 0a4320f5e785e82337c3a657c55651004e3fd08d Mon Sep 17 00:00:00 2001 +From: Gerald Schaefer +Date: Wed, 27 Sep 2017 19:44:45 +0200 +Subject: [PATCH 2/3] tests/lsmem: update lsmem test with ZONES column + +The existing s390 and x86_64 dumps already contain the valid_zones sysfs +attribute, so just add a new "lsmem -o +ZONES" test command and update +the expected results. + +Signed-off-by: Gerald Schaefer +--- + tests/expected/lsmem/lsmem-s390-zvm-6g | 21 ++++++++++++++++++ + tests/expected/lsmem/lsmem-x86_64-16g | 39 ++++++++++++++++++++++++++++++++++ + tests/ts/lsmem/lsmem | 1 + + 3 files changed, 61 insertions(+) + +diff --git a/tests/expected/lsmem/lsmem-s390-zvm-6g b/tests/expected/lsmem/lsmem-s390-zvm-6g +index 05af40d4d..9f4c805ad 100644 +--- a/tests/expected/lsmem/lsmem-s390-zvm-6g ++++ b/tests/expected/lsmem/lsmem-s390-zvm-6g +@@ -106,3 +106,24 @@ $ lsmem --json --output RANGE,SIZE,STATE,REMOVABLE,BLOCK,NODE + {"range": "0x0000000140000000-0x000000017fffffff", "size": "1G", "state": "offline", "removable": "-", "block": "20-23", "node": "0"} + ] + } ++ ++--- ++ ++$ lsmem -o +ZONES ++RANGE SIZE STATE REMOVABLE BLOCK ZONES ++0x0000000000000000-0x000000006fffffff 1.8G online yes 0-6 DMA ++0x0000000070000000-0x000000007fffffff 256M online no 7 DMA/Normal ++0x0000000080000000-0x000000009fffffff 512M online yes 8-9 Normal ++0x00000000a0000000-0x00000000bfffffff 512M online no 10-11 Normal ++0x00000000c0000000-0x00000000dfffffff 512M online yes 12-13 Normal ++0x00000000e0000000-0x00000000efffffff 256M offline - 14 Normal ++0x00000000f0000000-0x00000000ffffffff 256M online yes 15 Normal ++0x0000000100000000-0x000000010fffffff 256M online no 16 Normal ++0x0000000110000000-0x000000011fffffff 256M online no 17 Normal/Movable ++0x0000000120000000-0x000000012fffffff 256M online yes 18 Movable/Normal ++0x0000000130000000-0x000000013fffffff 256M online yes 19 Movable ++0x0000000140000000-0x000000017fffffff 1G offline - 20-23 Movable ++ ++Memory block size: 256M ++Total online memory: 4.8G ++Total offline memory: 1.3G +diff --git a/tests/expected/lsmem/lsmem-x86_64-16g b/tests/expected/lsmem/lsmem-x86_64-16g +index 14d7d84f6..40316a584 100644 +--- a/tests/expected/lsmem/lsmem-x86_64-16g ++++ b/tests/expected/lsmem/lsmem-x86_64-16g +@@ -269,3 +269,42 @@ $ lsmem --json --output RANGE,SIZE,STATE,REMOVABLE,BLOCK,NODE + {"range": "0x0000000438000000-0x000000043fffffff", "size": "128M", "state": "online", "removable": "no", "block": "135", "node": "0"} + ] + } ++ ++--- ++ ++$ lsmem -o +ZONES ++RANGE SIZE STATE REMOVABLE BLOCK ZONES ++0x0000000000000000-0x0000000007ffffff 128M online no 0 None ++0x0000000008000000-0x0000000037ffffff 768M online yes 1-6 DMA32 ++0x0000000038000000-0x000000003fffffff 128M online no 7 DMA32 ++0x0000000040000000-0x0000000077ffffff 896M online yes 8-14 DMA32 ++0x0000000078000000-0x000000007fffffff 128M online no 15 DMA32 ++0x0000000080000000-0x00000000afffffff 768M online yes 16-21 DMA32 ++0x00000000b0000000-0x00000000bfffffff 256M online no 22-23 DMA32 ++0x0000000100000000-0x00000001a7ffffff 2.6G online no 32-52 Normal ++0x00000001a8000000-0x00000001afffffff 128M online yes 53 Normal ++0x00000001b0000000-0x00000001bfffffff 256M online no 54-55 Normal ++0x00000001c0000000-0x00000001ffffffff 1G online yes 56-63 Normal ++0x0000000200000000-0x0000000207ffffff 128M online no 64 Normal ++0x0000000208000000-0x000000021fffffff 384M online yes 65-67 Normal ++0x0000000220000000-0x0000000237ffffff 384M online no 68-70 Normal ++0x0000000238000000-0x0000000277ffffff 1G online yes 71-78 Normal ++0x0000000278000000-0x000000028fffffff 384M online no 79-81 Normal ++0x0000000290000000-0x0000000297ffffff 128M online yes 82 Normal ++0x0000000298000000-0x00000002a7ffffff 256M online no 83-84 Normal ++0x00000002a8000000-0x00000002c7ffffff 512M online yes 85-88 Normal ++0x00000002c8000000-0x00000002dfffffff 384M online no 89-91 Normal ++0x00000002e0000000-0x00000002efffffff 256M online yes 92-93 Normal ++0x00000002f0000000-0x000000034fffffff 1.5G online no 94-105 Normal ++0x0000000350000000-0x0000000357ffffff 128M online yes 106 Normal ++0x0000000358000000-0x000000036fffffff 384M online no 107-109 Normal ++0x0000000370000000-0x0000000377ffffff 128M online yes 110 Normal ++0x0000000378000000-0x00000003c7ffffff 1.3G online no 111-120 Normal ++0x00000003c8000000-0x00000003e7ffffff 512M online yes 121-124 Normal ++0x00000003e8000000-0x000000042fffffff 1.1G online no 125-133 Normal ++0x0000000430000000-0x0000000437ffffff 128M online yes 134 Normal ++0x0000000438000000-0x000000043fffffff 128M online no 135 None ++ ++Memory block size: 128M ++Total online memory: 16G ++Total offline memory: 0B +diff --git a/tests/ts/lsmem/lsmem b/tests/ts/lsmem/lsmem +index 79c0523b9..b1313773e 100755 +--- a/tests/ts/lsmem/lsmem ++++ b/tests/ts/lsmem/lsmem +@@ -49,6 +49,7 @@ for dump in $(ls $TS_SELF/dumps/*.tar.bz2 | sort); do + do_lsmem --all --output $LSCOLUMNS + do_lsmem --raw --output $LSCOLUMNS + do_lsmem --json --output $LSCOLUMNS ++ do_lsmem -o +ZONES + + ts_finalize_subtest + done +-- +2.15.0 + diff --git a/util-linux-lsmem-memory-zone-3.patch b/util-linux-lsmem-memory-zone-3.patch new file mode 100644 index 0000000..7f35038 --- /dev/null +++ b/util-linux-lsmem-memory-zone-3.patch @@ -0,0 +1,44 @@ +From afee3f204247fbc8e4cfaa1698f3d98762544dd8 Mon Sep 17 00:00:00 2001 +From: Andre Wild +Date: Wed, 27 Sep 2017 19:44:46 +0200 +Subject: [PATCH 3/3] lsmem/chmem: add memory zone awareness to bash-completion + +This patch extends the valid --output values with ZONES for the +lsmem bash-completion, and adds the --zone option for the chmem +bash-completion. + +Signed-off-by: Andre Wild +Signed-off-by: Gerald Schaefer +--- + bash-completion/chmem | 1 + + bash-completion/lsmem | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bash-completion/chmem b/bash-completion/chmem +index 00b870dbd..3e3af87ac 100644 +--- a/bash-completion/chmem ++++ b/bash-completion/chmem +@@ -16,6 +16,7 @@ _chmem_module() + --disable + --blocks + --verbose ++ --zone + --help + --version + " +diff --git a/bash-completion/lsmem b/bash-completion/lsmem +index 8f7a46ec3..9aa124569 100644 +--- a/bash-completion/lsmem ++++ b/bash-completion/lsmem +@@ -9,7 +9,7 @@ _lsmem_module() + local prefix realcur OUTPUT_ALL OUTPUT + realcur="${cur##*,}" + prefix="${cur%$realcur}" +- OUTPUT_ALL='RANGE SIZE STATE REMOVABLE BLOCK NODE' ++ OUTPUT_ALL='RANGE SIZE STATE REMOVABLE BLOCK NODE ZONES' + for WORD in $OUTPUT_ALL; do + if ! [[ $prefix == *"$WORD"* ]]; then + OUTPUT="$WORD ${OUTPUT:-""}" +-- +2.15.0 + diff --git a/util-linux-systemd.changes b/util-linux-systemd.changes index ec5c271..65cf296 100644 --- a/util-linux-systemd.changes +++ b/util-linux-systemd.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Mon Dec 4 17:28:04 CET 2017 - sbrabec@suse.com + +- lsmem: Add support for zone awareness (bsc#1065471, FATE#324252, + util-linux-lsmem-memory-zone-1.patch, + util-linux-lsmem-memory-zone-2.patch, + util-linux-lsmem-memory-zone-3.patch). +- Drop util-linux-losetup-Add-support-for-setting-logical-blocksize.patch. + Different implementations exists in the new kernel, and it has + a conflicting implementation in util-linux. + ------------------------------------------------------------------- Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com @@ -22,6 +33,7 @@ Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com * fdisk: Improved ^C and ^D behavior. * cfdisk: Dialog to resize partition. * look: Follow the WORDLIST environment variable. + * losetup: Added support for --sector-size (FATE#319010). * script: Follow the usual semantics for stop/continue signals. * setpriv: New command line options --ambient-caps and --init-groups. diff --git a/util-linux-systemd.spec b/util-linux-systemd.spec index f1557fc..d9dfdc2 100644 --- a/util-linux-systemd.spec +++ b/util-linux-systemd.spec @@ -155,8 +155,12 @@ Source51: blkid.conf ## # PATCH-EXTEND-UPSTREAM: Let `su' handle /sbin and /usr/sbin in path Patch0: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff -# PATCH-FEATURE-SLE util-linux-losetup-Add-support-for-setting-logical-blocksize.patch bsc931634 FATE319010 hare@suse.de -- Add support for setting logical blocksizes. -Patch1: util-linux-losetup-Add-support-for-setting-logical-blocksize.patch +# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-1.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. +Patch1: util-linux-lsmem-memory-zone-1.patch +# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-2.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. +Patch2: util-linux-lsmem-memory-zone-2.patch +# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-3.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. +Patch3: util-linux-lsmem-memory-zone-3.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # %if %build_util_linux @@ -214,12 +218,6 @@ Recommends: adjtimex Recommends: time Recommends: which # -%if 0%{?suse_version} < 1330 -# Using Conflicts as util-linux-losetup-Add-support-for-setting-logical-blocksize -# now uses bit 5 of lo_flags with meaning LO_FLAGS_BLOCKSIZE bsc#966891 -# -Conflicts: kernel < 4.4 -%endif %else %if %build_python_libmount %else @@ -419,10 +417,9 @@ library. %prep %setup -q -n %{_name}-%{version} -b 40 %patch0 -p1 -%if 0%{?suse_version} < 1330 -# logical block size support in loop does not exist in Tumbleweed and upstream kernel yet %patch1 -p1 -%endif +%patch2 -p1 +%patch3 -p1 # # setctsid cp -p %{S:22} %{S:23} . diff --git a/util-linux.changes b/util-linux.changes index ec5c271..65cf296 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Mon Dec 4 17:28:04 CET 2017 - sbrabec@suse.com + +- lsmem: Add support for zone awareness (bsc#1065471, FATE#324252, + util-linux-lsmem-memory-zone-1.patch, + util-linux-lsmem-memory-zone-2.patch, + util-linux-lsmem-memory-zone-3.patch). +- Drop util-linux-losetup-Add-support-for-setting-logical-blocksize.patch. + Different implementations exists in the new kernel, and it has + a conflicting implementation in util-linux. + ------------------------------------------------------------------- Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com @@ -22,6 +33,7 @@ Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com * fdisk: Improved ^C and ^D behavior. * cfdisk: Dialog to resize partition. * look: Follow the WORDLIST environment variable. + * losetup: Added support for --sector-size (FATE#319010). * script: Follow the usual semantics for stop/continue signals. * setpriv: New command line options --ambient-caps and --init-groups. diff --git a/util-linux.spec b/util-linux.spec index 38578d7..077b899 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -155,8 +155,12 @@ Source51: blkid.conf ## # PATCH-EXTEND-UPSTREAM: Let `su' handle /sbin and /usr/sbin in path Patch0: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff -# PATCH-FEATURE-SLE util-linux-losetup-Add-support-for-setting-logical-blocksize.patch bsc931634 FATE319010 hare@suse.de -- Add support for setting logical blocksizes. -Patch1: util-linux-losetup-Add-support-for-setting-logical-blocksize.patch +# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-1.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. +Patch1: util-linux-lsmem-memory-zone-1.patch +# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-2.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. +Patch2: util-linux-lsmem-memory-zone-2.patch +# PATCH-FEATURE-UPSTREAM util-linux-lsmem-memory-zone-3.patch bsc1065471 FATE324252 sbrabec@suse.com -- lsmem: Add support for zone awareness. +Patch3: util-linux-lsmem-memory-zone-3.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # %if %build_util_linux @@ -214,12 +218,6 @@ Recommends: adjtimex Recommends: time Recommends: which # -%if 0%{?suse_version} < 1330 -# Using Conflicts as util-linux-losetup-Add-support-for-setting-logical-blocksize -# now uses bit 5 of lo_flags with meaning LO_FLAGS_BLOCKSIZE bsc#966891 -# -Conflicts: kernel < 4.4 -%endif %else %if %build_python_libmount %else @@ -419,10 +417,9 @@ library. %prep %setup -q -n %{_name}-%{version} -b 40 %patch0 -p1 -%if 0%{?suse_version} < 1330 -# logical block size support in loop does not exist in Tumbleweed and upstream kernel yet %patch1 -p1 -%endif +%patch2 -p1 +%patch3 -p1 # # setctsid cp -p %{S:22} %{S:23} . From c8508b94fa586d68143395067a9ba4bc56e0d061bc6fb5d4efd07013fa525007 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Mon, 18 Dec 2017 15:03:50 +0000 Subject: [PATCH 4/4] Accepting request 558188 from home:sbrabec:branches:util-linux-2.31-fix - Update bash completion conflict to cover rfkill file conflict. - Update changes. OBS-URL: https://build.opensuse.org/request/show/558188 OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=355 --- python-libmount.changes | 6 ++++++ python-libmount.spec | 4 ++-- util-linux-systemd.changes | 6 ++++++ util-linux-systemd.spec | 4 ++-- util-linux.changes | 6 ++++++ util-linux.spec | 4 ++-- 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/python-libmount.changes b/python-libmount.changes index 65cf296..53eb8c6 100644 --- a/python-libmount.changes +++ b/python-libmount.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Dec 18 15:30:56 CET 2017 - sbrabec@suse.com + +- Update bash completion conflict to cover rfkill file conflict. + ------------------------------------------------------------------- Mon Dec 4 17:28:04 CET 2017 - sbrabec@suse.com @@ -41,6 +46,7 @@ Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com libaudit. * Other bug fixes. - Drop upstreamed util-linux-use-tinfow.patch. +- Refreshed make-sure-sbin-resp-usr-sbin-are-in-PATH.diff. ------------------------------------------------------------------- Thu Sep 21 14:41:01 UTC 2017 - jengelh@inai.de diff --git a/python-libmount.spec b/python-libmount.spec index 4f124a1..8d0305a 100644 --- a/python-libmount.spec +++ b/python-libmount.spec @@ -189,8 +189,8 @@ Conflicts: coreutils < 8.21 # File conflict of sulogin and utmpdump (up to 12.3 and SLE11). Conflicts: sysvinit-tools < 2.88+-87 %endif -# File conflicts of completion files with <= Leap 42.1 and <= SLE12 SP1 (fixed by SLE12 Update, boo#977259#c3). -Conflicts: bash-completion <= 2.1-10 +# rfkill conflicts of completion files with <= Leap 42.3 and < SLE15. +Conflicts: bash-completion <= 2.7-1.3 # The preset is provided by the presets branding package since 0.4 (bsc#1012850) and since 12.2 in SLE (boo#1029775) Conflicts: systemd-presets-branding < 12.2 # bnc#805684: diff --git a/util-linux-systemd.changes b/util-linux-systemd.changes index 65cf296..53eb8c6 100644 --- a/util-linux-systemd.changes +++ b/util-linux-systemd.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Dec 18 15:30:56 CET 2017 - sbrabec@suse.com + +- Update bash completion conflict to cover rfkill file conflict. + ------------------------------------------------------------------- Mon Dec 4 17:28:04 CET 2017 - sbrabec@suse.com @@ -41,6 +46,7 @@ Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com libaudit. * Other bug fixes. - Drop upstreamed util-linux-use-tinfow.patch. +- Refreshed make-sure-sbin-resp-usr-sbin-are-in-PATH.diff. ------------------------------------------------------------------- Thu Sep 21 14:41:01 UTC 2017 - jengelh@inai.de diff --git a/util-linux-systemd.spec b/util-linux-systemd.spec index d9dfdc2..c5be432 100644 --- a/util-linux-systemd.spec +++ b/util-linux-systemd.spec @@ -189,8 +189,8 @@ Conflicts: coreutils < 8.21 # File conflict of sulogin and utmpdump (up to 12.3 and SLE11). Conflicts: sysvinit-tools < 2.88+-87 %endif -# File conflicts of completion files with <= Leap 42.1 and <= SLE12 SP1 (fixed by SLE12 Update, boo#977259#c3). -Conflicts: bash-completion <= 2.1-10 +# rfkill conflicts of completion files with <= Leap 42.3 and < SLE15. +Conflicts: bash-completion <= 2.7-1.3 # The preset is provided by the presets branding package since 0.4 (bsc#1012850) and since 12.2 in SLE (boo#1029775) Conflicts: systemd-presets-branding < 12.2 # bnc#805684: diff --git a/util-linux.changes b/util-linux.changes index 65cf296..53eb8c6 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Dec 18 15:30:56 CET 2017 - sbrabec@suse.com + +- Update bash completion conflict to cover rfkill file conflict. + ------------------------------------------------------------------- Mon Dec 4 17:28:04 CET 2017 - sbrabec@suse.com @@ -41,6 +46,7 @@ Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com libaudit. * Other bug fixes. - Drop upstreamed util-linux-use-tinfow.patch. +- Refreshed make-sure-sbin-resp-usr-sbin-are-in-PATH.diff. ------------------------------------------------------------------- Thu Sep 21 14:41:01 UTC 2017 - jengelh@inai.de diff --git a/util-linux.spec b/util-linux.spec index 077b899..19e2fcc 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -189,8 +189,8 @@ Conflicts: coreutils < 8.21 # File conflict of sulogin and utmpdump (up to 12.3 and SLE11). Conflicts: sysvinit-tools < 2.88+-87 %endif -# File conflicts of completion files with <= Leap 42.1 and <= SLE12 SP1 (fixed by SLE12 Update, boo#977259#c3). -Conflicts: bash-completion <= 2.1-10 +# rfkill conflicts of completion files with <= Leap 42.3 and < SLE15. +Conflicts: bash-completion <= 2.7-1.3 # The preset is provided by the presets branding package since 0.4 (bsc#1012850) and since 12.2 in SLE (boo#1029775) Conflicts: systemd-presets-branding < 12.2 # bnc#805684: