import util-linux-2.32.1-22.el8
This commit is contained in:
		
						commit
						6c871e5234
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | SOURCES/util-linux-2.32.1.tar.xz | ||||||
							
								
								
									
										1
									
								
								.util-linux.metadata
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.util-linux.metadata
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | de9271fb93fb651d21c027e2efb0cf0ac80f2e9a SOURCES/util-linux-2.32.1.tar.xz | ||||||
							
								
								
									
										26
									
								
								SOURCES/0000-login-create-var-log-lastlog.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								SOURCES/0000-login-create-var-log-lastlog.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | From 2d57cb2d64ba4757dcfd9d0e7ed4873cae8a6fcd Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 20 Jun 2016 11:09:02 +0200 | ||||||
|  | Subject: [PATCH 0/6] login: create /var/log/lastlog | ||||||
|  | 
 | ||||||
|  | Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=151635 | ||||||
|  | ---
 | ||||||
|  |  login-utils/login.c | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/login-utils/login.c b/login-utils/login.c
 | ||||||
|  | index 09ee8f8ea..8c9e43292 100644
 | ||||||
|  | --- a/login-utils/login.c
 | ||||||
|  | +++ b/login-utils/login.c
 | ||||||
|  | @@ -506,7 +506,7 @@ static void log_lastlog(struct login_context *cxt)
 | ||||||
|  |  	sa.sa_handler = SIG_IGN; | ||||||
|  |  	sigaction(SIGXFSZ, &sa, &oldsa_xfsz); | ||||||
|  |   | ||||||
|  | -	fd = open(_PATH_LASTLOG, O_RDWR, 0);
 | ||||||
|  | +	fd = open(_PATH_LASTLOG, O_RDWR | O_CREAT, 0);
 | ||||||
|  |  	if (fd < 0) | ||||||
|  |  		goto done; | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 2.14.4 | ||||||
|  | 
 | ||||||
							
								
								
									
										123
									
								
								SOURCES/0001-libblkid-Check-for-a-secondary-LUKS2-header.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								SOURCES/0001-libblkid-Check-for-a-secondary-LUKS2-header.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,123 @@ | |||||||
|  | From 768b91ef6f68661462494bed800505064eb97bc8 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Milan Broz <gmazyland@gmail.com> | ||||||
|  | Date: Wed, 11 Jul 2018 12:34:39 +0200 | ||||||
|  | Subject: [PATCH 1/6] libblkid: Check for a secondary LUKS2 header. | ||||||
|  | 
 | ||||||
|  | This patch adds search for a secondary LUKS2 header, | ||||||
|  | if the primary one is corrupted. | ||||||
|  | 
 | ||||||
|  | This patch is primarily needed for wipefs that should wipe | ||||||
|  | both signatures (otherwise LUKS2 header recovery can use | ||||||
|  | secondary header and revert wipefs action). | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Milan Broz <gmazyland@gmail.com> | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/8bee1a220db8effbe5a75ba9bc68840e019ea89a | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1595882 | ||||||
|  | ---
 | ||||||
|  |  libblkid/src/superblocks/luks.c | 60 ++++++++++++++++++++++++++++++++--------- | ||||||
|  |  1 file changed, 47 insertions(+), 13 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/libblkid/src/superblocks/luks.c b/libblkid/src/superblocks/luks.c
 | ||||||
|  | index bc3d7f558..67d7cfcc5 100644
 | ||||||
|  | --- a/libblkid/src/superblocks/luks.c
 | ||||||
|  | +++ b/libblkid/src/superblocks/luks.c
 | ||||||
|  | @@ -1,5 +1,6 @@
 | ||||||
|  |  /* | ||||||
|  |   * Copyright (C) 2008 Karel Zak <kzak@redhat.com> | ||||||
|  | + * Copyright (C) 2018 Milan Broz <gmazyland@gmail.com>
 | ||||||
|  |   * | ||||||
|  |   * Inspired by libvolume_id by | ||||||
|  |   *     Kay Sievers <kay.sievers@vrfy.org> | ||||||
|  | @@ -29,6 +30,15 @@
 | ||||||
|  |  #define LUKS2_CHECKSUM_ALG_L		32 | ||||||
|  |  #define LUKS2_CHECKSUM_L		64 | ||||||
|  |   | ||||||
|  | +#define LUKS_MAGIC	"LUKS\xba\xbe"
 | ||||||
|  | +#define LUKS_MAGIC_2	"SKUL\xba\xbe"
 | ||||||
|  | +
 | ||||||
|  | +/* Offsets for secondary header (for scan if primary header is corrupted). */
 | ||||||
|  | +#define LUKS2_HDR2_OFFSETS { 0x04000, 0x008000, 0x010000, 0x020000, \
 | ||||||
|  | +                             0x40000, 0x080000, 0x100000, 0x200000, 0x400000 }
 | ||||||
|  | +
 | ||||||
|  | +static const uint64_t secondary_offsets[] = LUKS2_HDR2_OFFSETS;
 | ||||||
|  | +
 | ||||||
|  |  struct luks_phdr { | ||||||
|  |  	uint8_t		magic[LUKS_MAGIC_L]; | ||||||
|  |  	uint16_t	version; | ||||||
|  | @@ -59,18 +69,16 @@ struct luks2_phdr {
 | ||||||
|  |  	/* Padding to 4k, then JSON area */ | ||||||
|  |  } __attribute__ ((packed)); | ||||||
|  |   | ||||||
|  | -static int probe_luks(blkid_probe pr, const struct blkid_idmag *mag)
 | ||||||
|  | +static int luks_attributes(blkid_probe pr, struct luks2_phdr *header, uint64_t offset)
 | ||||||
|  |  { | ||||||
|  | -	struct luks_phdr *header_v1;
 | ||||||
|  | -	struct luks2_phdr *header;
 | ||||||
|  |  	int version; | ||||||
|  | +	struct luks_phdr *header_v1;
 | ||||||
|  |   | ||||||
|  | -	header = blkid_probe_get_sb(pr, mag, struct luks2_phdr);
 | ||||||
|  | -	if (header == NULL)
 | ||||||
|  | -		return errno ? -errno : 1;
 | ||||||
|  | +	if (blkid_probe_set_magic(pr, offset, LUKS_MAGIC_L, (unsigned char *) &header->magic))
 | ||||||
|  | +		return BLKID_PROBE_NONE;
 | ||||||
|  |   | ||||||
|  |  	version = be16_to_cpu(header->version); | ||||||
|  | -	blkid_probe_sprintf_version(pr, "%u", be16_to_cpu(header->version));
 | ||||||
|  | +	blkid_probe_sprintf_version(pr, "%u", version);
 | ||||||
|  |   | ||||||
|  |  	if (version == 1) { | ||||||
|  |  		header_v1 = (struct luks_phdr *)header; | ||||||
|  | @@ -84,7 +92,37 @@ static int probe_luks(blkid_probe pr, const struct blkid_idmag *mag)
 | ||||||
|  |  		blkid_probe_set_id_label(pr, "SUBSYSTEM", | ||||||
|  |  			(unsigned char *) header->subsystem, LUKS2_LABEL_L); | ||||||
|  |  	} | ||||||
|  | -	return 0;
 | ||||||
|  | +
 | ||||||
|  | +	return BLKID_PROBE_OK;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +static int probe_luks(blkid_probe pr, const struct blkid_idmag *mag __attribute__((__unused__)))
 | ||||||
|  | +{
 | ||||||
|  | +	struct luks2_phdr *header;
 | ||||||
|  | +	size_t i;
 | ||||||
|  | +
 | ||||||
|  | +	header = (struct luks2_phdr *) blkid_probe_get_buffer(pr, 0, sizeof(struct luks2_phdr));
 | ||||||
|  | +	if (!header)
 | ||||||
|  | +		return errno ? -errno : BLKID_PROBE_NONE;
 | ||||||
|  | +
 | ||||||
|  | +	if (!memcmp(header->magic, LUKS_MAGIC, LUKS_MAGIC_L)) {
 | ||||||
|  | +		/* LUKS primary header was found. */
 | ||||||
|  | +		return luks_attributes(pr, header, 0);
 | ||||||
|  | +	} else {
 | ||||||
|  | +		/* No primary header, scan for known offsets of LUKS2 secondary header. */
 | ||||||
|  | +		for (i = 0; i < ARRAY_SIZE(secondary_offsets); i++) {
 | ||||||
|  | +			header = (struct luks2_phdr *) blkid_probe_get_buffer(pr,
 | ||||||
|  | +				  secondary_offsets[i], sizeof(struct luks2_phdr));
 | ||||||
|  | +
 | ||||||
|  | +			if (!header)
 | ||||||
|  | +				return errno ? -errno : BLKID_PROBE_NONE;
 | ||||||
|  | +
 | ||||||
|  | +			if (!memcmp(header->magic, LUKS_MAGIC_2, LUKS_MAGIC_L))
 | ||||||
|  | +				return luks_attributes(pr, header, secondary_offsets[i]);
 | ||||||
|  | +		}
 | ||||||
|  | +	}
 | ||||||
|  | +
 | ||||||
|  | +	return BLKID_PROBE_NONE;
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  const struct blkid_idinfo luks_idinfo = | ||||||
|  | @@ -92,9 +130,5 @@ const struct blkid_idinfo luks_idinfo =
 | ||||||
|  |  	.name		= "crypto_LUKS", | ||||||
|  |  	.usage		= BLKID_USAGE_CRYPTO, | ||||||
|  |  	.probefunc	= probe_luks, | ||||||
|  | -	.magics		=
 | ||||||
|  | -	{
 | ||||||
|  | -		{ .magic = "LUKS\xba\xbe", .len = 6 },
 | ||||||
|  | -		{ NULL }
 | ||||||
|  | -	}
 | ||||||
|  | +	.magics		= BLKID_NONE_MAGIC
 | ||||||
|  |  }; | ||||||
|  | -- 
 | ||||||
|  | 2.14.4 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,40 @@ | |||||||
|  | From 315960fa9a89248e9d56682c1915567d38fef431 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Thu, 7 Jun 2018 12:05:08 +0200 | ||||||
|  | Subject: [PATCH 2/6] losetup: keep -f and <devname> mutually exclusive | ||||||
|  | 
 | ||||||
|  | losetup tries to blindly use specified device as well as search for | ||||||
|  | the first free device, the result is: | ||||||
|  | 
 | ||||||
|  |  # losetup /dev/loop1 -f /tmp/tfile_loop1 | ||||||
|  |  losetup: /dev/loop1: failed to set up loop device: Invalid argument | ||||||
|  | 
 | ||||||
|  | fixed version: | ||||||
|  | 
 | ||||||
|  |  # losetup /dev/loop10 -f img | ||||||
|  |  losetup: unexpected arguments | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1614364 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/c3f5a0f1d47dbc47f6d21da232d4eb1cfb7905db | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  sys-utils/losetup.c | 3 +++ | ||||||
|  |  1 file changed, 3 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c
 | ||||||
|  | index 9c479c02d..e80ceacce 100644
 | ||||||
|  | --- a/sys-utils/losetup.c
 | ||||||
|  | +++ b/sys-utils/losetup.c
 | ||||||
|  | @@ -749,6 +749,9 @@ int main(int argc, char **argv)
 | ||||||
|  |  		 */ | ||||||
|  |  		act = A_CREATE; | ||||||
|  |  		file = argv[optind++]; | ||||||
|  | +
 | ||||||
|  | +		if (optind < argc)
 | ||||||
|  | +			errx(EXIT_FAILURE, _("unexpected arguments"));
 | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  |  	if (list && !act && optind == argc) | ||||||
|  | -- 
 | ||||||
|  | 2.14.4 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,55 @@ | |||||||
|  | From 4859f218a3be0ae90908fc0ddbef498a784e9b24 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Fri, 10 Aug 2018 16:27:41 +0200 | ||||||
|  | Subject: [PATCH 3/6] mount: add ext4 to some places to the man page | ||||||
|  | 
 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/d901e4275f7c1899518bab3b34424c90af8dc35e | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1614852 | ||||||
|  | ---
 | ||||||
|  |  sys-utils/mount.8 | 9 +++++---- | ||||||
|  |  1 file changed, 5 insertions(+), 4 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/sys-utils/mount.8 b/sys-utils/mount.8
 | ||||||
|  | index 562ecb187..1cc792979 100644
 | ||||||
|  | --- a/sys-utils/mount.8
 | ||||||
|  | +++ b/sys-utils/mount.8
 | ||||||
|  | @@ -880,7 +880,7 @@ output for extN filesystems).
 | ||||||
|  |  The following options apply to any filesystem that is being | ||||||
|  |  mounted (but not every filesystem actually honors them \(en e.g.\&, the | ||||||
|  |  .B sync | ||||||
|  | -option today has an effect only for ext2, ext3, fat, vfat and ufs):
 | ||||||
|  | +option today has an effect only for ext2, ext3, ext4, fat, vfat and ufs):
 | ||||||
|  |   | ||||||
|  |  .TP | ||||||
|  |  .B async | ||||||
|  | @@ -916,7 +916,8 @@ The
 | ||||||
|  |  .B context= | ||||||
|  |  option is useful when mounting filesystems that do not support | ||||||
|  |  extended attributes, such as a floppy or hard disk formatted with VFAT, or | ||||||
|  | -systems that are not normally running under SELinux, such as an ext3 formatted
 | ||||||
|  | +systems that are not normally running under SELinux, such as an ext3 or ext4 formatted
 | ||||||
|  | +
 | ||||||
|  |  disk from a non-SELinux workstation.  You can also use | ||||||
|  |  .B context= | ||||||
|  |  on filesystems you do not trust, such as a floppy.  It also helps in compatibility with | ||||||
|  | @@ -2314,7 +2315,7 @@ not specified or the filesystem is known for libblkid, for example:
 | ||||||
|  |  .sp | ||||||
|  |  .B "mount /tmp/disk.img /mnt" | ||||||
|  |  .sp | ||||||
|  | -.B "mount \-t ext3 /tmp/disk.img /mnt"
 | ||||||
|  | +.B "mount \-t ext4 /tmp/disk.img /mnt"
 | ||||||
|  |  .sp | ||||||
|  |  .RE | ||||||
|  |  This type of mount knows about three options, namely | ||||||
|  | @@ -2462,7 +2463,7 @@ It is possible for a corrupted filesystem to cause a crash.
 | ||||||
|  |  .PP | ||||||
|  |  Some Linux filesystems don't support | ||||||
|  |  .BR "\-o sync " nor " \-o dirsync" | ||||||
|  | -(the ext2, ext3, fat and vfat filesystems
 | ||||||
|  | +(the ext2, ext3, ext4, fat and vfat filesystems
 | ||||||
|  |  .I do | ||||||
|  |  support synchronous updates (a la BSD) when mounted with the | ||||||
|  |  .B sync | ||||||
|  | -- 
 | ||||||
|  | 2.14.4 | ||||||
|  | 
 | ||||||
							
								
								
									
										29
									
								
								SOURCES/0004-logger-add-S-to-the-man-page.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								SOURCES/0004-logger-add-S-to-the-man-page.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | From 56b9e31e6b9864bba07a25d2244ca0006eed5bb5 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Fri, 10 Aug 2018 16:55:14 +0200 | ||||||
|  | Subject: [PATCH 4/6] logger: add -S to the man page | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1614843 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/1f6583930b1061c5e79e09a9f2e80caaf9eeb405 | ||||||
|  | Reported-by: Radka Skvarilova <rskvaril@redhat.com> | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  misc-utils/logger.1 | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/misc-utils/logger.1 b/misc-utils/logger.1
 | ||||||
|  | index f121c4dc9..f9655978d 100644
 | ||||||
|  | --- a/misc-utils/logger.1
 | ||||||
|  | +++ b/misc-utils/logger.1
 | ||||||
|  | @@ -224,7 +224,7 @@ produces:
 | ||||||
|  |  .fi | ||||||
|  |  .IP | ||||||
|  |  .TP | ||||||
|  | -.BR \-\-size " \fIsize
 | ||||||
|  | +.BR \-S , " -\-size " \fIsize
 | ||||||
|  |  Sets the maximum permitted message size to \fIsize\fR.  The default | ||||||
|  |  is 1KiB characters, which is the limit traditionally used and specified | ||||||
|  |  in RFC 3164.  With RFC 5424, this limit has become flexible.  A good assumption | ||||||
|  | -- 
 | ||||||
|  | 2.14.4 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,76 @@ | |||||||
|  | From e73085fe74356df96b0e694c906f22f9c71a56c7 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 13 Aug 2018 13:49:26 +0200 | ||||||
|  | Subject: [PATCH 5/6] lslogins: add info about single-user output mode | ||||||
|  | 
 | ||||||
|  | The supported command line synopsis is also | ||||||
|  | 
 | ||||||
|  | 	lslogins foo | ||||||
|  | 
 | ||||||
|  | and it provides different output than | ||||||
|  | 
 | ||||||
|  | 	lslogins -l foo | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1614967 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  login-utils/lslogins.1 | 11 ++++++++++- | ||||||
|  |  login-utils/lslogins.c |  2 +- | ||||||
|  |  2 files changed, 11 insertions(+), 2 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/login-utils/lslogins.1 b/login-utils/lslogins.1
 | ||||||
|  | index bd6955f82..effd42790 100644
 | ||||||
|  | --- a/login-utils/lslogins.1
 | ||||||
|  | +++ b/login-utils/lslogins.1
 | ||||||
|  | @@ -9,10 +9,17 @@ lslogins \- display information about known users in the system
 | ||||||
|  |  .RB [ \-s | \-u [ =\fIUID ]] | ||||||
|  |  .RB [ \-g " \fIgroups\fR]" | ||||||
|  |  .RB [ \-l " \fIlogins\fR]" | ||||||
|  | +.RB [\fIusername\fR]
 | ||||||
|  |  .SH DESCRIPTION | ||||||
|  |  .PP | ||||||
|  |  Examine the wtmp and btmp logs, /etc/shadow (if necessary) and /etc/passwd | ||||||
|  |  and output the desired data. | ||||||
|  | +
 | ||||||
|  | +The optional argument \fIusername\fR forces
 | ||||||
|  | +.BR lslogins
 | ||||||
|  | +to print all available details about the specified user only. In this case the
 | ||||||
|  | +output format is different than in case of \fB\-l\fR or \fB\-g\fR.
 | ||||||
|  | +
 | ||||||
|  |  .PP | ||||||
|  |  The default action is to list info about all the users in the system. | ||||||
|  |  .SH OPTIONS | ||||||
|  | @@ -39,7 +46,8 @@ Show information about supplementary groups.
 | ||||||
|  |  .TP | ||||||
|  |  \fB\-g\fR, \fB\-\-groups\fR=\fIgroups\fR | ||||||
|  |  Only show data of users belonging to \fIgroups\fR.  More than one group | ||||||
|  | -may be specified; the list has to be comma-separated.
 | ||||||
|  | +may be specified; the list has to be comma-separated.  The unknown group
 | ||||||
|  | +names are ignored.
 | ||||||
|  |   | ||||||
|  |  Note that relation between user and group may be invisible for primary group if | ||||||
|  |  the user is not explicitly specify as group member (e.g. in /etc/group). If the | ||||||
|  | @@ -55,6 +63,7 @@ Display data containing information about the users' last login sessions.
 | ||||||
|  |  \fB\-l\fR, \fB\-\-logins\fR=\fIlogins\fR | ||||||
|  |  Only show data of users with a login specified in \fIlogins\fR (user names or user | ||||||
|  |  IDS).  More than one login may be specified; the list has to be comma-separated. | ||||||
|  | +The unknown login names are ignored.
 | ||||||
|  |  .TP | ||||||
|  |  \fB\-n\fR, \fB\-\-newline\fR | ||||||
|  |  Display each piece of information on a separate line. | ||||||
|  | diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c
 | ||||||
|  | index 169962b72..501778e54 100644
 | ||||||
|  | --- a/login-utils/lslogins.c
 | ||||||
|  | +++ b/login-utils/lslogins.c
 | ||||||
|  | @@ -1293,7 +1293,7 @@ static void __attribute__((__noreturn__)) usage(void)
 | ||||||
|  |  	size_t i; | ||||||
|  |   | ||||||
|  |  	fputs(USAGE_HEADER, out); | ||||||
|  | -	fprintf(out, _(" %s [options]\n"), program_invocation_short_name);
 | ||||||
|  | +	fprintf(out, _(" %s [options] [<username>]\n"), program_invocation_short_name);
 | ||||||
|  |   | ||||||
|  |  	fputs(USAGE_SEPARATOR, out); | ||||||
|  |  	fputs(_("Display information about known users in the system.\n"), out); | ||||||
|  | -- 
 | ||||||
|  | 2.14.4 | ||||||
|  | 
 | ||||||
							
								
								
									
										105
									
								
								SOURCES/0006-lslogins-return-1-on-lslogins-nonexisting.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								SOURCES/0006-lslogins-return-1-on-lslogins-nonexisting.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,105 @@ | |||||||
|  | From 0aa9097f9ecee3688b8659d7f7414f5fb26e147a Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 13 Aug 2018 14:16:28 +0200 | ||||||
|  | Subject: [PATCH 6/6] lslogins: return 1 on "lslogins nonexisting" | ||||||
|  | 
 | ||||||
|  | The default behavior for -l and -g is to silently ignore unknown login | ||||||
|  | names, but this is very confusing when you explicitly specify just one | ||||||
|  | login name. | ||||||
|  | 
 | ||||||
|  | Note that the current implementation also prints empty "Last log" for | ||||||
|  | nonexisting user. It seems ugly. | ||||||
|  | 
 | ||||||
|  |  # lslogins nonexisting | ||||||
|  | 
 | ||||||
|  |  Last logs: | ||||||
|  | 
 | ||||||
|  | new version: | ||||||
|  | 
 | ||||||
|  |  # lslogins nonexisting | ||||||
|  |  lt-lslogins: cannot found 'nonexisting' | ||||||
|  |  # echo $? | ||||||
|  |  1 | ||||||
|  | 
 | ||||||
|  | The -l and -g behaviour has not been changed. | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1614967 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  login-utils/lslogins.1 |  3 ++- | ||||||
|  |  login-utils/lslogins.c | 16 +++++++++++++--- | ||||||
|  |  2 files changed, 15 insertions(+), 4 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/login-utils/lslogins.1 b/login-utils/lslogins.1
 | ||||||
|  | index effd42790..c831739d9 100644
 | ||||||
|  | --- a/login-utils/lslogins.1
 | ||||||
|  | +++ b/login-utils/lslogins.1
 | ||||||
|  | @@ -18,7 +18,8 @@ and output the desired data.
 | ||||||
|  |  The optional argument \fIusername\fR forces | ||||||
|  |  .BR lslogins | ||||||
|  |  to print all available details about the specified user only. In this case the | ||||||
|  | -output format is different than in case of \fB\-l\fR or \fB\-g\fR.
 | ||||||
|  | +output format is different than in case of \fB\-l\fR or \fB\-g\fR and unknown
 | ||||||
|  | +is \fIusername\fR reported as an error.
 | ||||||
|  |   | ||||||
|  |  .PP | ||||||
|  |  The default action is to list info about all the users in the system. | ||||||
|  | diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c
 | ||||||
|  | index 501778e54..6f804aa35 100644
 | ||||||
|  | --- a/login-utils/lslogins.c
 | ||||||
|  | +++ b/login-utils/lslogins.c
 | ||||||
|  | @@ -266,6 +266,7 @@ struct lslogins_control {
 | ||||||
|  |  	const char *journal_path; | ||||||
|  |   | ||||||
|  |  	unsigned int selinux_enabled : 1, | ||||||
|  | +		     fail_on_unknown : 1,		/* fail if user does not exist */
 | ||||||
|  |  		     ulist_on : 1, | ||||||
|  |  		     noheadings : 1, | ||||||
|  |  		     notrunc : 1; | ||||||
|  | @@ -653,6 +654,7 @@ static struct lslogins_user *get_user_info(struct lslogins_control *ctl, const c
 | ||||||
|  |  	uid_t uid; | ||||||
|  |  	errno = 0; | ||||||
|  |   | ||||||
|  | +	errno = 0;
 | ||||||
|  |  	pwd = username ? getpwnam(username) : getpwent(); | ||||||
|  |  	if (!pwd) | ||||||
|  |  		return NULL; | ||||||
|  | @@ -675,6 +677,7 @@ static struct lslogins_user *get_user_info(struct lslogins_control *ctl, const c
 | ||||||
|  |  		return NULL; | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  | +	errno = 0;
 | ||||||
|  |  	grp = getgrgid(pwd->pw_gid); | ||||||
|  |  	if (!grp) | ||||||
|  |  		return NULL; | ||||||
|  | @@ -965,10 +968,16 @@ static int create_usertree(struct lslogins_control *ctl)
 | ||||||
|  |   | ||||||
|  |  	if (ctl->ulist_on) { | ||||||
|  |  		for (n = 0; n < ctl->ulsiz; n++) { | ||||||
|  | -			if (get_user(ctl, &user, ctl->ulist[n]))
 | ||||||
|  | +			int rc = get_user(ctl, &user, ctl->ulist[n]);
 | ||||||
|  | +
 | ||||||
|  | +			if (ctl->fail_on_unknown && !user) {
 | ||||||
|  | +				warnx(_("cannot found '%s'"), ctl->ulist[n]);
 | ||||||
|  | +				return -1;
 | ||||||
|  | +			}
 | ||||||
|  | +			if (rc || !user)
 | ||||||
|  |  				continue; | ||||||
|  | -			if (user) /* otherwise an invalid user name has probably been given */
 | ||||||
|  | -				tsearch(user, &ctl->usertree, cmp_uid);
 | ||||||
|  | +
 | ||||||
|  | +			tsearch(user, &ctl->usertree, cmp_uid);
 | ||||||
|  |  		} | ||||||
|  |  	} else { | ||||||
|  |  		while ((user = get_next_user(ctl))) | ||||||
|  | @@ -1518,6 +1527,7 @@ int main(int argc, char *argv[])
 | ||||||
|  |  			errx(EXIT_FAILURE, _("Only one user may be specified. Use -l for multiple users.")); | ||||||
|  |  		logins = argv[optind]; | ||||||
|  |  		outmode = OUT_PRETTY; | ||||||
|  | +		ctl->fail_on_unknown = 1;
 | ||||||
|  |  	} else if (argc != optind) | ||||||
|  |  		errx(EXIT_FAILURE, _("Only one user may be specified. Use -l for multiple users.")); | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 2.14.4 | ||||||
|  | 
 | ||||||
							
								
								
									
										115
									
								
								SOURCES/0007-libuuid-fix-name-based-UUIDs.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								SOURCES/0007-libuuid-fix-name-based-UUIDs.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,115 @@ | |||||||
|  | From f942ba2c4c14b6bf7720e8316afe1971231553bc Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Fri, 31 Aug 2018 12:27:32 +0200 | ||||||
|  | Subject: [PATCH 7/8] libuuid: fix name-based UUIDs | ||||||
|  | 
 | ||||||
|  | The current version is not fully compatible with RFC4122. It | ||||||
|  | incorrectly encodes UUID variant | ||||||
|  | 
 | ||||||
|  | 	xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx | ||||||
|  | 
 | ||||||
|  | where M is UUID version and N is UUID variant. | ||||||
|  | 
 | ||||||
|  |  $ python -c "import uuid ; print(uuid.uuid5(uuid.UUID(int=0), 'foo'))" | ||||||
|  |  aa752cea-8222-5bc8-acd9-555b090c0ccb | ||||||
|  |                     ^^ | ||||||
|  | 
 | ||||||
|  | Old version: | ||||||
|  | 
 | ||||||
|  |  $ uuidgen --namespace 00000000-0000-0000-0000-000000000000 --name 'foo' --sha1 | ||||||
|  |  aa752cea-8222-5bc8-8cd9-555b090c0ccb | ||||||
|  |                     ^^ | ||||||
|  | 
 | ||||||
|  | Fixed version: | ||||||
|  |  ./uuidgen --namespace 00000000-0000-0000-0000-000000000000 --name 'foo' --sha1; | ||||||
|  |  aa752cea-8222-5bc8-acd9-555b090c0ccb | ||||||
|  |                     ^^ | ||||||
|  | 
 | ||||||
|  | The patch uses uuid_unpack and uuid_pack. It makes code more readable | ||||||
|  | and allow to access proper octens. The same way we already use for | ||||||
|  | time and random based UUIDs. | ||||||
|  | 
 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/d6ddf07d31dfdc894eb8e7e6842aa856342c526e | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1624877 | ||||||
|  | Addresses: https://github.com/karelzak/util-linux/issues/683 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  libuuid/src/gen_uuid.c | 34 ++++++++++++++++------------------ | ||||||
|  |  1 file changed, 16 insertions(+), 18 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/libuuid/src/gen_uuid.c b/libuuid/src/gen_uuid.c
 | ||||||
|  | index a374e75c9..27c135db5 100644
 | ||||||
|  | --- a/libuuid/src/gen_uuid.c
 | ||||||
|  | +++ b/libuuid/src/gen_uuid.c
 | ||||||
|  | @@ -96,9 +96,6 @@
 | ||||||
|  |  #define THREAD_LOCAL static | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  | -/* index with UUID_VARIANT_xxx and shift 5 bits */
 | ||||||
|  | -static unsigned char variant_bits[] = { 0x00, 0x04, 0x06, 0x07 };
 | ||||||
|  | -
 | ||||||
|  |  #ifdef _WIN32 | ||||||
|  |  static void gettimeofday (struct timeval *tv, void *dummy) | ||||||
|  |  { | ||||||
|  | @@ -566,21 +563,22 @@ void uuid_generate_md5(uuid_t out, const uuid_t ns, const char *name, size_t len
 | ||||||
|  |  { | ||||||
|  |  	UL_MD5_CTX ctx; | ||||||
|  |  	char hash[UL_MD5LENGTH]; | ||||||
|  | +	uuid_t buf;
 | ||||||
|  | +	struct uuid uu;
 | ||||||
|  |   | ||||||
|  |  	ul_MD5Init(&ctx); | ||||||
|  | -	/* hash concatenation of well-known UUID with name */
 | ||||||
|  |  	ul_MD5Update(&ctx, ns, sizeof(uuid_t)); | ||||||
|  |  	ul_MD5Update(&ctx, (const unsigned char *)name, len); | ||||||
|  | -
 | ||||||
|  |  	ul_MD5Final((unsigned char *)hash, &ctx); | ||||||
|  |   | ||||||
|  | -	memcpy(out, hash, sizeof(uuid_t));
 | ||||||
|  | +	assert(sizeof(buf) <= sizeof(hash));
 | ||||||
|  |   | ||||||
|  | -	out[6] &= ~(UUID_TYPE_MASK << UUID_TYPE_SHIFT);
 | ||||||
|  | -	out[6] |= (UUID_TYPE_DCE_MD5 << UUID_TYPE_SHIFT);
 | ||||||
|  | +	memcpy(buf, hash, sizeof(buf));
 | ||||||
|  | +	uuid_unpack(buf, &uu);
 | ||||||
|  |   | ||||||
|  | -	out[8] &= ~(UUID_VARIANT_MASK << UUID_VARIANT_SHIFT);
 | ||||||
|  | -	out[8] |= (variant_bits[UUID_VARIANT_DCE] << UUID_VARIANT_SHIFT);
 | ||||||
|  | +	uu.clock_seq = (uu.clock_seq & 0x3FFF) | 0x8000;
 | ||||||
|  | +	uu.time_hi_and_version = (uu.time_hi_and_version & 0x0FFF) | 0x3000;
 | ||||||
|  | +	uuid_pack(&uu, out);
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  /* | ||||||
|  | @@ -591,20 +589,20 @@ void uuid_generate_sha1(uuid_t out, const uuid_t ns, const char *name, size_t le
 | ||||||
|  |  { | ||||||
|  |  	UL_SHA1_CTX ctx; | ||||||
|  |  	char hash[UL_SHA1LENGTH]; | ||||||
|  | +	uuid_t buf;
 | ||||||
|  | +	struct uuid uu;
 | ||||||
|  |   | ||||||
|  |  	ul_SHA1Init(&ctx); | ||||||
|  | -	/* hash concatenation of well-known UUID with name */
 | ||||||
|  |  	ul_SHA1Update(&ctx, ns, sizeof(uuid_t)); | ||||||
|  |  	ul_SHA1Update(&ctx, (const unsigned char *)name, len); | ||||||
|  | -
 | ||||||
|  |  	ul_SHA1Final((unsigned char *)hash, &ctx); | ||||||
|  |   | ||||||
|  | -	memcpy(out, hash, sizeof(uuid_t));
 | ||||||
|  | +	assert(sizeof(buf) <= sizeof(hash));
 | ||||||
|  |   | ||||||
|  | -	out[6] &= ~(UUID_TYPE_MASK << UUID_TYPE_SHIFT);
 | ||||||
|  | -	out[6] |= (UUID_TYPE_DCE_SHA1 << UUID_TYPE_SHIFT);
 | ||||||
|  | +	memcpy(buf, hash, sizeof(buf));
 | ||||||
|  | +	uuid_unpack(buf, &uu);
 | ||||||
|  |   | ||||||
|  | -	out[8] &= ~(UUID_VARIANT_MASK << UUID_VARIANT_SHIFT);
 | ||||||
|  | -	out[8] |= (variant_bits[UUID_VARIANT_DCE] << UUID_VARIANT_SHIFT);
 | ||||||
|  | +	uu.clock_seq = (uu.clock_seq & 0x3FFF) | 0x8000;
 | ||||||
|  | +	uu.time_hi_and_version = (uu.time_hi_and_version & 0x0FFF) | 0x5000;
 | ||||||
|  | +	uuid_pack(&uu, out);
 | ||||||
|  |  } | ||||||
|  | -
 | ||||||
|  | -- 
 | ||||||
|  | 2.14.4 | ||||||
|  | 
 | ||||||
							
								
								
									
										25
									
								
								SOURCES/0008-test-update-UUID-v5-tests.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								SOURCES/0008-test-update-UUID-v5-tests.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | From 2f75c4cdf6992af034bf02de55ad2ea90608e1c0 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Fri, 31 Aug 2018 12:48:46 +0200 | ||||||
|  | Subject: [PATCH 8/8] test: update UUID v5 tests | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1624877 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/7edaf221d610309874e866670dceb4e2f3a04070 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/expected/uuid/oids | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/expected/uuid/oids b/tests/expected/uuid/oids
 | ||||||
|  | index 4644848e8..c121cbeee 100644
 | ||||||
|  | --- a/tests/expected/uuid/oids
 | ||||||
|  | +++ b/tests/expected/uuid/oids
 | ||||||
|  | @@ -1,4 +1,4 @@
 | ||||||
|  |  3d813cbb-47fb-32ba-91df-831e1593ac29 | ||||||
|  |  5df41881-3aed-3515-88a7-2f4a814cf09e | ||||||
|  |  2ed6657d-e927-568b-95e1-2665a8aea6a2 | ||||||
|  | -fcdc2122-78d2-59f7-91ed-041a561ef652
 | ||||||
|  | +fcdc2122-78d2-59f7-b1ed-041a561ef652
 | ||||||
|  | -- 
 | ||||||
|  | 2.14.4 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | From a0753a5452e293da56e1e8579d17b4eb19a7d6a2 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Fri, 30 Nov 2018 12:22:48 +0100 | ||||||
|  | Subject: [PATCH 09/14] tests: enlarge backing file for fstab-btrfs | ||||||
|  | 
 | ||||||
|  | It seems the new limit for Btrfs is 47MiB. | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1656437 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/7174b93dfda08f87228bb7aec6274fe60af581bd | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/ts/mount/fstab-btrfs | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/ts/mount/fstab-btrfs b/tests/ts/mount/fstab-btrfs
 | ||||||
|  | index 090f52304..54c6bb8ba 100755
 | ||||||
|  | --- a/tests/ts/mount/fstab-btrfs
 | ||||||
|  | +++ b/tests/ts/mount/fstab-btrfs
 | ||||||
|  | @@ -42,7 +42,7 @@ TS_MOUNTPOINT_SUBVOL="$TS_MOUNTPOINT-subvol"
 | ||||||
|  |  TS_MOUNTPOINT_SUBVOLID="$TS_MOUNTPOINT-subvolid" | ||||||
|  |  TS_MOUNTPOINT_BIND="$TS_MOUNTPOINT-bind" | ||||||
|  |   | ||||||
|  | -ts_device_init 42
 | ||||||
|  | +ts_device_init 50
 | ||||||
|  |  DEVICE=$TS_LODEV | ||||||
|  |  [ -d "$TS_MOUNTPOINT_CREATE" ] || mkdir -p "$TS_MOUNTPOINT_CREATE" | ||||||
|  |  [ -d "$TS_MOUNTPOINT_DEFAULT" ] || mkdir -p "$TS_MOUNTPOINT_DEFAULT" | ||||||
|  | -- 
 | ||||||
|  | 2.17.2 | ||||||
|  | 
 | ||||||
							
								
								
									
										81
									
								
								SOURCES/0010-tests-make-lsns-netnsid-portable.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								SOURCES/0010-tests-make-lsns-netnsid-portable.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,81 @@ | |||||||
|  | From b48e972b3aa32710ed0495c35b2184f5d3ec9eb0 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Fri, 30 Nov 2018 12:24:15 +0100 | ||||||
|  | Subject: [PATCH 10/14] tests: make lsns-netnsid portable | ||||||
|  | 
 | ||||||
|  | It seems ip(8) link-show command does not provide link-netnsid in all | ||||||
|  | cases (versions ?). Let's try to use "ip netns list-id" as fallback. | ||||||
|  | 
 | ||||||
|  | This commit also add possibility to debug the script by $LOG variable. | ||||||
|  | 
 | ||||||
|  | Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=1656437 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/0d79f5805ff2d7651ec70b06753e908cc782857a | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/ts/lsns/netnsid | 26 +++++++++++++++++++++++++- | ||||||
|  |  1 file changed, 25 insertions(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/ts/lsns/netnsid b/tests/ts/lsns/netnsid
 | ||||||
|  | index 72c14de6c..9d04f28f0 100755
 | ||||||
|  | --- a/tests/ts/lsns/netnsid
 | ||||||
|  | +++ b/tests/ts/lsns/netnsid
 | ||||||
|  | @@ -36,6 +36,7 @@ vethb=lsns-vethb
 | ||||||
|  |  NS=LSNS-TEST-NETNSID-NS | ||||||
|  |  FIFO=$TS_OUTDIR/FIFO-NETNSID | ||||||
|  |  NULL=/dev/null | ||||||
|  | +LOG=/dev/null #/root/foo.log
 | ||||||
|  |   | ||||||
|  |  function cleanup { | ||||||
|  |  	ip link delete $vetha 2> $NULL || : | ||||||
|  | @@ -43,24 +44,47 @@ function cleanup {
 | ||||||
|  |  	rm -f $FIFO | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +echo "==Cleanup" >> $LOG
 | ||||||
|  |  cleanup | ||||||
|  | +
 | ||||||
|  | +echo "==Create FIFO" >> $LOG
 | ||||||
|  |  mkfifo $FIFO | ||||||
|  |   | ||||||
|  | +echo "==Netns ADD" >> $LOG
 | ||||||
|  |  if ip netns add $NS && | ||||||
|  |  	ip link add name $vetha type veth peer name $vethb && | ||||||
|  |  	ip link set $vethb netns $NS; then | ||||||
|  | +    echo "===Netns EXEC" >> $LOG
 | ||||||
|  |      ip netns exec $NS dd if=$FIFO bs=1 count=2 of=$NULL 2> $NULL & | ||||||
|  |      PID=$! | ||||||
|  | +    echo "====PID=$PID" >> $LOG
 | ||||||
|  |  else | ||||||
|  |      cleanup | ||||||
|  |      ts_skip "failed to initialize" | ||||||
|  |  fi | ||||||
|  |  { | ||||||
|  | +    echo "==Write to FIFO" >> $LOG
 | ||||||
|  |      dd if=/dev/zero bs=1 count=1 2> $NULL | ||||||
|  |      { | ||||||
|  | -	ip -o link show dev $vetha > $NULL
 | ||||||
|  | +	echo "===IP output" >> $LOG
 | ||||||
|  | +	ip -o link show dev $vetha >> $LOG
 | ||||||
|  | +
 | ||||||
|  |  	IP_ID=$(ip -o link show dev $vetha | sed -ne 's/.* *link-netnsid *\([0-9]*\)/\1/p') | ||||||
|  | +	echo "====ip show: IP_ID=$IP_ID" >> $LOG
 | ||||||
|  | +
 | ||||||
|  | +	if [ "x$IP_ID" = "x" ]; then
 | ||||||
|  | +		echo "===IP output list id" >> $LOG
 | ||||||
|  | +		ip netns list-id >> $LOG
 | ||||||
|  | +
 | ||||||
|  | +		IP_ID=$(ip netns list-id | awk "/name: $NS/ { print \$2 }")
 | ||||||
|  | +		echo "====ip list-id: IP_ID=$IP_ID" >> $LOG
 | ||||||
|  | +	fi
 | ||||||
|  | +
 | ||||||
|  | +	echo "===LSNS output" >> $LOG
 | ||||||
|  | +	$TS_CMD_LSNS -o+NETNSID,NSFS --type net >> $LOG
 | ||||||
|  | +
 | ||||||
|  |  	LSNS_ID=$($TS_CMD_LSNS -n -o NETNSID --type net --task $PID | { read VAL; echo $VAL; } ) | ||||||
|  | +	echo "===LSNS_ID=$LSNS_ID" >> $LOG
 | ||||||
|  |      } | ||||||
|  |      dd if=/dev/zero bs=1 count=1 2> $NULL | ||||||
|  |  } > $FIFO | ||||||
|  | -- 
 | ||||||
|  | 2.17.2 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,111 @@ | |||||||
|  | From c2b650ebe33a001b3bf19912b136dbbff5495600 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Frank Schaefer <kelledin@gmail.com> | ||||||
|  | Date: Tue, 10 Jul 2018 20:21:02 -0500 | ||||||
|  | Subject: [PATCH 11/14] tests: break up large strings for PySys_WriteStdout() | ||||||
|  | 
 | ||||||
|  | Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=1656437 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/8a12ab57755afc36546834f175ef0b9e9376ba59 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  libmount/python/fs.c | 56 ++++++++++++++++++++++++++++++++++---------- | ||||||
|  |  1 file changed, 43 insertions(+), 13 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/libmount/python/fs.c b/libmount/python/fs.c
 | ||||||
|  | index d6490d248..634a914ef 100644
 | ||||||
|  | --- a/libmount/python/fs.c
 | ||||||
|  | +++ b/libmount/python/fs.c
 | ||||||
|  | @@ -63,32 +63,62 @@ static PyObject *Fs_get_devno(FsObject *self)
 | ||||||
|  |  	return PyObjectResultInt(mnt_fs_get_devno(self->fs)); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +static void _dump_debug_string(const char *lead, const char *s, char quote)
 | ||||||
|  | +{
 | ||||||
|  | +	/* PySys_WriteStdout() will automatically truncate any '%s' token
 | ||||||
|  | +	 * longer than a certain length (documented as 1000 bytes, but we
 | ||||||
|  | +	 * give ourselves some margin here just in case).  The only way I
 | ||||||
|  | +	 * know to get around this is to print such strings in bite-sized
 | ||||||
|  | +	 * chunks.
 | ||||||
|  | +	 */
 | ||||||
|  | +	static const unsigned int _PY_MAX_LEN = 900;
 | ||||||
|  | +	static const char *_PY_MAX_LEN_FMT = "%.900s";
 | ||||||
|  | +	unsigned int len;
 | ||||||
|  | +
 | ||||||
|  | +	if (lead != NULL)
 | ||||||
|  | +		PySys_WriteStdout("%s", lead);
 | ||||||
|  | +
 | ||||||
|  | +	if (quote != 0)
 | ||||||
|  | +		PySys_WriteStdout("%c", quote);
 | ||||||
|  | +
 | ||||||
|  | +	for (len = strlen(s); len > _PY_MAX_LEN; len -= _PY_MAX_LEN, s += _PY_MAX_LEN) 
 | ||||||
|  | +		PySys_WriteStdout(_PY_MAX_LEN_FMT, s);
 | ||||||
|  | +
 | ||||||
|  | +	if (len > 0)
 | ||||||
|  | +		PySys_WriteStdout(_PY_MAX_LEN_FMT, s);
 | ||||||
|  | +
 | ||||||
|  | +	if (quote != 0)
 | ||||||
|  | +		PySys_WriteStdout("%c\n", quote);
 | ||||||
|  | +	else
 | ||||||
|  | +		PySys_WriteStdout("\n");
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  |  #define Fs_print_debug_HELP "print_debug()\n\n" | ||||||
|  |  static PyObject *Fs_print_debug(FsObject *self) | ||||||
|  |  { | ||||||
|  |  	PySys_WriteStdout("------ fs: %p\n", self->fs); | ||||||
|  | -	PySys_WriteStdout("source: %s\n", mnt_fs_get_source(self->fs));
 | ||||||
|  | -	PySys_WriteStdout("target: %s\n", mnt_fs_get_target(self->fs));
 | ||||||
|  | -	PySys_WriteStdout("fstype: %s\n", mnt_fs_get_fstype(self->fs));
 | ||||||
|  | +	_dump_debug_string("source: ", mnt_fs_get_source(self->fs), 0);
 | ||||||
|  | +	_dump_debug_string("target: ", mnt_fs_get_target(self->fs), 0);
 | ||||||
|  | +	_dump_debug_string("fstype: ", mnt_fs_get_fstype(self->fs), 0);
 | ||||||
|  |   | ||||||
|  |  	if (mnt_fs_get_options(self->fs)) | ||||||
|  | -		PySys_WriteStdout("optstr: %s\n", mnt_fs_get_options(self->fs));
 | ||||||
|  | +		_dump_debug_string("optstr: ", mnt_fs_get_options(self->fs), 0);
 | ||||||
|  |  	if (mnt_fs_get_vfs_options(self->fs)) | ||||||
|  | -		PySys_WriteStdout("VFS-optstr: %s\n", mnt_fs_get_vfs_options(self->fs));
 | ||||||
|  | +		_dump_debug_string("VFS-optstr: ", mnt_fs_get_vfs_options(self->fs), 0);
 | ||||||
|  |  	if (mnt_fs_get_fs_options(self->fs)) | ||||||
|  | -		PySys_WriteStdout("FS-opstr: %s\n", mnt_fs_get_fs_options(self->fs));
 | ||||||
|  | +		_dump_debug_string("FS-opstr: ", mnt_fs_get_fs_options(self->fs), 0);
 | ||||||
|  |  	if (mnt_fs_get_user_options(self->fs)) | ||||||
|  | -		PySys_WriteStdout("user-optstr: %s\n", mnt_fs_get_user_options(self->fs));
 | ||||||
|  | +		_dump_debug_string("user-optstr: ", mnt_fs_get_user_options(self->fs), 0);
 | ||||||
|  |  	if (mnt_fs_get_optional_fields(self->fs)) | ||||||
|  | -		PySys_WriteStdout("optional-fields: '%s'\n", mnt_fs_get_optional_fields(self->fs));
 | ||||||
|  | +		_dump_debug_string("optional-fields: ", mnt_fs_get_optional_fields(self->fs), '\'');
 | ||||||
|  |  	if (mnt_fs_get_attributes(self->fs)) | ||||||
|  | -		PySys_WriteStdout("attributes: %s\n", mnt_fs_get_attributes(self->fs));
 | ||||||
|  | +		_dump_debug_string("attributes: ", mnt_fs_get_attributes(self->fs), 0);
 | ||||||
|  |   | ||||||
|  |  	if (mnt_fs_get_root(self->fs)) | ||||||
|  | -		PySys_WriteStdout("root:   %s\n", mnt_fs_get_root(self->fs));
 | ||||||
|  | +		_dump_debug_string("root:   ", mnt_fs_get_root(self->fs), 0);
 | ||||||
|  |   | ||||||
|  |  	if (mnt_fs_get_swaptype(self->fs)) | ||||||
|  | -		PySys_WriteStdout("swaptype: %s\n", mnt_fs_get_swaptype(self->fs));
 | ||||||
|  | +		_dump_debug_string("swaptype: ", mnt_fs_get_swaptype(self->fs), 0);
 | ||||||
|  |  	if (mnt_fs_get_size(self->fs)) | ||||||
|  |  		PySys_WriteStdout("size: %jd\n", mnt_fs_get_size(self->fs)); | ||||||
|  |  	if (mnt_fs_get_usedsize(self->fs)) | ||||||
|  | @@ -97,7 +127,7 @@ static PyObject *Fs_print_debug(FsObject *self)
 | ||||||
|  |  		PySys_WriteStdout("priority: %d\n", mnt_fs_get_priority(self->fs)); | ||||||
|  |   | ||||||
|  |  	if (mnt_fs_get_bindsrc(self->fs)) | ||||||
|  | -		PySys_WriteStdout("bindsrc: %s\n", mnt_fs_get_bindsrc(self->fs));
 | ||||||
|  | +		_dump_debug_string("bindsrc: ", mnt_fs_get_bindsrc(self->fs), 0);
 | ||||||
|  |  	if (mnt_fs_get_freq(self->fs)) | ||||||
|  |  		PySys_WriteStdout("freq:   %d\n", mnt_fs_get_freq(self->fs)); | ||||||
|  |  	if (mnt_fs_get_passno(self->fs)) | ||||||
|  | @@ -112,7 +142,7 @@ static PyObject *Fs_print_debug(FsObject *self)
 | ||||||
|  |  	if (mnt_fs_get_tid(self->fs)) | ||||||
|  |  		PySys_WriteStdout("tid:    %d\n", mnt_fs_get_tid(self->fs)); | ||||||
|  |  	if (mnt_fs_get_comment(self->fs)) | ||||||
|  | -		PySys_WriteStdout("comment: '%s'\n", mnt_fs_get_comment(self->fs));
 | ||||||
|  | +		_dump_debug_string("comment: ", mnt_fs_get_comment(self->fs), '\'');
 | ||||||
|  |  	return UL_IncRef(self); | ||||||
|  |  } | ||||||
|  |  /* | ||||||
|  | -- 
 | ||||||
|  | 2.17.2 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | From 0afd0613fc738659fb0ff490e4e069366dee4a94 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 10 Dec 2018 16:25:08 +0100 | ||||||
|  | Subject: [PATCH 12/14] libmount: (umount) make mnt_stat_mountpoin() usable for | ||||||
|  |  relative paths | ||||||
|  | 
 | ||||||
|  |  # mount -o loop devicefile /mnt/test | ||||||
|  |  # umount devicefile | ||||||
|  |  umount: devicefile: not mounted. | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1653781 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/2859592ecb7b48d47d2e34d589ea35f76e329416 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  libmount/src/utils.c | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/libmount/src/utils.c b/libmount/src/utils.c
 | ||||||
|  | index fd98d0529..c36187c07 100644
 | ||||||
|  | --- a/libmount/src/utils.c
 | ||||||
|  | +++ b/libmount/src/utils.c
 | ||||||
|  | @@ -121,7 +121,7 @@ static int fstype_cmp(const void *v1, const void *v2)
 | ||||||
|  |  int mnt_stat_mountpoint(const char *target, struct stat *st) | ||||||
|  |  { | ||||||
|  |  #ifdef AT_NO_AUTOMOUNT | ||||||
|  | -	return fstatat(-1, target, st, AT_NO_AUTOMOUNT);
 | ||||||
|  | +	return fstatat(AT_FDCWD, target, st, AT_NO_AUTOMOUNT);
 | ||||||
|  |  #else | ||||||
|  |  	return stat(target, st); | ||||||
|  |  #endif | ||||||
|  | -- 
 | ||||||
|  | 2.17.2 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,65 @@ | |||||||
|  | From 5aea6937edf77a753e0d504bb637214e116aaed2 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: KyleMahlkuch <Kyle.Mahlkuch@ibm.com> | ||||||
|  | Date: Mon, 25 Jun 2018 14:52:01 -0500 | ||||||
|  | Subject: [PATCH 13/14] libfdisk: Fix multipath partition seperators for | ||||||
|  |  user-friendly names | ||||||
|  | 
 | ||||||
|  | The current code assumes "-part" is the only partition sepereator | ||||||
|  | but this is not true for some distros. | ||||||
|  | 
 | ||||||
|  | For example in Ubuntu 18.04 fdisk does not print the correct names for | ||||||
|  | mpatha: | ||||||
|  | 
 | ||||||
|  | ~# ls -l /dev/mapper/mpatha* | ||||||
|  | lrwxrwxrwx 1 root root 7 Feb  1 04:39 /dev/mapper/mpatha -> ../dm-0 | ||||||
|  | lrwxrwxrwx 1 root root 7 Feb  1 04:38 /dev/mapper/mpatha1 -> ../dm-4 | ||||||
|  | lrwxrwxrwx 1 root root 7 Feb  1 04:38 /dev/mapper/mpatha2 -> ../dm-5 | ||||||
|  | lrwxrwxrwx 1 root root 7 Feb  1 04:38 /dev/mapper/mpatha3 -> ../dm-6 | ||||||
|  | 
 | ||||||
|  | ~# fdisk -l /dev/mapper/mpatha | ||||||
|  | Device                   Boot     Start        End   Sectors  Size Id Type | ||||||
|  | /dev/mapper/mpatha-part1           2048  419432447 419430400  200G 83 Linux | ||||||
|  | /dev/mapper/mpatha-part2      419432448  838862847 419430400  200G 83 Linux | ||||||
|  | /dev/mapper/mpatha-part3      838862848 1258291199 419428352  200G 83 Linux | ||||||
|  | 
 | ||||||
|  | Instead of assuming a partition seperator of "-part" this patch uses | ||||||
|  | access to check the file system for a partition seperator of "p" or | ||||||
|  | the absense of a partition seperator. If neither of these work the patch | ||||||
|  | defaults to "-part" like we had before this patch. | ||||||
|  | 
 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/73775189767195f1d9f5b6b6f6a54e51f61c4356 | ||||||
|  | Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=1655650 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  libfdisk/src/utils.c | 15 ++++++++++++++- | ||||||
|  |  1 file changed, 14 insertions(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/libfdisk/src/utils.c b/libfdisk/src/utils.c
 | ||||||
|  | index 5ba9e0466..54e28b2fa 100644
 | ||||||
|  | --- a/libfdisk/src/utils.c
 | ||||||
|  | +++ b/libfdisk/src/utils.c
 | ||||||
|  | @@ -153,7 +153,20 @@ char *fdisk_partname(const char *dev, size_t partno)
 | ||||||
|  |  	if ((strncmp(dev, _PATH_DEV_BYID, sizeof(_PATH_DEV_BYID) - 1) == 0) || | ||||||
|  |  	     strncmp(dev, _PATH_DEV_BYPATH, sizeof(_PATH_DEV_BYPATH) - 1) == 0 || | ||||||
|  |  	     strncmp(dev, "/dev/mapper", sizeof("/dev/mapper") - 1) == 0) { | ||||||
|  | -	       p = "-part";
 | ||||||
|  | +		asprintf(&res, "%.*s%zu", w, dev, partno);
 | ||||||
|  | +		if (access(res, F_OK) == 0){
 | ||||||
|  | +			p = "";
 | ||||||
|  | +		} else {
 | ||||||
|  | +			/* check for partition seperator "p" */
 | ||||||
|  | +			p = "p";
 | ||||||
|  | +			free(res);
 | ||||||
|  | +			asprintf(&res, "%.*s%s%zu", w, dev, p, partno);
 | ||||||
|  | +			if (access(res, F_OK) != 0){
 | ||||||
|  | +				/* otherwise, default to "-path" */
 | ||||||
|  | +				p = "-part";
 | ||||||
|  | +			}
 | ||||||
|  | +		}
 | ||||||
|  | +		free(res);
 | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  |  	if (asprintf(&res, "%.*s%s%zu", w, dev, p, partno) <= 0) | ||||||
|  | -- 
 | ||||||
|  | 2.17.2 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,136 @@ | |||||||
|  | From 64473a830dc93e7fcd246a64bb8389d66f0034b8 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Thu, 29 Nov 2018 13:21:36 +0100 | ||||||
|  | Subject: [PATCH 14/14] blkid: make PART_ENTRY_* tags optional (add | ||||||
|  |  --no-part-details) | ||||||
|  | 
 | ||||||
|  | blkid(8) returns information from partition table also for empty | ||||||
|  | partitions. This is necessary for example for udev, but it could be | ||||||
|  | confusing if you care about on-device content only. | ||||||
|  | 
 | ||||||
|  | Default: | ||||||
|  |  # blkid -p /dev/md0p1; echo $? | ||||||
|  |  /dev/md0p1: PART_ENTRY_SCHEME="dos" PART_ENTRY_UUID="6d8796b1-01" PART_ENTRY_TYPE="0x83" PART_ENTRY_NUMBER="1" PART_ENTRY_OFFSET="2048" PART_ENTRY_SIZE="204800" PART_ENTRY_DISK="9:0" | ||||||
|  |  0 | ||||||
|  | 
 | ||||||
|  | With --no-part-details: | ||||||
|  |  # blkid -p /dev/md0p1 --no-part-details; echo $? | ||||||
|  |  2 | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1653413 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/5e91d5dd716ebc6144bcb0cabb0ec847a678be9e | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  misc-utils/blkid.8 |  6 +++++- | ||||||
|  |  misc-utils/blkid.c | 15 +++++++++++---- | ||||||
|  |  2 files changed, 16 insertions(+), 5 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/misc-utils/blkid.8 b/misc-utils/blkid.8
 | ||||||
|  | index 13b5edb4d..d1cec1dea 100644
 | ||||||
|  | --- a/misc-utils/blkid.8
 | ||||||
|  | +++ b/misc-utils/blkid.8
 | ||||||
|  | @@ -35,6 +35,7 @@ blkid \- locate/print block device attributes
 | ||||||
|  |  .IR list ] | ||||||
|  |  .RB [ \-\-usages | ||||||
|  |  .IR list ] | ||||||
|  | +.RB [ \-\-no\-part\-details ]
 | ||||||
|  |  .IR device " ..." | ||||||
|  |   | ||||||
|  |  .IP \fBblkid\fR | ||||||
|  | @@ -114,6 +115,9 @@ Don't encode non-printing characters.  The non-printing characters are encoded
 | ||||||
|  |  by ^ and M- notation by default.  Note that the \fB\-\-output udev\fR output format uses | ||||||
|  |  a different encoding which cannot be disabled. | ||||||
|  |  .TP | ||||||
|  | +\fB\-D\fR, \fB\-\-no\-part\-details\fR 
 | ||||||
|  | +Don't print information (PART_ENTRY_* tags) from partition table in low-level probing mode.
 | ||||||
|  | +.TP
 | ||||||
|  |  \fB\-g\fR, \fB\-\-garbage\-collect\fR | ||||||
|  |  Perform a garbage collection pass on the blkid cache to remove | ||||||
|  |  devices which no longer exist. | ||||||
|  | @@ -224,7 +228,7 @@ Note that low-level probing also returns information about partition table type
 | ||||||
|  |  (PTTYPE tag) and partitions (PART_ENTRY_* tags). The tag names produced by | ||||||
|  |  low-level probing are based on names used internally by libblkid and it may be | ||||||
|  |  different than when executed without \fB\-\-probe\fR (for example PART_ENTRY_UUID= vs | ||||||
|  | -PARTUUID=).
 | ||||||
|  | +PARTUUID=). See also \fB\-\-no\-part\-details\fR.
 | ||||||
|  |  .TP | ||||||
|  |  \fB\-s\fR, \fB\-\-match\-tag\fR \fItag\fR | ||||||
|  |  For each (specified) device, show only the tags that match | ||||||
|  | diff --git a/misc-utils/blkid.c b/misc-utils/blkid.c
 | ||||||
|  | index 4cd85317f..61a6994c2 100644
 | ||||||
|  | --- a/misc-utils/blkid.c
 | ||||||
|  | +++ b/misc-utils/blkid.c
 | ||||||
|  | @@ -58,6 +58,7 @@ struct blkid_control {
 | ||||||
|  |  		lowprobe:1, | ||||||
|  |  		lowprobe_superblocks:1, | ||||||
|  |  		lowprobe_topology:1, | ||||||
|  | +		no_part_details:1,
 | ||||||
|  |  		raw_chars:1; | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  | @@ -101,6 +102,7 @@ static void __attribute__((__noreturn__)) usage(void)
 | ||||||
|  |  	fputs(_(	" -O, --offset <offset>      probe at the given offset\n"), out); | ||||||
|  |  	fputs(_(	" -u, --usages <list>        filter by \"usage\" (e.g. -u filesystem,raid)\n"), out); | ||||||
|  |  	fputs(_(	" -n, --match-types <list>   filter by filesystem type (e.g. -n vfat,ext3)\n"), out); | ||||||
|  | +	fputs(_(        " -D, --no-part-details      don't print info from partition table\n"), out);
 | ||||||
|  |   | ||||||
|  |  	fputs(USAGE_SEPARATOR, out); | ||||||
|  |  	printf(USAGE_HELP_OPTIONS(28)); | ||||||
|  | @@ -444,7 +446,7 @@ done:
 | ||||||
|  |  	return rc; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | -static int lowprobe_superblocks(blkid_probe pr)
 | ||||||
|  | +static int lowprobe_superblocks(blkid_probe pr, struct blkid_control *ctl)
 | ||||||
|  |  { | ||||||
|  |  	struct stat st; | ||||||
|  |  	int rc, fd = blkid_probe_get_fd(pr); | ||||||
|  | @@ -470,7 +472,8 @@ static int lowprobe_superblocks(blkid_probe pr)
 | ||||||
|  |  			return 0;	/* partition table detected */ | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  | -	blkid_probe_set_partitions_flags(pr, BLKID_PARTS_ENTRY_DETAILS);
 | ||||||
|  | +	if (!ctl->no_part_details)
 | ||||||
|  | +		blkid_probe_set_partitions_flags(pr, BLKID_PARTS_ENTRY_DETAILS);
 | ||||||
|  |  	blkid_probe_enable_superblocks(pr, 1); | ||||||
|  |   | ||||||
|  |  	return blkid_do_safeprobe(pr); | ||||||
|  | @@ -509,7 +512,7 @@ static int lowprobe_device(blkid_probe pr, const char *devname,
 | ||||||
|  |  	if (ctl->lowprobe_topology) | ||||||
|  |  		rc = lowprobe_topology(pr); | ||||||
|  |  	if (rc >= 0 && ctl->lowprobe_superblocks) | ||||||
|  | -		rc = lowprobe_superblocks(pr);
 | ||||||
|  | +		rc = lowprobe_superblocks(pr, ctl);
 | ||||||
|  |  	if (rc < 0) | ||||||
|  |  		goto done; | ||||||
|  |   | ||||||
|  | @@ -661,6 +664,7 @@ int main(int argc, char **argv)
 | ||||||
|  |  	static const struct option longopts[] = { | ||||||
|  |  		{ "cache-file",	      required_argument, NULL, 'c' }, | ||||||
|  |  		{ "no-encoding",      no_argument,	 NULL, 'd' }, | ||||||
|  | +		{ "no-part-details",  no_argument,       NULL, 'D' },
 | ||||||
|  |  		{ "garbage-collect",  no_argument,	 NULL, 'g' }, | ||||||
|  |  		{ "output",	      required_argument, NULL, 'o' }, | ||||||
|  |  		{ "list-filesystems", no_argument,	 NULL, 'k' }, | ||||||
|  | @@ -694,7 +698,7 @@ int main(int argc, char **argv)
 | ||||||
|  |  	strutils_set_exitcode(BLKID_EXIT_OTHER); | ||||||
|  |   | ||||||
|  |  	while ((c = getopt_long (argc, argv, | ||||||
|  | -			    "c:dghilL:n:ko:O:ps:S:t:u:U:w:Vv", longopts, NULL)) != -1) {
 | ||||||
|  | +			    "c:DdghilL:n:ko:O:ps:S:t:u:U:w:Vv", longopts, NULL)) != -1) {
 | ||||||
|  |   | ||||||
|  |  		err_exclusive_options(c, NULL, excl, excl_st); | ||||||
|  |   | ||||||
|  | @@ -705,6 +709,9 @@ int main(int argc, char **argv)
 | ||||||
|  |  		case 'd': | ||||||
|  |  			ctl.raw_chars = 1; | ||||||
|  |  			break; | ||||||
|  | +		case 'D':
 | ||||||
|  | +			ctl.no_part_details = 1;
 | ||||||
|  | +			break;
 | ||||||
|  |  		case 'L': | ||||||
|  |  			ctl.eval = 1; | ||||||
|  |  			search_value = xstrdup(optarg); | ||||||
|  | -- 
 | ||||||
|  | 2.17.2 | ||||||
|  | 
 | ||||||
							
								
								
									
										132
									
								
								SOURCES/0015-tests-add-missing-ts_check_test_command-calls.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								SOURCES/0015-tests-add-missing-ts_check_test_command-calls.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,132 @@ | |||||||
|  | From 9bccbbf06a91f4e7bf5c0cddadf18265dc2e9e4b Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 4 Mar 2019 16:42:30 +0100 | ||||||
|  | Subject: [PATCH 15/19] tests: add missing ts_check_test_command calls | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1681062 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/19e00ec9e9e9c36305cf2dd163d0333e2d72c671 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/ts/fsck/ismounted         | 2 ++ | ||||||
|  |  tests/ts/hexdump/format-strings | 1 + | ||||||
|  |  tests/ts/hexdump/highlighting   | 1 + | ||||||
|  |  tests/ts/ipcs/limits            | 1 + | ||||||
|  |  tests/ts/ipcs/limits2           | 1 + | ||||||
|  |  tests/ts/ipcs/mk-rm-msg         | 1 + | ||||||
|  |  tests/ts/ipcs/mk-rm-sem         | 1 + | ||||||
|  |  tests/ts/ipcs/mk-rm-shm         | 1 + | ||||||
|  |  tests/ts/misc/swaplabel         | 1 + | ||||||
|  |  9 files changed, 10 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/ts/fsck/ismounted b/tests/ts/fsck/ismounted
 | ||||||
|  | index 2a55907a7..7d1fe6273 100755
 | ||||||
|  | --- a/tests/ts/fsck/ismounted
 | ||||||
|  | +++ b/tests/ts/fsck/ismounted
 | ||||||
|  | @@ -22,6 +22,8 @@ ts_init "$*"
 | ||||||
|  |   | ||||||
|  |  ts_check_test_command "$TS_CMD_FDISK" | ||||||
|  |  ts_check_test_command "$TS_CMD_MOUNT" | ||||||
|  | +ts_check_test_command "$TS_CMD_UMOUNT"
 | ||||||
|  | +ts_check_test_command "$TS_HELPER_ISMOUNTED"
 | ||||||
|  |   | ||||||
|  |  ts_skip_nonroot | ||||||
|  |  ts_check_losetup | ||||||
|  | diff --git a/tests/ts/hexdump/format-strings b/tests/ts/hexdump/format-strings
 | ||||||
|  | index e6f9229a5..f2dc6a89b 100755
 | ||||||
|  | --- a/tests/ts/hexdump/format-strings
 | ||||||
|  | +++ b/tests/ts/hexdump/format-strings
 | ||||||
|  | @@ -23,6 +23,7 @@ FILES="$TS_TOPDIR/ts/hexdump/files"
 | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  |  ts_check_test_command "$TS_CMD_HEXDUMP" | ||||||
|  | +ts_check_test_command "$TS_HELPER_SYSINFO"
 | ||||||
|  |   | ||||||
|  |  # on big endian systems some of the subtests have different expected output | ||||||
|  |  BYTE_ORDER=$($TS_HELPER_SYSINFO byte-order) | ||||||
|  | diff --git a/tests/ts/hexdump/highlighting b/tests/ts/hexdump/highlighting
 | ||||||
|  | index cf78f7b96..e57757978 100755
 | ||||||
|  | --- a/tests/ts/hexdump/highlighting
 | ||||||
|  | +++ b/tests/ts/hexdump/highlighting
 | ||||||
|  | @@ -25,6 +25,7 @@ ADDRFMT='-e "%07.7_Ax\n"'
 | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  |  ts_check_test_command "$TS_CMD_HEXDUMP" | ||||||
|  | +ts_check_test_command "$TS_HELPER_SYSINFO"
 | ||||||
|  |   | ||||||
|  |  # on big endian systems some of the subtests have different expected output | ||||||
|  |  BYTE_ORDER=$($TS_HELPER_SYSINFO byte-order) | ||||||
|  | diff --git a/tests/ts/ipcs/limits b/tests/ts/ipcs/limits
 | ||||||
|  | index 7b64b3c17..671f23c77 100755
 | ||||||
|  | --- a/tests/ts/ipcs/limits
 | ||||||
|  | +++ b/tests/ts/ipcs/limits
 | ||||||
|  | @@ -23,6 +23,7 @@ TS_DESC="limits overflow"
 | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCS" | ||||||
|  | +ts_check_test_command "$TS_HELPER_SYSINFO"
 | ||||||
|  |   | ||||||
|  |  ts_skip_nonroot | ||||||
|  |  ts_check_prog "bc" | ||||||
|  | diff --git a/tests/ts/ipcs/limits2 b/tests/ts/ipcs/limits2
 | ||||||
|  | index d23c41a35..77ad70f9b 100755
 | ||||||
|  | --- a/tests/ts/ipcs/limits2
 | ||||||
|  | +++ b/tests/ts/ipcs/limits2
 | ||||||
|  | @@ -23,6 +23,7 @@ TS_DESC="basic limits"
 | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCS" | ||||||
|  | +ts_check_test_command "$TS_HELPER_SYSINFO"
 | ||||||
|  |  ts_check_prog "bc" | ||||||
|  |   | ||||||
|  |  . $TS_SELF/functions.sh | ||||||
|  | diff --git a/tests/ts/ipcs/mk-rm-msg b/tests/ts/ipcs/mk-rm-msg
 | ||||||
|  | index 25460e25d..de3682e87 100755
 | ||||||
|  | --- a/tests/ts/ipcs/mk-rm-msg
 | ||||||
|  | +++ b/tests/ts/ipcs/mk-rm-msg
 | ||||||
|  | @@ -21,6 +21,7 @@ ts_init "$*"
 | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCS" | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCMK" | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCRM" | ||||||
|  | +ts_check_test_command "$TS_HELPER_SYSINFO"
 | ||||||
|  |   | ||||||
|  |  . $TS_SELF/functions.sh | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/ipcs/mk-rm-sem b/tests/ts/ipcs/mk-rm-sem
 | ||||||
|  | index 61e0cfdef..d7b505f7c 100755
 | ||||||
|  | --- a/tests/ts/ipcs/mk-rm-sem
 | ||||||
|  | +++ b/tests/ts/ipcs/mk-rm-sem
 | ||||||
|  | @@ -21,6 +21,7 @@ ts_init "$*"
 | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCS" | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCMK" | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCRM" | ||||||
|  | +ts_check_test_command "$TS_HELPER_SYSINFO"
 | ||||||
|  |   | ||||||
|  |  . $TS_SELF/functions.sh | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/ipcs/mk-rm-shm b/tests/ts/ipcs/mk-rm-shm
 | ||||||
|  | index 838fb3f21..c21547b82 100755
 | ||||||
|  | --- a/tests/ts/ipcs/mk-rm-shm
 | ||||||
|  | +++ b/tests/ts/ipcs/mk-rm-shm
 | ||||||
|  | @@ -21,6 +21,7 @@ ts_init "$*"
 | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCS" | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCMK" | ||||||
|  |  ts_check_test_command "$TS_CMD_IPCRM" | ||||||
|  | +ts_check_test_command "$TS_HELPER_SYSINFO"
 | ||||||
|  |   | ||||||
|  |  . $TS_SELF/functions.sh | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/misc/swaplabel b/tests/ts/misc/swaplabel
 | ||||||
|  | index 646304508..22858b0ac 100755
 | ||||||
|  | --- a/tests/ts/misc/swaplabel
 | ||||||
|  | +++ b/tests/ts/misc/swaplabel
 | ||||||
|  | @@ -20,6 +20,7 @@ ts_init "$*"
 | ||||||
|  |   | ||||||
|  |  ts_check_test_command "$TS_CMD_MKSWAP" | ||||||
|  |  ts_check_test_command "$TS_CMD_SWAPLABEL" | ||||||
|  | +ts_check_test_command "$TS_HELPER_SYSINFO"
 | ||||||
|  |   | ||||||
|  |  # fallocate does not work on most file systems | ||||||
|  |  function fallocate_or_skip() | ||||||
|  | -- 
 | ||||||
|  | 2.20.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										357
									
								
								SOURCES/0016-tests-add-use-system-commands.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										357
									
								
								SOURCES/0016-tests-add-use-system-commands.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,357 @@ | |||||||
|  | From 748fbfa9b1bb3b64b3fbc6b1e51d260d8376c791 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 4 Mar 2019 17:10:04 +0100 | ||||||
|  | Subject: [PATCH 16/19] tests: add --use-system-commands | ||||||
|  | 
 | ||||||
|  | This change allows to use commands from $PATH rather than from | ||||||
|  | $top_builddir. There two basic use cases: | ||||||
|  | 
 | ||||||
|  | * check differences between installed and git version | ||||||
|  |   run.sh --use-system-command --show-diff | ||||||
|  | 
 | ||||||
|  | * check system binaries by upstream tests (for example tests from | ||||||
|  |   src.rpm package) | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1681062 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/43b4a4d3c720a4e65fe9de884cd73e0b1b94fbe | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/commands.sh  | 194 ++++++++++++++++++++++----------------------- | ||||||
|  |  tests/functions.sh |  34 ++++++-- | ||||||
|  |  tests/run.sh       |  33 +++++--- | ||||||
|  |  3 files changed, 146 insertions(+), 115 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/commands.sh b/tests/commands.sh
 | ||||||
|  | index 1be2d25b4..93100caf6 100644
 | ||||||
|  | --- a/tests/commands.sh
 | ||||||
|  | +++ b/tests/commands.sh
 | ||||||
|  | @@ -2,105 +2,105 @@
 | ||||||
|  |  TS_TESTUSER=${TS_TESTUSER:-"nobody"} | ||||||
|  |   | ||||||
|  |  # helpers | ||||||
|  | -TS_HELPER_BYTESWAP="$top_builddir/test_byteswap"
 | ||||||
|  | -TS_HELPER_CPUSET="$top_builddir/test_cpuset"
 | ||||||
|  | -TS_HELPER_DMESG="$top_builddir/test_dmesg"
 | ||||||
|  | -TS_HELPER_ISLOCAL="$top_builddir/test_islocal"
 | ||||||
|  | -TS_HELPER_ISMOUNTED="$top_builddir/test_ismounted"
 | ||||||
|  | -TS_HELPER_LIBFDISK_GPT="$top_builddir/test_fdisk_gpt"
 | ||||||
|  | -TS_HELPER_LIBFDISK_MKPART="$top_builddir/sample-fdisk-mkpart"
 | ||||||
|  | -TS_HELPER_LIBMOUNT_CONTEXT="$top_builddir/test_mount_context"
 | ||||||
|  | -TS_HELPER_LIBFDISK_MKPART_FULLSPEC="$top_builddir/sample-fdisk-mkpart-fullspec"
 | ||||||
|  | -TS_HELPER_LIBMOUNT_LOCK="$top_builddir/test_mount_lock"
 | ||||||
|  | -TS_HELPER_LIBMOUNT_OPTSTR="$top_builddir/test_mount_optstr"
 | ||||||
|  | -TS_HELPER_LIBMOUNT_TABDIFF="$top_builddir/test_mount_tab_diff"
 | ||||||
|  | -TS_HELPER_LIBMOUNT_TAB="$top_builddir/test_mount_tab"
 | ||||||
|  | -TS_HELPER_LIBMOUNT_UPDATE="$top_builddir/test_mount_tab_update"
 | ||||||
|  | -TS_HELPER_LIBMOUNT_UTILS="$top_builddir/test_mount_utils"
 | ||||||
|  | -TS_HELPER_LIBMOUNT_DEBUG="$top_builddir/test_mount_debug"
 | ||||||
|  | -TS_HELPER_LIBSMARTCOLS_FROMFILE="$top_builddir/sample-scols-fromfile"
 | ||||||
|  | -TS_HELPER_LIBSMARTCOLS_TITLE="$top_builddir/sample-scols-title"
 | ||||||
|  | +TS_HELPER_BYTESWAP="${ts_helpersdir}test_byteswap"
 | ||||||
|  | +TS_HELPER_CPUSET="${ts_helpersdir}test_cpuset"
 | ||||||
|  | +TS_HELPER_DMESG="${ts_helpersdir}test_dmesg"
 | ||||||
|  | +TS_HELPER_ISLOCAL="${ts_helpersdir}test_islocal"
 | ||||||
|  | +TS_HELPER_ISMOUNTED="${ts_helpersdir}test_ismounted"
 | ||||||
|  | +TS_HELPER_LIBFDISK_GPT="${ts_helpersdir}test_fdisk_gpt"
 | ||||||
|  | +TS_HELPER_LIBFDISK_MKPART="${ts_helpersdir}sample-fdisk-mkpart"
 | ||||||
|  | +TS_HELPER_LIBMOUNT_CONTEXT="${ts_helpersdir}test_mount_context"
 | ||||||
|  | +TS_HELPER_LIBFDISK_MKPART_FULLSPEC="${ts_helpersdir}sample-fdisk-mkpart-fullspec"
 | ||||||
|  | +TS_HELPER_LIBMOUNT_LOCK="${ts_helpersdir}test_mount_lock"
 | ||||||
|  | +TS_HELPER_LIBMOUNT_OPTSTR="${ts_helpersdir}test_mount_optstr"
 | ||||||
|  | +TS_HELPER_LIBMOUNT_TABDIFF="${ts_helpersdir}test_mount_tab_diff"
 | ||||||
|  | +TS_HELPER_LIBMOUNT_TAB="${ts_helpersdir}test_mount_tab"
 | ||||||
|  | +TS_HELPER_LIBMOUNT_UPDATE="${ts_helpersdir}test_mount_tab_update"
 | ||||||
|  | +TS_HELPER_LIBMOUNT_UTILS="${ts_helpersdir}test_mount_utils"
 | ||||||
|  | +TS_HELPER_LIBMOUNT_DEBUG="${ts_helpersdir}test_mount_debug"
 | ||||||
|  | +TS_HELPER_LIBSMARTCOLS_FROMFILE="${ts_helpersdir}sample-scols-fromfile"
 | ||||||
|  | +TS_HELPER_LIBSMARTCOLS_TITLE="${ts_helpersdir}sample-scols-title"
 | ||||||
|  |  TS_HELPER_PYLIBMOUNT_CONTEXT="$top_srcdir/libmount/python/test_mount_context.py" | ||||||
|  |  TS_HELPER_PYLIBMOUNT_TAB="$top_srcdir/libmount/python/test_mount_tab.py" | ||||||
|  |  TS_HELPER_PYLIBMOUNT_UPDATE="$top_srcdir/libmount/python/test_mount_tab_update.py" | ||||||
|  | -TS_HELPER_LOGGER="$top_builddir/test_logger"
 | ||||||
|  | -TS_HELPER_LOGINDEFS="$top_builddir/test_logindefs"
 | ||||||
|  | -TS_HELPER_MD5="$top_builddir/test_md5"
 | ||||||
|  | -TS_HELPER_SHA1="$top_builddir/test_sha1"
 | ||||||
|  | -TS_HELPER_MKFS_MINIX="$top_builddir/test_mkfs_minix"
 | ||||||
|  | -TS_HELPER_MORE=${TS_HELPER_MORE-"$top_builddir/test_more"}
 | ||||||
|  | -TS_HELPER_PARTITIONS="$top_builddir/sample-partitions"
 | ||||||
|  | -TS_HELPER_PATHS="$top_builddir/test_pathnames"
 | ||||||
|  | -TS_HELPER_SCRIPT="$top_builddir/test_script"
 | ||||||
|  | -TS_HELPER_SIGRECEIVE="$top_builddir/test_sigreceive"
 | ||||||
|  | -TS_HELPER_STRUTILS="$top_builddir/test_strutils"
 | ||||||
|  | -TS_HELPER_SYSINFO="$top_builddir/test_sysinfo"
 | ||||||
|  | -TS_HELPER_TIOCSTI="$top_builddir/test_tiocsti"
 | ||||||
|  | -TS_HELPER_UUID_PARSER="$top_builddir/test_uuid_parser"
 | ||||||
|  | -TS_HELPER_UUID_NAMESPACE="$top_builddir/test_uuid_namespace"
 | ||||||
|  | -TS_HELPER_MBSENCODE="$top_builddir/test_mbsencode"
 | ||||||
|  | -TS_HELPER_CAL="$top_builddir/test_cal"
 | ||||||
|  | +TS_HELPER_LOGGER="${ts_helpersdir}test_logger"
 | ||||||
|  | +TS_HELPER_LOGINDEFS="${ts_helpersdir}test_logindefs"
 | ||||||
|  | +TS_HELPER_MD5="${ts_helpersdir}test_md5"
 | ||||||
|  | +TS_HELPER_SHA1="${ts_helpersdir}test_sha1"
 | ||||||
|  | +TS_HELPER_MKFS_MINIX="${ts_helpersdir}test_mkfs_minix"
 | ||||||
|  | +TS_HELPER_MORE=${TS_HELPER_MORE-"${ts_helpersdir}test_more"}
 | ||||||
|  | +TS_HELPER_PARTITIONS="${ts_helpersdir}sample-partitions"
 | ||||||
|  | +TS_HELPER_PATHS="${ts_helpersdir}test_pathnames"
 | ||||||
|  | +TS_HELPER_SCRIPT="${ts_helpersdir}test_script"
 | ||||||
|  | +TS_HELPER_SIGRECEIVE="${ts_helpersdir}test_sigreceive"
 | ||||||
|  | +TS_HELPER_STRUTILS="${ts_helpersdir}test_strutils"
 | ||||||
|  | +TS_HELPER_SYSINFO="${ts_helpersdir}test_sysinfo"
 | ||||||
|  | +TS_HELPER_TIOCSTI="${ts_helpersdir}test_tiocsti"
 | ||||||
|  | +TS_HELPER_UUID_PARSER="${ts_helpersdir}test_uuid_parser"
 | ||||||
|  | +TS_HELPER_UUID_NAMESPACE="${ts_helpersdir}test_uuid_namespace"
 | ||||||
|  | +TS_HELPER_MBSENCODE="${ts_helpersdir}test_mbsencode"
 | ||||||
|  | +TS_HELPER_CAL="${ts_helpersdir}test_cal"
 | ||||||
|  |   | ||||||
|  |  # paths to commands | ||||||
|  | -TS_CMD_ADDPART=${TS_CMD_ADDPART:-"$top_builddir/addpart"}
 | ||||||
|  | -TS_CMD_DELPART=${TS_CMD_DELPART:-"$top_builddir/delpart"}
 | ||||||
|  | -TS_CMD_BLKDISCARD=${TS_CMD_BLKID-"$top_builddir/blkdiscard"}
 | ||||||
|  | -TS_CMD_BLKID=${TS_CMD_BLKID-"$top_builddir/blkid"}
 | ||||||
|  | -TS_CMD_CAL=${TS_CMD_CAL-"$top_builddir/cal"}
 | ||||||
|  | -TS_CMD_COLCRT=${TS_CMD_COLCRT:-"$top_builddir/colcrt"}
 | ||||||
|  | -TS_CMD_COLRM=${TS_CMD_COLRM:-"$top_builddir/colrm"}
 | ||||||
|  | -TS_CMD_COL=${TS_CMD_COL:-"$top_builddir/col"}
 | ||||||
|  | -TS_CMD_COLUMN=${TS_CMD_COLUMN:-"$top_builddir/column"}
 | ||||||
|  | -TS_CMD_EJECT=${TS_CMD_EJECT-"$top_builddir/eject"}
 | ||||||
|  | -TS_CMD_FALLOCATE=${TS_CMD_FALLOCATE-"$top_builddir/fallocate"}
 | ||||||
|  | -TS_CMD_FDISK=${TS_CMD_FDISK-"$top_builddir/fdisk"}
 | ||||||
|  | -TS_CMD_FLOCK=${TS_CMD_FLOCK-"$top_builddir/flock"}
 | ||||||
|  | -TS_CMD_SFDISK=${TS_CMD_SFDISK-"$top_builddir/sfdisk"}
 | ||||||
|  | -TS_CMD_FINCORE=${TS_CMD_FINCORE-"$top_builddir/fincore"}
 | ||||||
|  | -TS_CMD_FINDMNT=${TS_CMD_FINDMNT-"$top_builddir/findmnt"}
 | ||||||
|  | -TS_CMD_FSCKCRAMFS=${TS_CMD_FSCKCRAMFS:-"$top_builddir/fsck.cramfs"}
 | ||||||
|  | -TS_CMD_FSCKMINIX=${TS_CMD_FSCKMINIX:-"$top_builddir/fsck.minix"}
 | ||||||
|  | -TS_CMD_GETOPT=${TS_CMD_GETOPT-"$top_builddir/getopt"}
 | ||||||
|  | -TS_CMD_HEXDUMP=${TS_CMD_HEXDUMP-"$top_builddir/hexdump"}
 | ||||||
|  | -TS_CMD_HWCLOCK=${TS_CMD_HWCLOCK-"$top_builddir/hwclock"}
 | ||||||
|  | -TS_CMD_IONICE=${TS_CMD_IONICE-"$top_builddir/ionice"}
 | ||||||
|  | -TS_CMD_IPCMK=${TS_CMD_IPCMK-"$top_builddir/ipcmk"}
 | ||||||
|  | -TS_CMD_IPCRM=${TS_CMD_IPCRM-"$top_builddir/ipcrm"}
 | ||||||
|  | -TS_CMD_IPCS=${TS_CMD_IPCS:-"$top_builddir/ipcs"}
 | ||||||
|  | -TS_CMD_ISOSIZE=${TS_CMD_ISOSIZE-"$top_builddir/isosize"}
 | ||||||
|  | -TS_CMD_KILL=${TS_CMD_KILL-"$top_builddir/kill"}
 | ||||||
|  | -TS_CMD_LAST=${TS_CMD_LAST-"$top_builddir/last"}
 | ||||||
|  | -TS_CMD_LINE=${TS_CMD_LINE-"$top_builddir/line"}
 | ||||||
|  | -TS_CMD_LOOK=${TS_CMD_LOOK-"$top_builddir/look"}
 | ||||||
|  | -TS_CMD_LOSETUP=${TS_CMD_LOSETUP:-"$top_builddir/losetup"}
 | ||||||
|  | -TS_CMD_LSBLK=${TS_CMD_LSBLK-"$top_builddir/lsblk"}
 | ||||||
|  | -TS_CMD_LSCPU=${TS_CMD_LSCPU-"$top_builddir/lscpu"}
 | ||||||
|  | -TS_CMD_LSMEM=${TS_CMD_LSMEM-"$top_builddir/lsmem"}
 | ||||||
|  | -TS_CMD_LSNS=${TS_CMD_LSNS-"$top_builddir/lsns"}
 | ||||||
|  | -TS_CMD_MCOOKIE=${TS_CMD_MCOOKIE-"$top_builddir/mcookie"}
 | ||||||
|  | -TS_CMD_MKCRAMFS=${TS_CMD_MKCRAMFS:-"$top_builddir/mkfs.cramfs"}
 | ||||||
|  | -TS_CMD_MKMINIX=${TS_CMD_MKMINIX:-"$top_builddir/mkfs.minix"}
 | ||||||
|  | -TS_CMD_MKSWAP=${TS_CMD_MKSWAP:-"$top_builddir/mkswap"}
 | ||||||
|  | -TS_CMD_MOUNT=${TS_CMD_MOUNT:-"$top_builddir/mount"}
 | ||||||
|  | -TS_CMD_MOUNTPOINT=${TS_CMD_MOUNTPOINT:-"$top_builddir/mountpoint"}
 | ||||||
|  | -TS_CMD_NAMEI=${TS_CMD_NAMEI-"$top_builddir/namei"}
 | ||||||
|  | -TS_CMD_PARTX=${TS_CMD_PARTX-"$top_builddir/partx"}
 | ||||||
|  | -TS_CMD_RENAME=${TS_CMD_RENAME-"$top_builddir/rename"}
 | ||||||
|  | -TS_CMD_RUNUSER=${TS_CMD_RUNUSER-"$top_builddir/runuser"}
 | ||||||
|  | -TS_CMD_REV=${TS_CMD_REV:-"$top_builddir/rev"}
 | ||||||
|  | -TS_CMD_SCRIPT=${TS_CMD_SCRIPT-"$top_builddir/script"}
 | ||||||
|  | -TS_CMD_SCRIPTREPLAY=${TS_CMD_SCRIPTREPLAY-"$top_builddir/scriptreplay"}
 | ||||||
|  | -TS_CMD_SETARCH=${TS_CMD_SETARCH-"$top_builddir/setarch"}
 | ||||||
|  | -TS_CMD_SETSID=${TS_CMD_SETSID-"$top_builddir/setsid"}
 | ||||||
|  | -TS_CMD_SWAPLABEL=${TS_CMD_SWAPLABEL:-"$top_builddir/swaplabel"}
 | ||||||
|  | -TS_CMD_SWAPOFF=${TS_CMD_SWAPOFF:-"$top_builddir/swapoff"}
 | ||||||
|  | -TS_CMD_SWAPON=${TS_CMD_SWAPON:-"$top_builddir/swapon"}
 | ||||||
|  | -TS_CMD_UL=${TS_CMD_UL-"$top_builddir/ul"}
 | ||||||
|  | -TS_CMD_UMOUNT=${TS_CMD_UMOUNT:-"$top_builddir/umount"}
 | ||||||
|  | -TS_CMD_UTMPDUMP=${TS_CMD_UTMPDUMP-"$top_builddir/utmpdump"}
 | ||||||
|  | -TS_CMD_UUIDD=${TS_CMD_UUIDD-"$top_builddir/uuidd"}
 | ||||||
|  | -TS_CMD_UUIDGEN=${TS_CMD_UUIDGEN-"$top_builddir/uuidgen"}
 | ||||||
|  | -TS_CMD_UUIDPARSE=${TS_CMD_UUIDPARSE-"$top_builddir/uuidparse"}
 | ||||||
|  | -TS_CMD_WHEREIS=${TS_CMD_WHEREIS-"$top_builddir/whereis"}
 | ||||||
|  | -TS_CMD_WIPEFS=${TS_CMD_WIPEFS-"$top_builddir/wipefs"}
 | ||||||
|  | -TS_CMD_CHRT=${TS_CMD_CHRT-"$top_builddir/chrt"}
 | ||||||
|  | +TS_CMD_ADDPART=${TS_CMD_ADDPART:-"${ts_commandsdir}addpart"}
 | ||||||
|  | +TS_CMD_DELPART=${TS_CMD_DELPART:-"${ts_commandsdir}delpart"}
 | ||||||
|  | +TS_CMD_BLKDISCARD=${TS_CMD_BLKID-"${ts_commandsdir}blkdiscard"}
 | ||||||
|  | +TS_CMD_BLKID=${TS_CMD_BLKID-"${ts_commandsdir}blkid"}
 | ||||||
|  | +TS_CMD_CAL=${TS_CMD_CAL-"${ts_commandsdir}cal"}
 | ||||||
|  | +TS_CMD_COLCRT=${TS_CMD_COLCRT:-"${ts_commandsdir}colcrt"}
 | ||||||
|  | +TS_CMD_COLRM=${TS_CMD_COLRM:-"${ts_commandsdir}colrm"}
 | ||||||
|  | +TS_CMD_COL=${TS_CMD_COL:-"${ts_commandsdir}col"}
 | ||||||
|  | +TS_CMD_COLUMN=${TS_CMD_COLUMN:-"${ts_commandsdir}column"}
 | ||||||
|  | +TS_CMD_EJECT=${TS_CMD_EJECT-"${ts_commandsdir}eject"}
 | ||||||
|  | +TS_CMD_FALLOCATE=${TS_CMD_FALLOCATE-"${ts_commandsdir}fallocate"}
 | ||||||
|  | +TS_CMD_FDISK=${TS_CMD_FDISK-"${ts_commandsdir}fdisk"}
 | ||||||
|  | +TS_CMD_FLOCK=${TS_CMD_FLOCK-"${ts_commandsdir}flock"}
 | ||||||
|  | +TS_CMD_SFDISK=${TS_CMD_SFDISK-"${ts_commandsdir}sfdisk"}
 | ||||||
|  | +TS_CMD_FINCORE=${TS_CMD_FINCORE-"${ts_commandsdir}fincore"}
 | ||||||
|  | +TS_CMD_FINDMNT=${TS_CMD_FINDMNT-"${ts_commandsdir}findmnt"}
 | ||||||
|  | +TS_CMD_FSCKCRAMFS=${TS_CMD_FSCKCRAMFS:-"${ts_commandsdir}fsck.cramfs"}
 | ||||||
|  | +TS_CMD_FSCKMINIX=${TS_CMD_FSCKMINIX:-"${ts_commandsdir}fsck.minix"}
 | ||||||
|  | +TS_CMD_GETOPT=${TS_CMD_GETOPT-"${ts_commandsdir}getopt"}
 | ||||||
|  | +TS_CMD_HEXDUMP=${TS_CMD_HEXDUMP-"${ts_commandsdir}hexdump"}
 | ||||||
|  | +TS_CMD_HWCLOCK=${TS_CMD_HWCLOCK-"${ts_commandsdir}hwclock"}
 | ||||||
|  | +TS_CMD_IONICE=${TS_CMD_IONICE-"${ts_commandsdir}ionice"}
 | ||||||
|  | +TS_CMD_IPCMK=${TS_CMD_IPCMK-"${ts_commandsdir}ipcmk"}
 | ||||||
|  | +TS_CMD_IPCRM=${TS_CMD_IPCRM-"${ts_commandsdir}ipcrm"}
 | ||||||
|  | +TS_CMD_IPCS=${TS_CMD_IPCS:-"${ts_commandsdir}ipcs"}
 | ||||||
|  | +TS_CMD_ISOSIZE=${TS_CMD_ISOSIZE-"${ts_commandsdir}isosize"}
 | ||||||
|  | +TS_CMD_KILL=${TS_CMD_KILL-"${ts_commandsdir}kill"}
 | ||||||
|  | +TS_CMD_LAST=${TS_CMD_LAST-"${ts_commandsdir}last"}
 | ||||||
|  | +TS_CMD_LINE=${TS_CMD_LINE-"${ts_commandsdir}line"}
 | ||||||
|  | +TS_CMD_LOOK=${TS_CMD_LOOK-"${ts_commandsdir}look"}
 | ||||||
|  | +TS_CMD_LOSETUP=${TS_CMD_LOSETUP:-"${ts_commandsdir}losetup"}
 | ||||||
|  | +TS_CMD_LSBLK=${TS_CMD_LSBLK-"${ts_commandsdir}lsblk"}
 | ||||||
|  | +TS_CMD_LSCPU=${TS_CMD_LSCPU-"${ts_commandsdir}lscpu"}
 | ||||||
|  | +TS_CMD_LSMEM=${TS_CMD_LSMEM-"${ts_commandsdir}lsmem"}
 | ||||||
|  | +TS_CMD_LSNS=${TS_CMD_LSNS-"${ts_commandsdir}lsns"}
 | ||||||
|  | +TS_CMD_MCOOKIE=${TS_CMD_MCOOKIE-"${ts_commandsdir}mcookie"}
 | ||||||
|  | +TS_CMD_MKCRAMFS=${TS_CMD_MKCRAMFS:-"${ts_commandsdir}mkfs.cramfs"}
 | ||||||
|  | +TS_CMD_MKMINIX=${TS_CMD_MKMINIX:-"${ts_commandsdir}mkfs.minix"}
 | ||||||
|  | +TS_CMD_MKSWAP=${TS_CMD_MKSWAP:-"${ts_commandsdir}mkswap"}
 | ||||||
|  | +TS_CMD_MOUNT=${TS_CMD_MOUNT:-"${ts_commandsdir}mount"}
 | ||||||
|  | +TS_CMD_MOUNTPOINT=${TS_CMD_MOUNTPOINT:-"${ts_commandsdir}mountpoint"}
 | ||||||
|  | +TS_CMD_NAMEI=${TS_CMD_NAMEI-"${ts_commandsdir}namei"}
 | ||||||
|  | +TS_CMD_PARTX=${TS_CMD_PARTX-"${ts_commandsdir}partx"}
 | ||||||
|  | +TS_CMD_RENAME=${TS_CMD_RENAME-"${ts_commandsdir}rename"}
 | ||||||
|  | +TS_CMD_RUNUSER=${TS_CMD_RUNUSER-"${ts_commandsdir}runuser"}
 | ||||||
|  | +TS_CMD_REV=${TS_CMD_REV:-"${ts_commandsdir}rev"}
 | ||||||
|  | +TS_CMD_SCRIPT=${TS_CMD_SCRIPT-"${ts_commandsdir}script"}
 | ||||||
|  | +TS_CMD_SCRIPTREPLAY=${TS_CMD_SCRIPTREPLAY-"${ts_commandsdir}scriptreplay"}
 | ||||||
|  | +TS_CMD_SETARCH=${TS_CMD_SETARCH-"${ts_commandsdir}setarch"}
 | ||||||
|  | +TS_CMD_SETSID=${TS_CMD_SETSID-"${ts_commandsdir}setsid"}
 | ||||||
|  | +TS_CMD_SWAPLABEL=${TS_CMD_SWAPLABEL:-"${ts_commandsdir}swaplabel"}
 | ||||||
|  | +TS_CMD_SWAPOFF=${TS_CMD_SWAPOFF:-"${ts_commandsdir}swapoff"}
 | ||||||
|  | +TS_CMD_SWAPON=${TS_CMD_SWAPON:-"${ts_commandsdir}swapon"}
 | ||||||
|  | +TS_CMD_UL=${TS_CMD_UL-"${ts_commandsdir}ul"}
 | ||||||
|  | +TS_CMD_UMOUNT=${TS_CMD_UMOUNT:-"${ts_commandsdir}umount"}
 | ||||||
|  | +TS_CMD_UTMPDUMP=${TS_CMD_UTMPDUMP-"${ts_commandsdir}utmpdump"}
 | ||||||
|  | +TS_CMD_UUIDD=${TS_CMD_UUIDD-"${ts_commandsdir}uuidd"}
 | ||||||
|  | +TS_CMD_UUIDGEN=${TS_CMD_UUIDGEN-"${ts_commandsdir}uuidgen"}
 | ||||||
|  | +TS_CMD_UUIDPARSE=${TS_CMD_UUIDPARSE-"${ts_commandsdir}uuidparse"}
 | ||||||
|  | +TS_CMD_WHEREIS=${TS_CMD_WHEREIS-"${ts_commandsdir}whereis"}
 | ||||||
|  | +TS_CMD_WIPEFS=${TS_CMD_WIPEFS-"${ts_commandsdir}wipefs"}
 | ||||||
|  | +TS_CMD_CHRT=${TS_CMD_CHRT-"${ts_commandsdir}chrt"}
 | ||||||
|  | diff --git a/tests/functions.sh b/tests/functions.sh
 | ||||||
|  | index 2fb0ddb5f..ab607c4ce 100644
 | ||||||
|  | --- a/tests/functions.sh
 | ||||||
|  | +++ b/tests/functions.sh
 | ||||||
|  | @@ -75,9 +75,19 @@ function ts_report {
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  function ts_check_test_command { | ||||||
|  | -	if [ ! -x "$1" ]; then
 | ||||||
|  | -		ts_skip "${1##*/} not found"
 | ||||||
|  | -	fi
 | ||||||
|  | +	case "$1" in
 | ||||||
|  | +	*/*)
 | ||||||
|  | +		# paths
 | ||||||
|  | +		if [ ! -x "$1" ]; then
 | ||||||
|  | +			ts_skip "${1##*/} not found"
 | ||||||
|  | +		fi
 | ||||||
|  | +		;;
 | ||||||
|  | +	*)
 | ||||||
|  | +		# just command names (e.g. --use-system-commands)
 | ||||||
|  | +		local cmd=$1
 | ||||||
|  | +		type "$cmd" >/dev/null 2>&1 || ts_skip "missing in PATH: $cmd"
 | ||||||
|  | +		;;
 | ||||||
|  | +	esac
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  function ts_check_prog { | ||||||
|  | @@ -254,8 +264,20 @@ function ts_init_env {
 | ||||||
|  |  	top_srcdir=$(ts_abspath $top_srcdir) | ||||||
|  |  	top_builddir=$(ts_abspath $top_builddir) | ||||||
|  |   | ||||||
|  | -	# some ul commands search other ul commands in $PATH
 | ||||||
|  | -	export PATH="$top_builddir:$PATH"
 | ||||||
|  | +	# We use helpser always from build tree
 | ||||||
|  | +	ts_helpersdir="${top_builddir}/"
 | ||||||
|  | +
 | ||||||
|  | +	TS_USE_SYSTEM_COMMANDS=$(ts_has_option "use-system-commands" "$*")
 | ||||||
|  | +	if [ "$TS_USE_SYSTEM_COMMANDS" == "yes" ]; then
 | ||||||
|  | +		# Don't define anything, just follow current PATH
 | ||||||
|  | +		ts_commandsdir=""
 | ||||||
|  | +	else
 | ||||||
|  | +		# The default is to use commands from build tree
 | ||||||
|  | +		ts_commandsdir="${top_builddir}/"
 | ||||||
|  | +
 | ||||||
|  | +		# some ul commands search other ul commands in $PATH
 | ||||||
|  | +		export PATH="$ts_commandsdir:$PATH"
 | ||||||
|  | +	fi
 | ||||||
|  |   | ||||||
|  |  	TS_SCRIPT="$mydir/$(basename $0)" | ||||||
|  |  	TS_SUBDIR=$(dirname $TS_SCRIPT) | ||||||
|  | @@ -319,6 +341,8 @@ function ts_init_env {
 | ||||||
|  |  	if [ "$TS_VERBOSE" == "yes" ]; then | ||||||
|  |  		echo | ||||||
|  |  		echo "     script: $TS_SCRIPT" | ||||||
|  | +		echo "   commands: $ts_commandsdir"
 | ||||||
|  | +		echo "    helpers: $ts_helpersdir"
 | ||||||
|  |  		echo "    sub dir: $TS_SUBDIR" | ||||||
|  |  		echo "    top dir: $TS_TOPDIR" | ||||||
|  |  		echo "       self: $TS_SELF" | ||||||
|  | diff --git a/tests/run.sh b/tests/run.sh
 | ||||||
|  | index f40c9f801..28f8ee25a 100755
 | ||||||
|  | --- a/tests/run.sh
 | ||||||
|  | +++ b/tests/run.sh
 | ||||||
|  | @@ -20,6 +20,7 @@ TS_TOPDIR=$(cd ${0%/*} && pwd)
 | ||||||
|  |  SUBTESTS= | ||||||
|  |  EXCLUDETESTS= | ||||||
|  |  OPTS= | ||||||
|  | +SYSCOMMANDS=
 | ||||||
|  |   | ||||||
|  |  top_srcdir= | ||||||
|  |  top_builddir= | ||||||
|  | @@ -68,6 +69,11 @@ while [ -n "$1" ]; do
 | ||||||
|  |  		# these options are simply forwarded to the test scripts | ||||||
|  |  		OPTS="$OPTS $1" | ||||||
|  |  		;; | ||||||
|  | +	--use-system-commands)
 | ||||||
|  | +		OPTS="$OPTS $1"
 | ||||||
|  | +		SYSCOMMANDS="yes"
 | ||||||
|  | +		;;
 | ||||||
|  | +
 | ||||||
|  |  	--nonroot) | ||||||
|  |  		if [ $(id -ru) -eq 0 ]; then | ||||||
|  |  			echo "Ignore util-linux test suite [non-root UID expected]." | ||||||
|  | @@ -98,18 +104,19 @@ while [ -n "$1" ]; do
 | ||||||
|  |  		echo "Usage: " | ||||||
|  |  		echo "  $(basename $0) [options] [<component> ...]" | ||||||
|  |  		echo "Options:" | ||||||
|  | -		echo "  --force              execute demanding tests"
 | ||||||
|  | -		echo "  --fake               do not run, setup tests only"
 | ||||||
|  | -		echo "  --memcheck-valgrind  run with valgrind"
 | ||||||
|  | -		echo "  --memcheck-asan      enable ASAN (requires ./configure --enable-asan)"
 | ||||||
|  | -		echo "  --nolocks            don't use flock to lock resources"
 | ||||||
|  | -		echo "  --verbose            verbose mode"
 | ||||||
|  | -		echo "  --show-diff          show diff from failed tests"
 | ||||||
|  | -		echo "  --nonroot            ignore test suite if user is root"
 | ||||||
|  | -		echo "  --srcdir=<path>      autotools top source directory"
 | ||||||
|  | -		echo "  --builddir=<path>    autotools top build directory"
 | ||||||
|  | -		echo "  --parallel=<num>     number of parallel test jobs, default: num cpus"
 | ||||||
|  | -		echo "  --exclude=<list>     exclude tests by list '<utilname>/<testname> ..'"
 | ||||||
|  | +		echo "  --force               execute demanding tests"
 | ||||||
|  | +		echo "  --fake                do not run, setup tests only"
 | ||||||
|  | +		echo "  --memcheck-valgrind   run with valgrind"
 | ||||||
|  | +		echo "  --memcheck-asan       enable ASAN (requires ./configure --enable-asan)"
 | ||||||
|  | +		echo "  --nolocks             don't use flock to lock resources"
 | ||||||
|  | +		echo "  --verbose             verbose mode"
 | ||||||
|  | +		echo "  --show-diff           show diff from failed tests"
 | ||||||
|  | +		echo "  --nonroot             ignore test suite if user is root"
 | ||||||
|  | +		echo "  --use-system-commands use PATH rather than builddir"
 | ||||||
|  | +		echo "  --srcdir=<path>       autotools top source directory"
 | ||||||
|  | +		echo "  --builddir=<path>     autotools top build directory"
 | ||||||
|  | +		echo "  --parallel=<num>      number of parallel test jobs, default: num cpus"
 | ||||||
|  | +		echo "  --exclude=<list>      exclude tests by list '<utilname>/<testname> ..'"
 | ||||||
|  |  		echo | ||||||
|  |  		exit 1 | ||||||
|  |  		;; | ||||||
|  | @@ -148,7 +155,7 @@ if [ -n "$SUBTESTS" ]; then
 | ||||||
|  |  		fi | ||||||
|  |  	done | ||||||
|  |  else | ||||||
|  | -	if [ ! -f "$top_builddir/test_ttyutils" ]; then
 | ||||||
|  | +	if [ -z "$SYSCOMMANDS" -a ! -f "$top_builddir/test_ttyutils" ]; then
 | ||||||
|  |  		echo "Tests not compiled! Run 'make check' to fix the problem." | ||||||
|  |  		exit 1 | ||||||
|  |  	fi | ||||||
|  | -- 
 | ||||||
|  | 2.20.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										99
									
								
								SOURCES/0017-tests-kill-do-not-use-shell-build-in.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								SOURCES/0017-tests-kill-do-not-use-shell-build-in.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,99 @@ | |||||||
|  | From 47b0f3480a88be94ef73973e73ad9f7fb8258cad Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 4 Mar 2019 17:28:15 +0100 | ||||||
|  | Subject: [PATCH 17/19] tests: (kill) do not use shell build-in | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1681062 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/2fadcded53add5b5b0ca7071f310a0f37c711c51 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/ts/kill/all_processes  | 5 +++++ | ||||||
|  |  tests/ts/kill/name_to_number | 5 +++++ | ||||||
|  |  tests/ts/kill/options        | 5 +++++ | ||||||
|  |  tests/ts/kill/print_pid      | 5 +++++ | ||||||
|  |  tests/ts/kill/queue          | 5 +++++ | ||||||
|  |  5 files changed, 25 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/ts/kill/all_processes b/tests/ts/kill/all_processes
 | ||||||
|  | index 2596ef02b..7a0c95931 100755
 | ||||||
|  | --- a/tests/ts/kill/all_processes
 | ||||||
|  | +++ b/tests/ts/kill/all_processes
 | ||||||
|  | @@ -20,6 +20,11 @@ ts_init "$*"
 | ||||||
|  |   | ||||||
|  |  ts_skip_nonroot | ||||||
|  |   | ||||||
|  | +# make sure we do not use shell built-in command
 | ||||||
|  | +if [ "$TS_USE_SYSTEM_COMMANDS" == "yes" ]; then
 | ||||||
|  | +	TS_CMD_KILL="/bin/kill"
 | ||||||
|  | +fi
 | ||||||
|  | +
 | ||||||
|  |  ts_check_test_command "$TS_CMD_KILL" | ||||||
|  |  ts_check_test_command "$TS_HELPER_SIGRECEIVE" | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/kill/name_to_number b/tests/ts/kill/name_to_number
 | ||||||
|  | index cde55c9ed..fd2aaafe0 100755
 | ||||||
|  | --- a/tests/ts/kill/name_to_number
 | ||||||
|  | +++ b/tests/ts/kill/name_to_number
 | ||||||
|  | @@ -18,6 +18,11 @@ TS_DESC="name_to_number"
 | ||||||
|  |  . "$TS_TOPDIR/functions.sh" | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | +# make sure we do not use shell built-in command
 | ||||||
|  | +if [ "$TS_USE_SYSTEM_COMMANDS" == "yes" ]; then
 | ||||||
|  | +	TS_CMD_KILL="/bin/kill"
 | ||||||
|  | +fi
 | ||||||
|  | +
 | ||||||
|  |  ts_check_test_command "$TS_CMD_KILL" | ||||||
|  |  ts_check_test_command "$TS_HELPER_SIGRECEIVE" | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/kill/options b/tests/ts/kill/options
 | ||||||
|  | index 2c82bbccc..ee9e52f47 100755
 | ||||||
|  | --- a/tests/ts/kill/options
 | ||||||
|  | +++ b/tests/ts/kill/options
 | ||||||
|  | @@ -18,6 +18,11 @@ TS_DESC="options"
 | ||||||
|  |  . "$TS_TOPDIR/functions.sh" | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | +# make sure we do not use shell built-in command
 | ||||||
|  | +if [ "$TS_USE_SYSTEM_COMMANDS" == "yes" ]; then
 | ||||||
|  | +	TS_CMD_KILL="/bin/kill"
 | ||||||
|  | +fi
 | ||||||
|  | +
 | ||||||
|  |  ts_check_test_command "$TS_CMD_KILL" | ||||||
|  |  ts_check_test_command "$TS_HELPER_SIGRECEIVE" | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/kill/print_pid b/tests/ts/kill/print_pid
 | ||||||
|  | index c6187f192..2a2a838ee 100755
 | ||||||
|  | --- a/tests/ts/kill/print_pid
 | ||||||
|  | +++ b/tests/ts/kill/print_pid
 | ||||||
|  | @@ -18,6 +18,11 @@ TS_DESC="print_pid"
 | ||||||
|  |  . "$TS_TOPDIR/functions.sh" | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | +# make sure we do not use shell built-in command
 | ||||||
|  | +if [ "$TS_USE_SYSTEM_COMMANDS" == "yes" ]; then
 | ||||||
|  | +	TS_CMD_KILL="/bin/kill"
 | ||||||
|  | +fi
 | ||||||
|  | +
 | ||||||
|  |  ts_check_test_command "$TS_CMD_KILL" | ||||||
|  |  ts_check_test_command "$TS_HELPER_SIGRECEIVE" | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/kill/queue b/tests/ts/kill/queue
 | ||||||
|  | index 992acf7a6..4727cbfc4 100755
 | ||||||
|  | --- a/tests/ts/kill/queue
 | ||||||
|  | +++ b/tests/ts/kill/queue
 | ||||||
|  | @@ -18,6 +18,11 @@ TS_DESC="queue"
 | ||||||
|  |  . "$TS_TOPDIR/functions.sh" | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | +# make sure we do not use shell built-in command
 | ||||||
|  | +if [ "$TS_USE_SYSTEM_COMMANDS" == "yes" ]; then
 | ||||||
|  | +	TS_CMD_KILL="/bin/kill"
 | ||||||
|  | +fi
 | ||||||
|  | +
 | ||||||
|  |  ts_check_test_command "$TS_CMD_KILL" | ||||||
|  |  ts_check_test_command "$TS_HELPER_SIGRECEIVE" | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 2.20.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										27
									
								
								SOURCES/0018-tests-add-missing-TS_CMD_UMOUNT-check.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								SOURCES/0018-tests-add-missing-TS_CMD_UMOUNT-check.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | |||||||
|  | From aa983f0eea49638f04de0fbafcd156c1472726ee Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 4 Mar 2019 17:32:03 +0100 | ||||||
|  | Subject: [PATCH 18/19] tests: add missing TS_CMD_UMOUNT check | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1681062 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/bb872a239ce9faae7ac672a9137945dd8e4ee964 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/ts/libmount/loop | 1 + | ||||||
|  |  1 file changed, 1 insertion(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/ts/libmount/loop b/tests/ts/libmount/loop
 | ||||||
|  | index b52b7476a..090b79fa4 100755
 | ||||||
|  | --- a/tests/ts/libmount/loop
 | ||||||
|  | +++ b/tests/ts/libmount/loop
 | ||||||
|  | @@ -23,6 +23,7 @@ TS_DESC="losetup-loop"
 | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  |  ts_check_test_command "$TS_CMD_MOUNT" | ||||||
|  | +ts_check_test_command "$TS_CMD_UMOUNT"
 | ||||||
|  |  ts_check_test_command "$TS_CMD_FINDMNT" | ||||||
|  |  ts_check_test_command "$TS_CMD_LOSETUP" | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 2.20.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										66
									
								
								SOURCES/0019-tests-add-noskip-commands.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								SOURCES/0019-tests-add-noskip-commands.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | |||||||
|  | From 9e92f2ff939a885b70d3a5d20e8c94f6e41e821b Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Tue, 5 Mar 2019 11:06:41 +0100 | ||||||
|  | Subject: [PATCH 19/19] tests: add --noskip-commands | ||||||
|  | 
 | ||||||
|  | The default is SKIP missing commands on --use-system-commands, but | ||||||
|  | with --noskip-commands the test will FAIL. | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1681062 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/7c90efa384cbb2ace873e2b90e8cc396a1719535 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/functions.sh | 9 ++++++++- | ||||||
|  |  tests/run.sh       | 2 ++ | ||||||
|  |  2 files changed, 10 insertions(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/functions.sh b/tests/functions.sh
 | ||||||
|  | index ab607c4ce..0605a1320 100644
 | ||||||
|  | --- a/tests/functions.sh
 | ||||||
|  | +++ b/tests/functions.sh
 | ||||||
|  | @@ -85,7 +85,13 @@ function ts_check_test_command {
 | ||||||
|  |  	*) | ||||||
|  |  		# just command names (e.g. --use-system-commands) | ||||||
|  |  		local cmd=$1 | ||||||
|  | -		type "$cmd" >/dev/null 2>&1 || ts_skip "missing in PATH: $cmd"
 | ||||||
|  | +		type "$cmd" >/dev/null 2>&1
 | ||||||
|  | +	        if [ $? -ne 0 ]; then
 | ||||||
|  | +			if [ "$TS_NOSKIP_COMMANDS" = "yes" ]; then
 | ||||||
|  | +				ts_failed "missing in PATH: $cmd"
 | ||||||
|  | +			fi
 | ||||||
|  | +			ts_skip "missing in PATH: $cmd"
 | ||||||
|  | +		fi
 | ||||||
|  |  		;; | ||||||
|  |  	esac | ||||||
|  |  } | ||||||
|  | @@ -301,6 +307,7 @@ function ts_init_env {
 | ||||||
|  |   | ||||||
|  |  	ts_init_core_env | ||||||
|  |   | ||||||
|  | +	TS_NOSKIP_COMMANDS=$(ts_has_option "noskip-commands" "$*")
 | ||||||
|  |  	TS_VERBOSE=$(ts_has_option "verbose" "$*") | ||||||
|  |  	TS_SHOWDIFF=$(ts_has_option "show-diff" "$*") | ||||||
|  |  	TS_PARALLEL=$(ts_has_option "parallel" "$*") | ||||||
|  | diff --git a/tests/run.sh b/tests/run.sh
 | ||||||
|  | index 28f8ee25a..e8328cc5d 100755
 | ||||||
|  | --- a/tests/run.sh
 | ||||||
|  | +++ b/tests/run.sh
 | ||||||
|  | @@ -65,6 +65,7 @@ while [ -n "$1" ]; do
 | ||||||
|  |  	--show-diff |\ | ||||||
|  |  	--verbose  |\ | ||||||
|  |  	--skip-loopdevs |\ | ||||||
|  | +	--noskip-commands |\
 | ||||||
|  |  	--parsable) | ||||||
|  |  		# these options are simply forwarded to the test scripts | ||||||
|  |  		OPTS="$OPTS $1" | ||||||
|  | @@ -113,6 +114,7 @@ while [ -n "$1" ]; do
 | ||||||
|  |  		echo "  --show-diff           show diff from failed tests" | ||||||
|  |  		echo "  --nonroot             ignore test suite if user is root" | ||||||
|  |  		echo "  --use-system-commands use PATH rather than builddir" | ||||||
|  | +		echo "  --noskip-commands     fail on missing commands"
 | ||||||
|  |  		echo "  --srcdir=<path>       autotools top source directory" | ||||||
|  |  		echo "  --builddir=<path>     autotools top build directory" | ||||||
|  |  		echo "  --parallel=<num>      number of parallel test jobs, default: num cpus" | ||||||
|  | -- 
 | ||||||
|  | 2.20.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										83
									
								
								SOURCES/0020-tests-add-missing-program-checks.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								SOURCES/0020-tests-add-missing-program-checks.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,83 @@ | |||||||
|  | From 68ab6d9691e667f89f72bc7eb39a5300b2f6cbaf Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Tue, 5 Mar 2019 13:56:45 +0100 | ||||||
|  | Subject: [PATCH] tests: add missing program checks | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1681062 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/ts/cal/bigyear    | 2 +- | ||||||
|  |  tests/ts/cal/month      | 2 +- | ||||||
|  |  tests/ts/cal/sep1752    | 2 +- | ||||||
|  |  tests/ts/misc/mbsencode | 2 ++ | ||||||
|  |  tests/ts/misc/strtosize | 2 ++ | ||||||
|  |  5 files changed, 7 insertions(+), 3 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/ts/cal/bigyear b/tests/ts/cal/bigyear
 | ||||||
|  | index d205c3afd..34139fd27 100755
 | ||||||
|  | --- a/tests/ts/cal/bigyear
 | ||||||
|  | +++ b/tests/ts/cal/bigyear
 | ||||||
|  | @@ -18,7 +18,7 @@ TS_DESC="Year 2147483646"
 | ||||||
|  |  . $TS_TOPDIR/functions.sh | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | -ts_check_test_command "$TS_CMD_CAL"
 | ||||||
|  | +ts_check_test_command "$TS_HELPER_CAL"
 | ||||||
|  |   | ||||||
|  |  export TERM=linux | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/cal/month b/tests/ts/cal/month
 | ||||||
|  | index 9794e90c0..37996acae 100755
 | ||||||
|  | --- a/tests/ts/cal/month
 | ||||||
|  | +++ b/tests/ts/cal/month
 | ||||||
|  | @@ -22,7 +22,7 @@ TS_DESC="month"
 | ||||||
|  |  . $TS_TOPDIR/functions.sh | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | -ts_check_test_command "$TS_CMD_CAL"
 | ||||||
|  | +ts_check_test_command "$TS_HELPER_CAL"
 | ||||||
|  |   | ||||||
|  |  export TERM=linux | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/cal/sep1752 b/tests/ts/cal/sep1752
 | ||||||
|  | index 3128261cd..41c30d40e 100755
 | ||||||
|  | --- a/tests/ts/cal/sep1752
 | ||||||
|  | +++ b/tests/ts/cal/sep1752
 | ||||||
|  | @@ -18,7 +18,7 @@ TS_DESC="September 1752"
 | ||||||
|  |  . $TS_TOPDIR/functions.sh | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | -ts_check_test_command "$TS_CMD_CAL"
 | ||||||
|  | +ts_check_test_command "$TS_HELPER_CAL"
 | ||||||
|  |   | ||||||
|  |  export TERM=linux | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/misc/mbsencode b/tests/ts/misc/mbsencode
 | ||||||
|  | index 405d34c56..139148259 100755
 | ||||||
|  | --- a/tests/ts/misc/mbsencode
 | ||||||
|  | +++ b/tests/ts/misc/mbsencode
 | ||||||
|  | @@ -22,6 +22,8 @@ TS_DESC="mbsencode"
 | ||||||
|  |  . $TS_TOPDIR/functions.sh | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | +ts_check_test_command "$TS_HELPER_MBSENCODE"
 | ||||||
|  | +
 | ||||||
|  |  # These test may fail on some machines (locales, other libc...) | ||||||
|  |  TS_KNOWN_FAIL="yes" | ||||||
|  |   | ||||||
|  | diff --git a/tests/ts/misc/strtosize b/tests/ts/misc/strtosize
 | ||||||
|  | index 68b3b8bab..a5914a939 100755
 | ||||||
|  | --- a/tests/ts/misc/strtosize
 | ||||||
|  | +++ b/tests/ts/misc/strtosize
 | ||||||
|  | @@ -21,6 +21,8 @@ TS_DESC="strtosize"
 | ||||||
|  |  . $TS_TOPDIR/functions.sh | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | +ts_check_test_command "$TS_HELPER_STRUTILS"
 | ||||||
|  | +
 | ||||||
|  |  $TS_HELPER_STRUTILS --size -1 >> $TS_OUTPUT 2>&1 | ||||||
|  |  $TS_HELPER_STRUTILS --size 0 >> $TS_OUTPUT 2>&1 | ||||||
|  |  $TS_HELPER_STRUTILS --size 1 >> $TS_OUTPUT 2>&1 | ||||||
|  | -- 
 | ||||||
|  | 2.20.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										42
									
								
								SOURCES/0021-tests-check-for-tar-and-b-g-zip.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								SOURCES/0021-tests-check-for-tar-and-b-g-zip.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,42 @@ | |||||||
|  | From 0c57e5fedce0e627debda3258e2203842b427572 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Tue, 11 Dec 2018 11:44:48 +0100 | ||||||
|  | Subject: [PATCH] tests: check for tar and {b,g}zip | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1681062 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/9e07672bb9989c88f6a7d8b8ab23158701fb4eec | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/ts/lscpu/lscpu | 2 ++ | ||||||
|  |  tests/ts/lsmem/lsmem | 2 ++ | ||||||
|  |  2 files changed, 4 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/ts/lscpu/lscpu b/tests/ts/lscpu/lscpu
 | ||||||
|  | index 70fbce9f3..ccf271149 100755
 | ||||||
|  | --- a/tests/ts/lscpu/lscpu
 | ||||||
|  | +++ b/tests/ts/lscpu/lscpu
 | ||||||
|  | @@ -22,6 +22,8 @@ TS_TOPDIR="${0%/*}/../.."
 | ||||||
|  |   | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  | +ts_check_prog "tar"
 | ||||||
|  | +ts_check_prog "gzip"
 | ||||||
|  |  ts_check_test_command "$TS_CMD_LSCPU" | ||||||
|  |   | ||||||
|  |  for dump in $(ls $TS_SELF/dumps/*.tar.gz | sort); do | ||||||
|  | diff --git a/tests/ts/lsmem/lsmem b/tests/ts/lsmem/lsmem
 | ||||||
|  | index f1a643f85..bedf4143f 100755
 | ||||||
|  | --- a/tests/ts/lsmem/lsmem
 | ||||||
|  | +++ b/tests/ts/lsmem/lsmem
 | ||||||
|  | @@ -21,6 +21,8 @@ TS_TOPDIR="${0%/*}/../.."
 | ||||||
|  |  ts_init "$*" | ||||||
|  |   | ||||||
|  |  ts_check_test_command "$TS_CMD_LSMEM" | ||||||
|  | +ts_check_prog "tar"
 | ||||||
|  | +ts_check_prog "bzip2"
 | ||||||
|  |   | ||||||
|  |  LSCOLUMNS="RANGE,SIZE,STATE,REMOVABLE,BLOCK,NODE" | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 2.20.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										93
									
								
								SOURCES/0022-tests-make-mount-oloop-use-more-robust.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								SOURCES/0022-tests-make-mount-oloop-use-more-robust.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,93 @@ | |||||||
|  | From 8822103e30121d95fa58b5e8b7ce8ce91d4e778e Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 3 Jun 2019 22:29:51 +0200 | ||||||
|  | Subject: [PATCH] tests: make mount -oloop use more robust | ||||||
|  | 
 | ||||||
|  | The command creates loop device, so udevd is in the game and it seems | ||||||
|  | better to wait for him. | ||||||
|  | 
 | ||||||
|  | Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=1681062 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/ts/libmount/loop         |  4 ++++ | ||||||
|  |  tests/ts/libmount/loop-overlay | 11 +++++++++++ | ||||||
|  |  2 files changed, 15 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/ts/libmount/loop b/tests/ts/libmount/loop
 | ||||||
|  | index 090b79fa4..50764781c 100755
 | ||||||
|  | --- a/tests/ts/libmount/loop
 | ||||||
|  | +++ b/tests/ts/libmount/loop
 | ||||||
|  | @@ -65,6 +65,7 @@ ts_finalize_subtest
 | ||||||
|  |  ts_init_subtest "file-o-loop" | ||||||
|  |  [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT | ||||||
|  |  $TS_CMD_MOUNT -oloop "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 | ||||||
|  |  udevadm settle | ||||||
|  |  ts_log "Success" | ||||||
|  | @@ -89,6 +90,7 @@ else
 | ||||||
|  |  	[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT | ||||||
|  |  	LODEV=$( $TS_CMD_LOSETUP --find 2>> $TS_OUTPUT ) | ||||||
|  |  	$TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 | ||||||
|  | +	udevadm settle
 | ||||||
|  |  	verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 | ||||||
|  |  	$TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1 | ||||||
|  |  	udevadm settle | ||||||
|  | @@ -122,6 +124,7 @@ ts_init_subtest "o-loop-val-initialized"
 | ||||||
|  |  LODEV=$( $TS_CMD_LOSETUP --show -f "$BACKFILE" 2>>$TS_OUTPUT) | ||||||
|  |  $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \ | ||||||
|  |         | sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1 | ||||||
|  |  udevadm settle | ||||||
|  |  ts_log "Success" | ||||||
|  | @@ -133,6 +136,7 @@ cp "$BACKFILE" "$BACKFILE"-2
 | ||||||
|  |  LODEV=$( $TS_CMD_LOSETUP --show -f "$BACKFILE"-2 2>> $TS_OUTPUT) | ||||||
|  |  $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \ | ||||||
|  |  	| sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1 | ||||||
|  |  rm "$BACKFILE"-2 | ||||||
|  |  udevadm settle | ||||||
|  | diff --git a/tests/ts/libmount/loop-overlay b/tests/ts/libmount/loop-overlay
 | ||||||
|  | index fffb823c0..1ba6eb06e 100755
 | ||||||
|  | --- a/tests/ts/libmount/loop-overlay
 | ||||||
|  | +++ b/tests/ts/libmount/loop-overlay
 | ||||||
|  | @@ -43,23 +43,34 @@ dd if="$IMG" of="$IMG" oflag=append bs=1024k count=5 conv=notrunc &>/dev/null
 | ||||||
|  |   | ||||||
|  |  echo "second should fail" >>$TS_OUTPUT | ||||||
|  |  $TS_CMD_MOUNT -oloop "$IMG" "$TS_MOUNTPOINT-1" >> $TS_OUTPUT 2>&1 | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_MOUNT -oloop,offset=$OFFSET "$IMG" "$TS_MOUNTPOINT-2" 2>&1 \ | ||||||
|  |         | sed 's/:.*:/: <target>/; s/for .*/for <source>/' >> $TS_OUTPUT | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_UMOUNT "$TS_MOUNTPOINT-1" >> $TS_OUTPUT 2>&1 | ||||||
|  | +udevadm settle
 | ||||||
|  |   | ||||||
|  |  echo "should succeed" >>$TS_OUTPUT | ||||||
|  |  $TS_CMD_MOUNT -oloop,sizelimit=$OFFSET "$IMG" "$TS_MOUNTPOINT-1" >> $TS_OUTPUT 2>&1 | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_MOUNT -oloop,offset=$OFFSET "$IMG" "$TS_MOUNTPOINT-2" >> $TS_OUTPUT 2>&1 | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_UMOUNT "$TS_MOUNTPOINT-1" >> $TS_OUTPUT 2>&1 | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_UMOUNT "$TS_MOUNTPOINT-2" >> $TS_OUTPUT 2>&1 | ||||||
|  | +udevadm settle
 | ||||||
|  |   | ||||||
|  |  echo "both should fail" >>$TS_OUTPUT | ||||||
|  |  LOOPDEV=$($TS_CMD_LOSETUP --show -f --offset 1 --sizelimit $OFFSET "$IMG") | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_MOUNT -oloop,sizelimit=$OFFSET "$IMG" "$TS_MOUNTPOINT-1" 2>&1 \ | ||||||
|  |  	| sed 's/:.*:/: <target>/; s/for .*/for <source>/' >> $TS_OUTPUT | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_MOUNT -oloop,offset=$OFFSET "$IMG" "$TS_MOUNTPOINT-2" 2>&1 \ | ||||||
|  |  	| sed 's/:.*:/: <target>/; s/for .*/for <source>/' >> $TS_OUTPUT | ||||||
|  | +udevadm settle
 | ||||||
|  |  $TS_CMD_LOSETUP --detach $LOOPDEV | ||||||
|  | +udevadm settle
 | ||||||
|  |   | ||||||
|  |  ts_log "Success" | ||||||
|  |  ts_finalize | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,87 @@ | |||||||
|  | From e431bfeca0f3e7be2eba30be83260f20976f871d Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Wed, 31 Jul 2019 16:18:27 +0200 | ||||||
|  | Subject: [PATCH 23/24] libblkid: fix file descriptor leak in blkid_verify() | ||||||
|  | 
 | ||||||
|  | The function blkid_verify() uses private device file descriptor and | ||||||
|  | uses blkid_probe_set_device() to assign the descriptor to low-level | ||||||
|  | probing code. Unfortunately, close() in this case is not enough as the | ||||||
|  | prober can internally open whole-disk device too. | ||||||
|  | 
 | ||||||
|  | The library API has been extended so blkid_probe_set_device() | ||||||
|  | deallocates and close previously used prober for whole-disk. This new | ||||||
|  | functionality is used in blkid_verify() now. | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1734553 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/c4d6d1c54dcd0eff701236d396d88b1fc6251768 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  libblkid/src/probe.c  | 19 ++++++++++++++++--- | ||||||
|  |  libblkid/src/verify.c |  4 +++- | ||||||
|  |  2 files changed, 19 insertions(+), 4 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c
 | ||||||
|  | index 647ae416a..a6dc8416a 100644
 | ||||||
|  | --- a/libblkid/src/probe.c
 | ||||||
|  | +++ b/libblkid/src/probe.c
 | ||||||
|  | @@ -848,10 +848,15 @@ failed:
 | ||||||
|  |   * @off: begin of probing area | ||||||
|  |   * @size: size of probing area (zero means whole device/file) | ||||||
|  |   * | ||||||
|  | - * Assigns the device to probe control struct, resets internal buffers and
 | ||||||
|  | - * resets the current probing.
 | ||||||
|  | + * Assigns the device to probe control struct, resets internal buffers, resets
 | ||||||
|  | + * the current probing, and close previously associated device (if open by
 | ||||||
|  | + * libblkid).
 | ||||||
|  |   * | ||||||
|  | - * Returns: -1 in case of failure, or 0 on success.
 | ||||||
|  | + * If @fd is < 0 than only resets the prober and returns 1. Note that
 | ||||||
|  | + * blkid_reset_probe() keeps the device associated with the prober, but
 | ||||||
|  | + * blkid_probe_set_device() does complete reset.
 | ||||||
|  | + *
 | ||||||
|  | + * Returns: -1 in case of failure, 0 on success and 1 on reset.
 | ||||||
|  |   */ | ||||||
|  |  int blkid_probe_set_device(blkid_probe pr, int fd, | ||||||
|  |  		blkid_loff_t off, blkid_loff_t size) | ||||||
|  | @@ -866,6 +871,11 @@ int blkid_probe_set_device(blkid_probe pr, int fd,
 | ||||||
|  |  	if ((pr->flags & BLKID_FL_PRIVATE_FD) && pr->fd >= 0) | ||||||
|  |  		close(pr->fd); | ||||||
|  |   | ||||||
|  | +	if (pr->disk_probe) {
 | ||||||
|  | +		blkid_free_probe(pr->disk_probe);
 | ||||||
|  | +		pr->disk_probe = NULL;
 | ||||||
|  | +	}
 | ||||||
|  | +
 | ||||||
|  |  	pr->flags &= ~BLKID_FL_PRIVATE_FD; | ||||||
|  |  	pr->flags &= ~BLKID_FL_TINY_DEV; | ||||||
|  |  	pr->flags &= ~BLKID_FL_CDROM_DEV; | ||||||
|  | @@ -881,6 +891,9 @@ int blkid_probe_set_device(blkid_probe pr, int fd,
 | ||||||
|  |  	pr->wipe_size = 0; | ||||||
|  |  	pr->wipe_chain = NULL; | ||||||
|  |   | ||||||
|  | +	if (fd < 0)
 | ||||||
|  | +		return 1;
 | ||||||
|  | +
 | ||||||
|  |  #if defined(POSIX_FADV_RANDOM) && defined(HAVE_POSIX_FADVISE) | ||||||
|  |  	/* Disable read-ahead */ | ||||||
|  |  	posix_fadvise(fd, 0, 0, POSIX_FADV_RANDOM); | ||||||
|  | diff --git a/libblkid/src/verify.c b/libblkid/src/verify.c
 | ||||||
|  | index 7f44f5497..750378f8c 100644
 | ||||||
|  | --- a/libblkid/src/verify.c
 | ||||||
|  | +++ b/libblkid/src/verify.c
 | ||||||
|  | @@ -184,9 +184,11 @@ blkid_dev blkid_verify(blkid_cache cache, blkid_dev dev)
 | ||||||
|  |  			   dev->bid_name, (long long)st.st_rdev, dev->bid_type)); | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  | -	blkid_reset_probe(cache->probe);
 | ||||||
|  | +	/* reset prober */
 | ||||||
|  |  	blkid_probe_reset_superblocks_filter(cache->probe); | ||||||
|  | +	blkid_probe_set_device(cache->probe, -1, 0, 0);
 | ||||||
|  |  	close(fd); | ||||||
|  | +
 | ||||||
|  |  	return dev; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										73
									
								
								SOURCES/0024-findmnt-verify-ignore-passno-for-XFS.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								SOURCES/0024-findmnt-verify-ignore-passno-for-XFS.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,73 @@ | |||||||
|  | From 3f6de92999cf63e234265f51d6ee02134bc75ac3 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Wed, 12 Jun 2019 11:02:51 +0200 | ||||||
|  | Subject: [PATCH 24/24] findmnt: (verify) ignore passno for XFS | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1719069 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/f5b7bf155b9881de5b99cc0a23b4dccf9a2d4af3 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  misc-utils/findmnt-verify.c | 12 +++++++++--- | ||||||
|  |  1 file changed, 9 insertions(+), 3 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/misc-utils/findmnt-verify.c b/misc-utils/findmnt-verify.c
 | ||||||
|  | index 1cc62def9..73e44a418 100644
 | ||||||
|  | --- a/misc-utils/findmnt-verify.c
 | ||||||
|  | +++ b/misc-utils/findmnt-verify.c
 | ||||||
|  | @@ -28,7 +28,8 @@ struct verify_context {
 | ||||||
|  |  	int	nwarnings; | ||||||
|  |  	int	nerrors; | ||||||
|  |   | ||||||
|  | -	unsigned int	target_printed : 1;
 | ||||||
|  | +	unsigned int	target_printed : 1,
 | ||||||
|  | +			no_fsck : 1;
 | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  static void verify_mesg(struct verify_context *vfy, char type, const char *fmt, va_list ap) | ||||||
|  | @@ -408,6 +409,8 @@ static int verify_fstype(struct verify_context *vfy)
 | ||||||
|  |  			isauto = 1; | ||||||
|  |  		else if (strcmp(type, "swap") == 0) | ||||||
|  |  			isswap = 1; | ||||||
|  | +		else if (strcmp(type, "xfs") == 0)
 | ||||||
|  | +			vfy->no_fsck = 1;
 | ||||||
|  |   | ||||||
|  |  		if (!isswap && !isauto && !none && !is_supported_filesystem(vfy, type)) | ||||||
|  |  			verify_warn(vfy, _("%s seems unsupported by the current kernel"), type); | ||||||
|  | @@ -422,6 +425,7 @@ static int verify_fstype(struct verify_context *vfy)
 | ||||||
|  |   | ||||||
|  |  	if (realtype) { | ||||||
|  |  		isswap = strcmp(realtype, "swap") == 0; | ||||||
|  | +		vfy->no_fsck = strcmp(realtype, "xfs") == 0;
 | ||||||
|  |   | ||||||
|  |  		if (type && !isauto && strcmp(type, realtype) != 0) | ||||||
|  |  			return verify_err(vfy, _("%s does not match with on-disk %s"), type, realtype); | ||||||
|  | @@ -440,7 +444,7 @@ static int verify_passno(struct verify_context *vfy)
 | ||||||
|  |  	int passno = mnt_fs_get_passno(vfy->fs); | ||||||
|  |  	const char *tgt = mnt_fs_get_target(vfy->fs); | ||||||
|  |   | ||||||
|  | -	if (tgt && strcmp("/", tgt) == 0 && passno != 1)
 | ||||||
|  | +	if (tgt && strcmp("/", tgt) == 0 && passno != 1 && !vfy->no_fsck)
 | ||||||
|  |  		return verify_warn(vfy, _("recommended root FS passno is 1 (current is %d)"), passno); | ||||||
|  |   | ||||||
|  |  	return 0; | ||||||
|  | @@ -463,7 +467,7 @@ static int verify_filesystem(struct verify_context *vfy)
 | ||||||
|  |  	if (!rc) | ||||||
|  |  		rc = verify_fstype(vfy); | ||||||
|  |  	if (!rc) | ||||||
|  | -		rc = verify_passno(vfy);
 | ||||||
|  | +		rc = verify_passno(vfy);	/* depends on verify_fstype() */
 | ||||||
|  |   | ||||||
|  |  	return rc; | ||||||
|  |  } | ||||||
|  | @@ -492,6 +496,8 @@ int verify_table(struct libmnt_table *tb)
 | ||||||
|  |   | ||||||
|  |  	while (rc == 0 && (vfy.fs = get_next_fs(tb, itr))) { | ||||||
|  |  		vfy.target_printed = 0; | ||||||
|  | +		vfy.no_fsck = 0;
 | ||||||
|  | +
 | ||||||
|  |  		if (check_order) | ||||||
|  |  			rc = verify_order(&vfy); | ||||||
|  |  		if (!rc) | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										41
									
								
								SOURCES/0025-partx-don-t-report-ENXIO-as-error-on-d.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								SOURCES/0025-partx-don-t-report-ENXIO-as-error-on-d.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | From be5e6b14db3cdd09dab711572116d7ee39344875 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Wed, 21 Aug 2019 10:51:18 +0200 | ||||||
|  | Subject: [PATCH 25/26] partx: don't report ENXIO as error on -d | ||||||
|  | 
 | ||||||
|  | The errno ENXIO should be ignored, unfortunately the current code uses | ||||||
|  | variable 'rc' for ioctl return code as well as for final del_parts() | ||||||
|  | return value. So, failed ioctl (which should be ignored) affects all | ||||||
|  | del_parts() status. | ||||||
|  | 
 | ||||||
|  |   # modprobe scsi_debug dev_size_mb=100 | ||||||
|  |   # partx  -d --nr 1-1024 /dev/sdc; echo $? | ||||||
|  |   1 | ||||||
|  | 
 | ||||||
|  | The device dos not contains any partitions, so 0 return code is | ||||||
|  | expected in this case. | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1739179 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/53ae7d60cfeacd4e87bfe6fcc015b58b78ef4555 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  disk-utils/partx.c | 3 +-- | ||||||
|  |  1 file changed, 1 insertion(+), 2 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/disk-utils/partx.c b/disk-utils/partx.c
 | ||||||
|  | index e3443ea80..f3dcc9007 100644
 | ||||||
|  | --- a/disk-utils/partx.c
 | ||||||
|  | +++ b/disk-utils/partx.c
 | ||||||
|  | @@ -327,8 +327,7 @@ static int del_parts(int fd, const char *device, dev_t devno,
 | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  |  	for (i = lower; i <= upper; i++) { | ||||||
|  | -		rc = partx_del_partition(fd, i);
 | ||||||
|  | -		if (rc == 0) {
 | ||||||
|  | +		if (partx_del_partition(fd, i) == 0) {
 | ||||||
|  |  			if (verbose) | ||||||
|  |  				printf(_("%s: partition #%d removed\n"), device, i); | ||||||
|  |  			continue; | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										59
									
								
								SOURCES/0026-partx-document-d-vs.-nr-and-fix-test.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								SOURCES/0026-partx-document-d-vs.-nr-and-fix-test.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | |||||||
|  | From 5a9269c019f9cb0b2d54444501beb74663670693 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Wed, 21 Aug 2019 13:42:22 +0200 | ||||||
|  | Subject: [PATCH 26/26] partx: document -d vs. --nr and fix test | ||||||
|  | 
 | ||||||
|  | The commit ab025087f91b66ee8e23a16bc49eb0d9bd421d65 has disabled error | ||||||
|  | message, but unfortunately it keeps wrong return code. This has been fixed | ||||||
|  | by commit 53ae7d60cfeacd4e87bfe6fcc015b58b78ef4555. | ||||||
|  | 
 | ||||||
|  | This commit add hit about it to docs and fix regression test too. | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1739179 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/5200aa99d27e084b514e8b035db32f39b49562a3 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  disk-utils/partx.8   | 5 ++++- | ||||||
|  |  tests/ts/partx/partx | 9 +++++++-- | ||||||
|  |  2 files changed, 11 insertions(+), 3 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/disk-utils/partx.8 b/disk-utils/partx.8
 | ||||||
|  | index af7313cb9..c6bbbae42 100644
 | ||||||
|  | --- a/disk-utils/partx.8
 | ||||||
|  | +++ b/disk-utils/partx.8
 | ||||||
|  | @@ -53,7 +53,10 @@ Add the specified partitions, or read the disk and add all partitions.
 | ||||||
|  |  Print the SIZE column in bytes rather than in human-readable format. | ||||||
|  |  .TP | ||||||
|  |  .BR \-d , " \-\-delete" | ||||||
|  | -Delete the specified partitions or all partitions.
 | ||||||
|  | +Delete the specified partitions or all partitions.  It is not error to
 | ||||||
|  | +remove non-existing partitions, so this option is possible to use together with
 | ||||||
|  | +large \fB\-\-nr\fR ranges without care about the current partitions set on
 | ||||||
|  | +the device.
 | ||||||
|  |  .TP | ||||||
|  |  .BR \-g , " \-\-noheadings" | ||||||
|  |  Do not print a header line with \fB\-\-show\fR or \fB\-\-raw\fR. | ||||||
|  | diff --git a/tests/ts/partx/partx b/tests/ts/partx/partx
 | ||||||
|  | index b21dc44ef..84c286a94 100755
 | ||||||
|  | --- a/tests/ts/partx/partx
 | ||||||
|  | +++ b/tests/ts/partx/partx
 | ||||||
|  | @@ -137,9 +137,14 @@ udevadm settle
 | ||||||
|  |  ts_init_subtest "delete-non-existent" | ||||||
|  |  #attempt to remove it again | ||||||
|  |  { | ||||||
|  | +	# remove non-existing partitions (ENXIO) is not error
 | ||||||
|  | +	#
 | ||||||
|  | +	# see ab025087f91b66ee8e23a16bc49eb0d9bd421d65 and
 | ||||||
|  | +	#     53ae7d60cfeacd4e87bfe6fcc015b58b78ef4555
 | ||||||
|  | +	#
 | ||||||
|  |  	$TS_CMD_PARTX -d --nr $PARTS $TS_DEVICE && | ||||||
|  | -		echo "partx failed: removed non-existing partition" ||
 | ||||||
|  | -		echo "partx: OK"
 | ||||||
|  | +		echo "partx: OK" ||
 | ||||||
|  | +		echo "partx failed: removed non-existing partition"
 | ||||||
|  |  } >$TS_OUTPUT 2>&1 | ||||||
|  |  ts_finalize_subtest | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										396
									
								
								SOURCES/0027-libmount-improve-mountinfo-reliability.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										396
									
								
								SOURCES/0027-libmount-improve-mountinfo-reliability.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,396 @@ | |||||||
|  | From 32fe4f1dd8fbc104bd848e24de613122947f095a Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Wed, 28 Aug 2019 15:47:16 +0200 | ||||||
|  | Subject: [PATCH] libmount: improve mountinfo reliability | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  | 
 | ||||||
|  | The standard way how we read mount table is not reliable because | ||||||
|  | during the read() syscalls the table may be modified by some another | ||||||
|  | process. The changes in the table is possible to detect by poll() | ||||||
|  | event, and in this case it seems better to lseek to the begin of the file | ||||||
|  | and read it again. It's expensive, but better than races... | ||||||
|  | 
 | ||||||
|  | This patch does not modify mountinfo parser, but it reads all file to | ||||||
|  | memory (by read()+poll()) and than it creates memory stream | ||||||
|  | from the buffer and use it rather than a regular file stream. | ||||||
|  | 
 | ||||||
|  | It means the parser is still possible to use for normal files | ||||||
|  | (e.g. fstab) as well as for mountinfo and it's also portable to | ||||||
|  | systems where for some reason is no fmemopen(). | ||||||
|  | 
 | ||||||
|  | Addresses: https://github.com/systemd/systemd/issues/10872 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1751447 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/e4925f591c1bfb83719418b56b952830d15b77eb | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/ee551c909f95437fd9fcd162f398c069d0ce9720 | ||||||
|  | Reported-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  configure.ac             |   1 + | ||||||
|  |  libmount/src/mountP.h    |   2 + | ||||||
|  |  libmount/src/tab_parse.c |  87 +++++++++++++++++---- | ||||||
|  |  libmount/src/utils.c     | 158 +++++++++++++++++++++++++++++++++++++++ | ||||||
|  |  4 files changed, 233 insertions(+), 15 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/configure.ac b/configure.ac
 | ||||||
|  | index a05a294ad..245004890 100644
 | ||||||
|  | --- a/configure.ac
 | ||||||
|  | +++ b/configure.ac
 | ||||||
|  | @@ -456,6 +456,7 @@ AC_CHECK_FUNCS([ \
 | ||||||
|  |  	err \ | ||||||
|  |  	errx \ | ||||||
|  |  	explicit_bzero \ | ||||||
|  | +	fmemopen \
 | ||||||
|  |  	fsync \ | ||||||
|  |  	utimensat \ | ||||||
|  |  	getdomainname \ | ||||||
|  | diff --git a/libmount/src/mountP.h b/libmount/src/mountP.h
 | ||||||
|  | index d47d26442..52a238ef3 100644
 | ||||||
|  | --- a/libmount/src/mountP.h
 | ||||||
|  | +++ b/libmount/src/mountP.h
 | ||||||
|  | @@ -93,6 +93,7 @@ extern int mnt_valid_tagname(const char *tagname);
 | ||||||
|  |  extern int append_string(char **a, const char *b); | ||||||
|  |   | ||||||
|  |  extern const char *mnt_statfs_get_fstype(struct statfs *vfs); | ||||||
|  | +extern int is_procfs_fd(int fd);
 | ||||||
|  |  extern int is_file_empty(const char *name); | ||||||
|  |   | ||||||
|  |  extern int mnt_is_readonly(const char *path) | ||||||
|  | @@ -118,6 +119,7 @@ extern void mnt_free_filesystems(char **filesystems);
 | ||||||
|  |  extern char *mnt_get_kernel_cmdline_option(const char *name); | ||||||
|  |  extern int mnt_guess_system_root(dev_t devno, struct libmnt_cache *cache, char **path); | ||||||
|  |  extern int mnt_stat_mountpoint(const char *target, struct stat *st); | ||||||
|  | +extern FILE *mnt_get_procfs_memstream(int fd, char **membuf);
 | ||||||
|  |   | ||||||
|  |  /* tab.c */ | ||||||
|  |  extern int is_mountinfo(struct libmnt_table *tb); | ||||||
|  | diff --git a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c
 | ||||||
|  | index 3ed84ebc2..10fc68279 100644
 | ||||||
|  | --- a/libmount/src/tab_parse.c
 | ||||||
|  | +++ b/libmount/src/tab_parse.c
 | ||||||
|  | @@ -603,15 +603,7 @@ static int kernel_fs_postparse(struct libmnt_table *tb,
 | ||||||
|  |  	return rc; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | -/**
 | ||||||
|  | - * mnt_table_parse_stream:
 | ||||||
|  | - * @tb: tab pointer
 | ||||||
|  | - * @f: file stream
 | ||||||
|  | - * @filename: filename used for debug and error messages
 | ||||||
|  | - *
 | ||||||
|  | - * Returns: 0 on success, negative number in case of error.
 | ||||||
|  | - */
 | ||||||
|  | -int mnt_table_parse_stream(struct libmnt_table *tb, FILE *f, const char *filename)
 | ||||||
|  | +static int __table_parse_stream(struct libmnt_table *tb, FILE *f, const char *filename)
 | ||||||
|  |  { | ||||||
|  |  	int rc = -1; | ||||||
|  |  	int flags = 0; | ||||||
|  | @@ -685,6 +677,40 @@ err:
 | ||||||
|  |  	return rc; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +/**
 | ||||||
|  | + * mnt_table_parse_stream:
 | ||||||
|  | + * @tb: tab pointer
 | ||||||
|  | + * @f: file stream
 | ||||||
|  | + * @filename: filename used for debug and error messages
 | ||||||
|  | + *
 | ||||||
|  | + * Returns: 0 on success, negative number in case of error.
 | ||||||
|  | + */
 | ||||||
|  | +int mnt_table_parse_stream(struct libmnt_table *tb, FILE *f, const char *filename)
 | ||||||
|  | +{
 | ||||||
|  | +	int fd, rc;
 | ||||||
|  | +	FILE *memf = NULL;
 | ||||||
|  | +	char *membuf = NULL;
 | ||||||
|  | +
 | ||||||
|  | +	/*
 | ||||||
|  | +	 * For /proc/#/{mountinfo,mount} we read all file to memory and use it
 | ||||||
|  | +	 * as memory stream. For more details see mnt_read_procfs_file().
 | ||||||
|  | +	 */
 | ||||||
|  | +	if ((fd = fileno(f)) >= 0
 | ||||||
|  | +	    && (tb->fmt == MNT_FMT_GUESS ||
 | ||||||
|  | +		tb->fmt == MNT_FMT_MOUNTINFO ||
 | ||||||
|  | +		tb->fmt == MNT_FMT_MTAB)
 | ||||||
|  | +	    && is_procfs_fd(fd)
 | ||||||
|  | +	    && (memf = mnt_get_procfs_memstream(fd, &membuf))) {
 | ||||||
|  | +
 | ||||||
|  | +		rc = __table_parse_stream(tb, memf, filename);
 | ||||||
|  | +		fclose(memf);
 | ||||||
|  | +		free(membuf);
 | ||||||
|  | +	} else
 | ||||||
|  | +		rc = __table_parse_stream(tb, f, filename);
 | ||||||
|  | +
 | ||||||
|  | +	return rc;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  |  /** | ||||||
|  |   * mnt_table_parse_file: | ||||||
|  |   * @tb: tab pointer | ||||||
|  | @@ -700,18 +726,49 @@ err:
 | ||||||
|  |  int mnt_table_parse_file(struct libmnt_table *tb, const char *filename) | ||||||
|  |  { | ||||||
|  |  	FILE *f; | ||||||
|  | -	int rc;
 | ||||||
|  | +	int rc, fd = -1;
 | ||||||
|  |   | ||||||
|  |  	if (!filename || !tb) | ||||||
|  |  		return -EINVAL; | ||||||
|  |   | ||||||
|  | -	f = fopen(filename, "r" UL_CLOEXECSTR);
 | ||||||
|  | +	/*
 | ||||||
|  | +	 * Try to use read()+poll() to realiably read all
 | ||||||
|  | +	 * /proc/#/{mount,mountinfo} file to memory
 | ||||||
|  | +	 */
 | ||||||
|  | +	if (tb->fmt != MNT_FMT_SWAPS
 | ||||||
|  | +	    && strncmp(filename, "/proc/", 6) == 0) {
 | ||||||
|  | +
 | ||||||
|  | +		FILE *memf;
 | ||||||
|  | +		char *membuf = NULL;
 | ||||||
|  | +
 | ||||||
|  | +		fd = open(filename, O_RDONLY|O_CLOEXEC);
 | ||||||
|  | +		if (fd < 0) {
 | ||||||
|  | +			rc = -errno;
 | ||||||
|  | +			goto done;
 | ||||||
|  | +		}
 | ||||||
|  | +		memf = mnt_get_procfs_memstream(fd, &membuf);
 | ||||||
|  | +		if (memf) {
 | ||||||
|  | +			rc = __table_parse_stream(tb, memf, filename);
 | ||||||
|  | +
 | ||||||
|  | +			fclose(memf);
 | ||||||
|  | +			free(membuf);
 | ||||||
|  | +			close(fd);
 | ||||||
|  | +			goto done;
 | ||||||
|  | +		}
 | ||||||
|  | +		/* else fallback to fopen/fdopen() */
 | ||||||
|  | +	}
 | ||||||
|  | +
 | ||||||
|  | +	if (fd >= 0)
 | ||||||
|  | +		f = fdopen(fd, "r" UL_CLOEXECSTR);
 | ||||||
|  | +	else
 | ||||||
|  | +		f = fopen(filename, "r" UL_CLOEXECSTR);
 | ||||||
|  | +
 | ||||||
|  |  	if (f) { | ||||||
|  | -		rc = mnt_table_parse_stream(tb, f, filename);
 | ||||||
|  | +		rc = __table_parse_stream(tb, f, filename);
 | ||||||
|  |  		fclose(f); | ||||||
|  |  	} else | ||||||
|  |  		rc = -errno; | ||||||
|  | -
 | ||||||
|  | +done:
 | ||||||
|  |  	DBG(TAB, ul_debugobj(tb, "parsing done [filename=%s, rc=%d]", filename, rc)); | ||||||
|  |  	return rc; | ||||||
|  |  } | ||||||
|  | @@ -768,7 +825,7 @@ static int __mnt_table_parse_dir(struct libmnt_table *tb, const char *dirname)
 | ||||||
|  |   | ||||||
|  |  		f = fopen_at(dd, d->d_name, O_RDONLY|O_CLOEXEC, "r" UL_CLOEXECSTR); | ||||||
|  |  		if (f) { | ||||||
|  | -			mnt_table_parse_stream(tb, f, d->d_name);
 | ||||||
|  | +			__table_parse_stream(tb, f, d->d_name);
 | ||||||
|  |  			fclose(f); | ||||||
|  |  		} | ||||||
|  |  	} | ||||||
|  | @@ -809,7 +866,7 @@ static int __mnt_table_parse_dir(struct libmnt_table *tb, const char *dirname)
 | ||||||
|  |  		f = fopen_at(dirfd(dir), d->d_name, | ||||||
|  |  				O_RDONLY|O_CLOEXEC, "r" UL_CLOEXECSTR); | ||||||
|  |  		if (f) { | ||||||
|  | -			mnt_table_parse_stream(tb, f, d->d_name);
 | ||||||
|  | +			__table_parse_stream(tb, f, d->d_name);
 | ||||||
|  |  			fclose(f); | ||||||
|  |  		} | ||||||
|  |  	} | ||||||
|  | diff --git a/libmount/src/utils.c b/libmount/src/utils.c
 | ||||||
|  | index c36187c07..f7d85d124 100644
 | ||||||
|  | --- a/libmount/src/utils.c
 | ||||||
|  | +++ b/libmount/src/utils.c
 | ||||||
|  | @@ -14,6 +14,7 @@
 | ||||||
|  |  #include <fcntl.h> | ||||||
|  |  #include <pwd.h> | ||||||
|  |  #include <grp.h> | ||||||
|  | +#include <poll.h>
 | ||||||
|  |  #include <blkid.h> | ||||||
|  |   | ||||||
|  |  #include "strutils.h" | ||||||
|  | @@ -408,6 +409,12 @@ const char *mnt_statfs_get_fstype(struct statfs *vfs)
 | ||||||
|  |  	return NULL; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +int is_procfs_fd(int fd)
 | ||||||
|  | +{
 | ||||||
|  | +	struct statfs sfs;
 | ||||||
|  | +
 | ||||||
|  | +	return fstatfs(fd, &sfs) == 0 && sfs.f_type == STATFS_PROC_MAGIC;
 | ||||||
|  | +}
 | ||||||
|  |   | ||||||
|  |  /** | ||||||
|  |   * mnt_match_fstype: | ||||||
|  | @@ -1117,8 +1124,158 @@ done:
 | ||||||
|  |  	return 1; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +#if defined(HAVE_FMEMOPEN) || defined(TEST_PROGRAM)
 | ||||||
|  | +
 | ||||||
|  | +/*
 | ||||||
|  | + * This function tries to minimize possible races when we read
 | ||||||
|  | + * /proc/#/{mountinfo,mount} files.
 | ||||||
|  | + *
 | ||||||
|  | + * The idea is to minimize number of read()s and check by poll() that during
 | ||||||
|  | + * the read the mount table has not been modified. If yes, than re-read it
 | ||||||
|  | + * (with some limitations to avoid never ending loop).
 | ||||||
|  | + *
 | ||||||
|  | + * Returns: <0 error, 0 success, 1 too many attempts
 | ||||||
|  | + */
 | ||||||
|  | +static int read_procfs_file(int fd, char **buf, size_t *bufsiz)
 | ||||||
|  | +{
 | ||||||
|  | +	size_t bufmax = 0;
 | ||||||
|  | +	int rc = 0, tries = 0, ninters = 0;
 | ||||||
|  | +	char *bufptr = NULL;;
 | ||||||
|  | +
 | ||||||
|  | +	assert(buf);
 | ||||||
|  | +	assert(bufsiz);
 | ||||||
|  | +
 | ||||||
|  | +	*bufsiz = 0;
 | ||||||
|  | +	*buf = NULL;
 | ||||||
|  | +
 | ||||||
|  | +	do {
 | ||||||
|  | +		ssize_t ret;
 | ||||||
|  | +
 | ||||||
|  | +		if (!bufptr || bufmax == *bufsiz) {
 | ||||||
|  | +			char *tmp;
 | ||||||
|  | +
 | ||||||
|  | +			bufmax = bufmax ? bufmax * 2 : (16 * 1024);
 | ||||||
|  | +			tmp = realloc(*buf, bufmax);
 | ||||||
|  | +			if (!tmp)
 | ||||||
|  | +				break;
 | ||||||
|  | +			*buf = tmp;
 | ||||||
|  | +			bufptr = tmp + *bufsiz;
 | ||||||
|  | +		}
 | ||||||
|  | +
 | ||||||
|  | +		errno = 0;
 | ||||||
|  | +		ret = read(fd, bufptr, bufmax - *bufsiz);
 | ||||||
|  | +
 | ||||||
|  | +		if (ret < 0) {
 | ||||||
|  | +			/* error */
 | ||||||
|  | +			if ((errno == EAGAIN || errno == EINTR) && (ninters++ < 5)) {
 | ||||||
|  | +				xusleep(200000);
 | ||||||
|  | +				continue;
 | ||||||
|  | +			}
 | ||||||
|  | +			break;
 | ||||||
|  | +
 | ||||||
|  | +		} else if (ret > 0) {
 | ||||||
|  | +			/* success -- verify no event during read */
 | ||||||
|  | +			struct pollfd fds[] = {
 | ||||||
|  | +				{ .fd = fd, .events = POLLPRI }
 | ||||||
|  | +			};
 | ||||||
|  | +
 | ||||||
|  | +			rc = poll(fds, 1, 0);
 | ||||||
|  | +			if (rc < 0)
 | ||||||
|  | +				break;		/* poll() error */
 | ||||||
|  | +			if (rc > 0) {
 | ||||||
|  | +				/* event -- read all again */
 | ||||||
|  | +				if (lseek(fd, 0, SEEK_SET) != 0)
 | ||||||
|  | +					break;
 | ||||||
|  | +				*bufsiz = 0;
 | ||||||
|  | +				bufptr = *buf;
 | ||||||
|  | +				tries++;
 | ||||||
|  | +
 | ||||||
|  | +				if (tries > 10)
 | ||||||
|  | +					/* busy system? -- wait */
 | ||||||
|  | +					xusleep(10000);
 | ||||||
|  | +				continue;
 | ||||||
|  | +			}
 | ||||||
|  | +
 | ||||||
|  | +			/* successful read() without active poll() */
 | ||||||
|  | +			(*bufsiz) += (size_t) ret;
 | ||||||
|  | +			bufptr += ret;
 | ||||||
|  | +			tries = ninters = 0;
 | ||||||
|  | +		} else {
 | ||||||
|  | +			/* end-of-file */
 | ||||||
|  | +			goto success;
 | ||||||
|  | +		}
 | ||||||
|  | +	} while (tries <= 100);
 | ||||||
|  | +
 | ||||||
|  | +	rc = errno ? -errno : 1;
 | ||||||
|  | +	free(*buf);
 | ||||||
|  | +	return rc;
 | ||||||
|  | +
 | ||||||
|  | +success:
 | ||||||
|  | +	return 0;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +/*
 | ||||||
|  | + * Create FILE stream for data from read_procfs_file()
 | ||||||
|  | + */
 | ||||||
|  | +FILE *mnt_get_procfs_memstream(int fd, char **membuf)
 | ||||||
|  | +{
 | ||||||
|  | +	FILE *memf;
 | ||||||
|  | +	size_t sz = 0;
 | ||||||
|  | +	off_t cur;
 | ||||||
|  | +
 | ||||||
|  | +	/* in case of error, rewind to the original position */
 | ||||||
|  | +	cur = lseek(fd, 0, SEEK_CUR);
 | ||||||
|  | +
 | ||||||
|  | +	if (read_procfs_file(fd, membuf, &sz) == 0
 | ||||||
|  | +	    && sz > 0
 | ||||||
|  | +	    && (memf = fmemopen(*membuf, sz, "r")))
 | ||||||
|  | +		return memf;
 | ||||||
|  | +
 | ||||||
|  | +	/* error */
 | ||||||
|  | +	lseek(fd, cur, SEEK_SET);
 | ||||||
|  | +	return NULL;
 | ||||||
|  | +}
 | ||||||
|  | +#else
 | ||||||
|  | +FILE *mnt_get_procfs_memstream(int fd __attribute((__unused__)),
 | ||||||
|  | +		               char **membuf __attribute((__unused__)))
 | ||||||
|  | +{
 | ||||||
|  | +	return NULL;
 | ||||||
|  | +}
 | ||||||
|  | +#endif /* HAVE_FMEMOPEN */
 | ||||||
|  | +
 | ||||||
|  |   | ||||||
|  |  #ifdef TEST_PROGRAM | ||||||
|  | +static int test_proc_read(struct libmnt_test *ts, int argc, char *argv[])
 | ||||||
|  | +{
 | ||||||
|  | +	char *buf = NULL;
 | ||||||
|  | +	char *filename = argv[1];
 | ||||||
|  | +	size_t bufsiz = 0;
 | ||||||
|  | +	int rc = 0, fd = open(filename, O_RDONLY);
 | ||||||
|  | +
 | ||||||
|  | +	if (fd <= 0) {
 | ||||||
|  | +		warn("%s: cannot open", filename);
 | ||||||
|  | +		return -errno;
 | ||||||
|  | +	}
 | ||||||
|  | +
 | ||||||
|  | +	rc = read_procfs_file(fd, &buf, &bufsiz);
 | ||||||
|  | +	close(fd);
 | ||||||
|  | +
 | ||||||
|  | +	switch (rc) {
 | ||||||
|  | +	case 0:
 | ||||||
|  | +		fwrite(buf, 1, bufsiz, stdout);
 | ||||||
|  | +		free(buf);
 | ||||||
|  | +		break;
 | ||||||
|  | +	case 1:
 | ||||||
|  | +		warnx("too many attempts");
 | ||||||
|  | +		break;
 | ||||||
|  | +	default:
 | ||||||
|  | +		warn("%s: cannot read", filename);
 | ||||||
|  | +		break;
 | ||||||
|  | +	}
 | ||||||
|  | +
 | ||||||
|  | +	return rc;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  |  static int test_match_fstype(struct libmnt_test *ts, int argc, char *argv[]) | ||||||
|  |  { | ||||||
|  |  	char *type = argv[1]; | ||||||
|  | @@ -1300,6 +1457,7 @@ int main(int argc, char *argv[])
 | ||||||
|  |  	{ "--guess-root",    test_guess_root,      "[<maj:min>]" }, | ||||||
|  |  	{ "--mkdir",         test_mkdir,           "<path>" }, | ||||||
|  |  	{ "--statfs-type",   test_statfs_type,     "<path>" }, | ||||||
|  | +	{ "--read-procfs",   test_proc_read,       "<path>" },
 | ||||||
|  |   | ||||||
|  |  	{ NULL } | ||||||
|  |  	}; | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,53 @@ | |||||||
|  | From d9fe56d8da9015694fcba5f3dd850becff677ab5 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Fri, 20 Sep 2019 13:00:19 +0200 | ||||||
|  | Subject: [PATCH] libmount: use fmemopen() in more robust way [coverity scan] | ||||||
|  | 
 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/026f7d302066a4e6f5a69dc9818ec3180939f4a3 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/bc747dfccf511419312ec872cefa90e25d83136a | ||||||
|  | Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=1751447 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  libmount/src/utils.c | 18 ++++++++++++------ | ||||||
|  |  1 file changed, 12 insertions(+), 6 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/libmount/src/utils.c b/libmount/src/utils.c
 | ||||||
|  | index f7d85d124..04e79f53f 100644
 | ||||||
|  | --- a/libmount/src/utils.c
 | ||||||
|  | +++ b/libmount/src/utils.c
 | ||||||
|  | @@ -1219,20 +1219,26 @@ success:
 | ||||||
|  |   */ | ||||||
|  |  FILE *mnt_get_procfs_memstream(int fd, char **membuf) | ||||||
|  |  { | ||||||
|  | -	FILE *memf;
 | ||||||
|  |  	size_t sz = 0; | ||||||
|  |  	off_t cur; | ||||||
|  |   | ||||||
|  | +	*membuf = NULL;
 | ||||||
|  | +
 | ||||||
|  |  	/* in case of error, rewind to the original position */ | ||||||
|  |  	cur = lseek(fd, 0, SEEK_CUR); | ||||||
|  |   | ||||||
|  | -	if (read_procfs_file(fd, membuf, &sz) == 0
 | ||||||
|  | -	    && sz > 0
 | ||||||
|  | -	    && (memf = fmemopen(*membuf, sz, "r")))
 | ||||||
|  | -		return memf;
 | ||||||
|  | +	if (read_procfs_file(fd, membuf, &sz) == 0 && sz > 0) {
 | ||||||
|  | +		FILE *memf = fmemopen(*membuf, sz, "r");
 | ||||||
|  | +		if (memf)
 | ||||||
|  | +			return memf;	/* success */
 | ||||||
|  | +
 | ||||||
|  | +		free(*membuf);
 | ||||||
|  | +		*membuf = NULL;
 | ||||||
|  | +	}
 | ||||||
|  |   | ||||||
|  |  	/* error */ | ||||||
|  | -	lseek(fd, cur, SEEK_SET);
 | ||||||
|  | +	if (cur != (off_t) -1)
 | ||||||
|  | +		lseek(fd, cur, SEEK_SET);
 | ||||||
|  |  	return NULL; | ||||||
|  |  } | ||||||
|  |  #else | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										28
									
								
								SOURCES/0029-lscpu-use-the-first-VM-from-proc-sysinfo.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								SOURCES/0029-lscpu-use-the-first-VM-from-proc-sysinfo.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | From 6f16035b81cd7feca02d6df8eff1bb954ed7e58d Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Tue, 4 Sep 2018 14:30:37 +0200 | ||||||
|  | Subject: [PATCH 29/32] lscpu: use the first VM from /proc/sysinfo | ||||||
|  | 
 | ||||||
|  | Addresses: https://github.com/karelzak/util-linux/issues/685 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1739443 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/350f5c8df2cb6edbfb5bae95f00a9fff446d236c | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  sys-utils/lscpu.c | 1 + | ||||||
|  |  1 file changed, 1 insertion(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c
 | ||||||
|  | index fd6d63bbf..1aa7bff4d 100644
 | ||||||
|  | --- a/sys-utils/lscpu.c
 | ||||||
|  | +++ b/sys-utils/lscpu.c
 | ||||||
|  | @@ -866,6 +866,7 @@ read_hypervisor(struct lscpu_desc *desc, struct lscpu_modifier *mod)
 | ||||||
|  |  				*(str--) = '\0'; | ||||||
|  |  			while ((str = strstr(desc->hypervisor, "  "))) | ||||||
|  |  				memmove(str, str + 1, strlen(str)); | ||||||
|  | +			break;
 | ||||||
|  |  		} | ||||||
|  |  		fclose(fd); | ||||||
|  |  	} | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										206
									
								
								SOURCES/0030-tests-lscpu-s390-nested-virtualization.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								SOURCES/0030-tests-lscpu-s390-nested-virtualization.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,206 @@ | |||||||
|  | From e10bdfc6cd623f02740cf2bcfd9867c56534c5e5 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Radka Skvarilova <rskvaril@redhat.com> | ||||||
|  | Date: Sun, 22 Sep 2019 13:49:45 +0200 | ||||||
|  | Subject: [PATCH 30/32] tests: lscpu s390 nested virtualization | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Radka Skvarilova <rskvaril@redhat.com> | ||||||
|  | Addresses:https://bugzilla.redhat.com/show_bug.cgi?id=1739443 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/2062164894fffa314ecb7ac99dc6c98062484389 | ||||||
|  | ---
 | ||||||
|  |  tests/expected/lscpu/lscpu-s390-nested-virt  |  45 +++++++++++++++++++ | ||||||
|  |  tests/ts/lscpu/dumps/s390-nested-virt.tar.gz | Bin 0 -> 7199 bytes | ||||||
|  |  2 files changed, 45 insertions(+) | ||||||
|  |  create mode 100644 tests/expected/lscpu/lscpu-s390-nested-virt | ||||||
|  |  create mode 100644 tests/ts/lscpu/dumps/s390-nested-virt.tar.gz | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/expected/lscpu/lscpu-s390-nested-virt b/tests/expected/lscpu/lscpu-s390-nested-virt
 | ||||||
|  | new file mode 100644 | ||||||
|  | index 000000000..2665fd8dc
 | ||||||
|  | --- /dev/null
 | ||||||
|  | +++ b/tests/expected/lscpu/lscpu-s390-nested-virt
 | ||||||
|  | @@ -0,0 +1,45 @@
 | ||||||
|  | +CPU op-mode(s):                  32-bit, 64-bit
 | ||||||
|  | +CPU(s):                          2
 | ||||||
|  | +On-line CPU(s) list:             0,1
 | ||||||
|  | +Thread(s) per core:              1
 | ||||||
|  | +Core(s) per socket:              1
 | ||||||
|  | +Socket(s) per book:              1
 | ||||||
|  | +Book(s) per drawer:              1
 | ||||||
|  | +Drawer(s):                       2
 | ||||||
|  | +NUMA node(s):                    1
 | ||||||
|  | +Vendor ID:                       IBM/S390
 | ||||||
|  | +Machine type:                    2964
 | ||||||
|  | +CPU dynamic MHz:                 5000
 | ||||||
|  | +CPU static MHz:                  5000
 | ||||||
|  | +BogoMIPS:                        3033.00
 | ||||||
|  | +Hypervisor:                      KVM/Linux
 | ||||||
|  | +Hypervisor vendor:               KVM
 | ||||||
|  | +Virtualization type:             full
 | ||||||
|  | +Dispatching mode:                horizontal
 | ||||||
|  | +L1d cache:                       256 KiB
 | ||||||
|  | +L1i cache:                       192 KiB
 | ||||||
|  | +L2d cache:                       4 MiB
 | ||||||
|  | +L2i cache:                       4 MiB
 | ||||||
|  | +L3 cache:                        64 MiB
 | ||||||
|  | +L4 cache:                        480 MiB
 | ||||||
|  | +NUMA node0 CPU(s):               0,1
 | ||||||
|  | +Vulnerability L1tf:              Not affected
 | ||||||
|  | +Vulnerability Meltdown:          Not affected
 | ||||||
|  | +Vulnerability Spec store bypass: Not affected
 | ||||||
|  | +Vulnerability Spectre v1:        Mitigation; __user pointer sanitization
 | ||||||
|  | +Vulnerability Spectre v2:        Mitigation; execute trampolines
 | ||||||
|  | +Flags:                           esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te vx
 | ||||||
|  | +
 | ||||||
|  | +# The following is the parsable format, which can be fed to other
 | ||||||
|  | +# programs. Each different item in every column has an unique ID
 | ||||||
|  | +# starting from zero.
 | ||||||
|  | +# CPU,Core,Socket,Node,,L1d,L1i,L2d,L2i
 | ||||||
|  | +0,0,0,0,,0,0,0,0
 | ||||||
|  | +1,1,1,0,,1,1,1,1
 | ||||||
|  | +
 | ||||||
|  | +# The following is the parsable format, which can be fed to other
 | ||||||
|  | +# programs. Each different item in every column has an unique ID
 | ||||||
|  | +# starting from zero.
 | ||||||
|  | +# CPU,Core,Socket,Node,,L1d,L1i,L2d,L2i
 | ||||||
|  | +0,0,0,0,,0,0,0,0
 | ||||||
|  | +1,1,1,0,,1,1,1,1
 | ||||||
|  | diff --git a/tests/ts/lscpu/dumps/s390-nested-virt.tar.gz b/tests/ts/lscpu/dumps/s390-nested-virt.tar.gz
 | ||||||
|  | new file mode 100644 | ||||||
|  | index 0000000000000000000000000000000000000000..7992699925395ed8d33b1e1466b74fc1aa235268
 | ||||||
|  | GIT binary patch | ||||||
|  | literal 7199 | ||||||
|  | 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 | ||||||
|  | L#Syu9MY;b1+Xr6l | ||||||
|  | 
 | ||||||
|  | literal 0 | ||||||
|  | HcmV?d00001 | ||||||
|  | 
 | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										43
									
								
								SOURCES/0031-chfn-don-t-append-extra-tailing-commas.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								SOURCES/0031-chfn-don-t-append-extra-tailing-commas.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | From 90d4faece26c328c40336a0e02b875515c503e30 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Mon, 19 Aug 2019 14:03:07 +0200 | ||||||
|  | Subject: [PATCH 31/32] chfn: don't append extra tailing commas | ||||||
|  | 
 | ||||||
|  |  # grep kzak /etc/passwd | ||||||
|  |  kzak:x:1000:1000::/home/kzak:/bin/bash | ||||||
|  | 
 | ||||||
|  |  # chfn kzak | ||||||
|  |  ... | ||||||
|  |  grep kzak /etc/passwd | ||||||
|  | 
 | ||||||
|  | old version: | ||||||
|  |  kzak:x:1000:1000:Karel Zak,,,,:/home/kzak:/bin/bash | ||||||
|  | 
 | ||||||
|  | fixed version: | ||||||
|  |  kzak:x:1000:1000:Karel Zak:/home/kzak:/bin/bash | ||||||
|  | 
 | ||||||
|  | Reported-by: Filip Dvorak <fdvorak@redhat.com> | ||||||
|  | References: f723cbf544a7eac2927634f2cb6d802437a2d519 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/9210c0d225fd808da451d86055bf243a8b47a525 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1743555 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  login-utils/chfn.c | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/login-utils/chfn.c b/login-utils/chfn.c
 | ||||||
|  | index c5312fa0c..4f32604c5 100644
 | ||||||
|  | --- a/login-utils/chfn.c
 | ||||||
|  | +++ b/login-utils/chfn.c
 | ||||||
|  | @@ -377,7 +377,7 @@ static int save_new_data(struct chfn_control *ctl)
 | ||||||
|  |  			ctl->newf.other); | ||||||
|  |   | ||||||
|  |  	/* remove trailing empty fields (but not subfields of ctl->newf.other) */ | ||||||
|  | -	if (!ctl->newf.other) {
 | ||||||
|  | +	if (!ctl->newf.other || !*ctl->newf.other) {
 | ||||||
|  |  		while (len > 0 && gecos[len - 1] == ',') | ||||||
|  |  			len--; | ||||||
|  |  		gecos[len] = 0; | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										83
									
								
								SOURCES/0032-tests-add-new-test-for-chfn-gecos.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								SOURCES/0032-tests-add-new-test-for-chfn-gecos.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,83 @@ | |||||||
|  | From 447b7d7222bf8cb3591d611aa51917bd4453f8d6 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Radka Skvarilova <rskvaril@redhat.com> | ||||||
|  | Date: Mon, 16 Dec 2019 10:57:32 +0100 | ||||||
|  | Subject: [PATCH 32/32] tests: add new test for chfn gecos | ||||||
|  | 
 | ||||||
|  | Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=1743555 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/02238bff663ce5fe823980d8119f3871cc348764 | ||||||
|  | Upstream: http://github.com/karelzak/util-linux/commit/b2ef43864f24b1a9c0c67fe2a7177a5110da1b6e | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/commands.sh         |  1 + | ||||||
|  |  tests/expected/chfn/gecos |  6 ++++++ | ||||||
|  |  tests/ts/chfn/gecos       | 36 ++++++++++++++++++++++++++++++++++++ | ||||||
|  |  3 files changed, 43 insertions(+) | ||||||
|  |  create mode 100644 tests/expected/chfn/gecos | ||||||
|  |  create mode 100755 tests/ts/chfn/gecos | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/commands.sh b/tests/commands.sh
 | ||||||
|  | index 93100caf6..b56381c9e 100644
 | ||||||
|  | --- a/tests/commands.sh
 | ||||||
|  | +++ b/tests/commands.sh
 | ||||||
|  | @@ -104,3 +104,4 @@ TS_CMD_UUIDPARSE=${TS_CMD_UUIDPARSE-"${ts_commandsdir}uuidparse"}
 | ||||||
|  |  TS_CMD_WHEREIS=${TS_CMD_WHEREIS-"${ts_commandsdir}whereis"} | ||||||
|  |  TS_CMD_WIPEFS=${TS_CMD_WIPEFS-"${ts_commandsdir}wipefs"} | ||||||
|  |  TS_CMD_CHRT=${TS_CMD_CHRT-"${ts_commandsdir}chrt"} | ||||||
|  | +TS_CMD_CHFN=${TS_CMD_CHFN-"${ts_commandsdir}chfn"}
 | ||||||
|  | diff --git a/tests/expected/chfn/gecos b/tests/expected/chfn/gecos
 | ||||||
|  | new file mode 100644 | ||||||
|  | index 000000000..af7b81b6c
 | ||||||
|  | --- /dev/null
 | ||||||
|  | +++ b/tests/expected/chfn/gecos
 | ||||||
|  | @@ -0,0 +1,6 @@
 | ||||||
|  | +Initialize user
 | ||||||
|  | +testuser_chfn_test:x:9899:9899::/home/testuser_chfn_test:/bin/bash
 | ||||||
|  | +Changing finger information for testuser_chfn_test.
 | ||||||
|  | +
 | ||||||
|  | +Finger information changed.
 | ||||||
|  | +testuser_chfn_test:x:9899:9899:test_gecos:/home/testuser_chfn_test:/bin/bash
 | ||||||
|  | diff --git a/tests/ts/chfn/gecos b/tests/ts/chfn/gecos
 | ||||||
|  | new file mode 100755 | ||||||
|  | index 000000000..aad27d40a
 | ||||||
|  | --- /dev/null
 | ||||||
|  | +++ b/tests/ts/chfn/gecos
 | ||||||
|  | @@ -0,0 +1,36 @@
 | ||||||
|  | +#!/bin/bash
 | ||||||
|  | +
 | ||||||
|  | +#
 | ||||||
|  | +# Copyright (C) 2019 Radka Skvarilova <rskvaril@redhat.com>
 | ||||||
|  | +#
 | ||||||
|  | +# This file is part of util-linux.
 | ||||||
|  | +#
 | ||||||
|  | +# This file is free software; you can redistribute it and/or modify
 | ||||||
|  | +# it under the terms of the GNU General Public License as published by
 | ||||||
|  | +# the Free Software Foundation; either version 2 of the License, or
 | ||||||
|  | +# (at your option) any later version.
 | ||||||
|  | +#
 | ||||||
|  | +# This file is distributed in the hope that it will be useful,
 | ||||||
|  | +# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | ||||||
|  | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | ||||||
|  | +# GNU General Public License for more details.
 | ||||||
|  | +#
 | ||||||
|  | +
 | ||||||
|  | +TS_TOPDIR="${0%/*}/../.."
 | ||||||
|  | +TS_DESC="gecos"
 | ||||||
|  | +
 | ||||||
|  | +. $TS_TOPDIR/functions.sh
 | ||||||
|  | +ts_init "$*"
 | ||||||
|  | +
 | ||||||
|  | +ts_skip_nonroot
 | ||||||
|  | +ts_check_test_command "$TS_CMD_CHFN"
 | ||||||
|  | +ts_check_prog "useradd"
 | ||||||
|  | +ts_check_prog "userdel"
 | ||||||
|  | +
 | ||||||
|  | +ts_log "Initialize user"
 | ||||||
|  | +useradd -u 9899 --shell /bin/bash testuser_chfn_test
 | ||||||
|  | +grep testuser /etc/passwd >> $TS_OUTPUT
 | ||||||
|  | +$TS_CMD_CHFN -f test_gecos testuser_chfn_test >>$TS_OUTPUT
 | ||||||
|  | +grep testuser /etc/passwd >> $TS_OUTPUT
 | ||||||
|  | +userdel --remove testuser_chfn_test &> /dev/null
 | ||||||
|  | +ts_finalize
 | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										83
									
								
								SOURCES/0033-tests-update-lscpu-test-for-RHEL8.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								SOURCES/0033-tests-update-lscpu-test-for-RHEL8.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,83 @@ | |||||||
|  | From b30f84e240bd60a23508797e33a4777cbaa50949 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Tue, 17 Dec 2019 10:53:47 +0100 | ||||||
|  | Subject: [PATCH] tests: update lscpu test for RHEL8 | ||||||
|  | 
 | ||||||
|  | The test is originally from upstream (~v2.35), but RHEL-8 uses older | ||||||
|  | version with a little different output -- RHEL-8 has no vulnerability | ||||||
|  | fields and it counts cache sizes  in different way. | ||||||
|  | 
 | ||||||
|  | Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1739443 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/expected/lscpu/lscpu-s390-nested-virt | 57 ++++++++++----------- | ||||||
|  |  1 file changed, 26 insertions(+), 31 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/expected/lscpu/lscpu-s390-nested-virt b/tests/expected/lscpu/lscpu-s390-nested-virt
 | ||||||
|  | index 2665fd8dc..a6ab04f0b 100644
 | ||||||
|  | --- a/tests/expected/lscpu/lscpu-s390-nested-virt
 | ||||||
|  | +++ b/tests/expected/lscpu/lscpu-s390-nested-virt
 | ||||||
|  | @@ -1,34 +1,29 @@
 | ||||||
|  | -CPU op-mode(s):                  32-bit, 64-bit
 | ||||||
|  | -CPU(s):                          2
 | ||||||
|  | -On-line CPU(s) list:             0,1
 | ||||||
|  | -Thread(s) per core:              1
 | ||||||
|  | -Core(s) per socket:              1
 | ||||||
|  | -Socket(s) per book:              1
 | ||||||
|  | -Book(s) per drawer:              1
 | ||||||
|  | -Drawer(s):                       2
 | ||||||
|  | -NUMA node(s):                    1
 | ||||||
|  | -Vendor ID:                       IBM/S390
 | ||||||
|  | -Machine type:                    2964
 | ||||||
|  | -CPU dynamic MHz:                 5000
 | ||||||
|  | -CPU static MHz:                  5000
 | ||||||
|  | -BogoMIPS:                        3033.00
 | ||||||
|  | -Hypervisor:                      KVM/Linux
 | ||||||
|  | -Hypervisor vendor:               KVM
 | ||||||
|  | -Virtualization type:             full
 | ||||||
|  | -Dispatching mode:                horizontal
 | ||||||
|  | -L1d cache:                       256 KiB
 | ||||||
|  | -L1i cache:                       192 KiB
 | ||||||
|  | -L2d cache:                       4 MiB
 | ||||||
|  | -L2i cache:                       4 MiB
 | ||||||
|  | -L3 cache:                        64 MiB
 | ||||||
|  | -L4 cache:                        480 MiB
 | ||||||
|  | -NUMA node0 CPU(s):               0,1
 | ||||||
|  | -Vulnerability L1tf:              Not affected
 | ||||||
|  | -Vulnerability Meltdown:          Not affected
 | ||||||
|  | -Vulnerability Spec store bypass: Not affected
 | ||||||
|  | -Vulnerability Spectre v1:        Mitigation; __user pointer sanitization
 | ||||||
|  | -Vulnerability Spectre v2:        Mitigation; execute trampolines
 | ||||||
|  | -Flags:                           esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te vx
 | ||||||
|  | +CPU op-mode(s):      32-bit, 64-bit
 | ||||||
|  | +CPU(s):              2
 | ||||||
|  | +On-line CPU(s) list: 0,1
 | ||||||
|  | +Thread(s) per core:  1
 | ||||||
|  | +Core(s) per socket:  1
 | ||||||
|  | +Socket(s) per book:  1
 | ||||||
|  | +Book(s) per drawer:  1
 | ||||||
|  | +Drawer(s):           2
 | ||||||
|  | +NUMA node(s):        1
 | ||||||
|  | +Vendor ID:           IBM/S390
 | ||||||
|  | +Machine type:        2964
 | ||||||
|  | +CPU dynamic MHz:     5000
 | ||||||
|  | +CPU static MHz:      5000
 | ||||||
|  | +BogoMIPS:            3033.00
 | ||||||
|  | +Hypervisor:          KVM/Linux
 | ||||||
|  | +Hypervisor vendor:   KVM
 | ||||||
|  | +Virtualization type: full
 | ||||||
|  | +Dispatching mode:    horizontal
 | ||||||
|  | +L1d cache:           128K
 | ||||||
|  | +L1i cache:           96K
 | ||||||
|  | +L2d cache:           2048K
 | ||||||
|  | +L2i cache:           2048K
 | ||||||
|  | +L3 cache:            65536K
 | ||||||
|  | +L4 cache:            491520K
 | ||||||
|  | +NUMA node0 CPU(s):   0,1
 | ||||||
|  | +Flags:               esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te vx
 | ||||||
|  |   | ||||||
|  |  # The following is the parsable format, which can be fed to other | ||||||
|  |  # programs. Each different item in every column has an unique ID | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,91 @@ | |||||||
|  | From 60f97394878d8b540ee6a4fb9c9edaae2f90d0d0 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Karel Zak <kzak@redhat.com> | ||||||
|  | Date: Tue, 17 Dec 2019 18:10:31 +0100 | ||||||
|  | Subject: [PATCH] tests: (fdisk) make sure we use the same sizes for MD devices | ||||||
|  | 
 | ||||||
|  | It seems on some kernels MD can return error if the devices in RAID | ||||||
|  | have different size | ||||||
|  | 
 | ||||||
|  |  # mdadm -q --create /dev/md8 --chunk=64 --level=0 --raid-devices=2 /dev/sda1 /dev/sda2 | ||||||
|  |  mdadm: RUN_ARRAY failed: Unknown error 524 | ||||||
|  | 
 | ||||||
|  |  # dmesg | ||||||
|  |  ... | ||||||
|  |  [ 1485.148435] md/raid0:md8: cannot assemble multi-zone RAID0 with default_layout setting | ||||||
|  |  [ 1485.152306] md/raid0: please set raid.default_layout to 1 or 2 | ||||||
|  |  [ 1485.154050] md: pers->run() failed ... | ||||||
|  |  [ 1485.154104] md: md8 stopped. | ||||||
|  | 
 | ||||||
|  | Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1784534 | ||||||
|  | Signed-off-by: Karel Zak <kzak@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  tests/expected/fdisk/align-512-4K-md | 12 ++++++------ | ||||||
|  |  tests/ts/fdisk/align-512-4K-md       |  4 ++-- | ||||||
|  |  2 files changed, 8 insertions(+), 8 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/expected/fdisk/align-512-4K-md b/tests/expected/fdisk/align-512-4K-md
 | ||||||
|  | index caca03154..3690c04c2 100644
 | ||||||
|  | --- a/tests/expected/fdisk/align-512-4K-md
 | ||||||
|  | +++ b/tests/expected/fdisk/align-512-4K-md
 | ||||||
|  | @@ -16,7 +16,7 @@ Created a new <removed>.
 | ||||||
|  |  Command (m for help): Partition type | ||||||
|  |     p   primary (1 primary, 0 extended, 3 free) | ||||||
|  |     e   extended (container for logical partitions) | ||||||
|  | -Select (default p): Partition number (2-4, default 2): First sector (43008-102399, default 43008): Last sector, +sectors or +size{K,M,G,T,P} (43008-102399, default 102399): 
 | ||||||
|  | +Select (default p): Partition number (2-4, default 2): First sector (51199-102399, default 51200): Last sector, +sectors or +size{K,M,G,T,P} (51200-102399, default 102399): 
 | ||||||
|  |  Created a new <removed>. | ||||||
|  |   | ||||||
|  |  Command (m for help): Disk <removed>: 50 MiB, 52428800 bytes, 102400 sectors | ||||||
|  | @@ -27,8 +27,8 @@ Disklabel type: dos
 | ||||||
|  |  Disk identifier: <removed> | ||||||
|  |   | ||||||
|  |  Device     Boot Start    End Sectors Size Id Type | ||||||
|  | -<removed>1        2048  43007   40960  20M 83 Linux
 | ||||||
|  | -<removed>2       43008 102399   59392  29M 83 Linux
 | ||||||
|  | +<removed>1        2048  51198   49151  24M 83 Linux
 | ||||||
|  | +<removed>2       51200 100350   49151  24M 83 Linux
 | ||||||
|  |   | ||||||
|  |  Command (m for help): The partition table has been altered. | ||||||
|  |  Calling ioctl() to re-read partition table. | ||||||
|  | @@ -49,16 +49,16 @@ Created a new <removed>.
 | ||||||
|  |  Command (m for help): Partition type | ||||||
|  |     p   primary (0 primary, 0 extended, 4 free) | ||||||
|  |     e   extended (container for logical partitions) | ||||||
|  | -Select (default p): Partition number (1-4, default 1): First sector (2048-100095, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-100095, default 100095): 
 | ||||||
|  | +Select (default p): Partition number (1-4, default 1): First sector (2048-97791, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-97791, default 97791): 
 | ||||||
|  |  Created a new <removed>. | ||||||
|  |   | ||||||
|  |  Command (m for help): Partition type | ||||||
|  |     p   primary (1 primary, 0 extended, 3 free) | ||||||
|  |     e   extended (container for logical partitions) | ||||||
|  | -Select (default p): Partition number (2-4, default 2): First sector (22528-100095, default 22528): Last sector, +sectors or +size{K,M,G,T,P} (22528-100095, default 100095): 
 | ||||||
|  | +Select (default p): Partition number (2-4, default 2): First sector (22528-97791, default 22528): Last sector, +sectors or +size{K,M,G,T,P} (22528-97791, default 97791): 
 | ||||||
|  |  Created a new <removed>. | ||||||
|  |   | ||||||
|  | -Command (m for help): Disk <removed>: 48.9 MiB, 51249152 bytes, 100096 sectors
 | ||||||
|  | +Command (m for help): Disk <removed>: 47.8 MiB, 50069504 bytes, 97792 sectors
 | ||||||
|  |  Units: sectors of 1 * 512 = 512 bytes | ||||||
|  |  Sector size (logical/physical): 512 bytes / 4096 bytes | ||||||
|  |  I/O size (minimum/optimal): 65536 bytes / <removed> bytes | ||||||
|  | diff --git a/tests/ts/fdisk/align-512-4K-md b/tests/ts/fdisk/align-512-4K-md
 | ||||||
|  | index 7f60a654f..68aaff0b7 100755
 | ||||||
|  | --- a/tests/ts/fdisk/align-512-4K-md
 | ||||||
|  | +++ b/tests/ts/fdisk/align-512-4K-md
 | ||||||
|  | @@ -41,12 +41,12 @@ n
 | ||||||
|  |  p | ||||||
|  |  1 | ||||||
|  |   | ||||||
|  | -+20M
 | ||||||
|  | ++49150
 | ||||||
|  |  n | ||||||
|  |  p | ||||||
|  |  2 | ||||||
|  |   | ||||||
|  | -
 | ||||||
|  | ++49150
 | ||||||
|  |  p | ||||||
|  |  w | ||||||
|  |  q | ||||||
|  | -- 
 | ||||||
|  | 2.21.0 | ||||||
|  | 
 | ||||||
							
								
								
									
										2
									
								
								SOURCES/adjtime
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								SOURCES/adjtime
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | 0.0 0 0.0 | ||||||
|  | 0 | ||||||
							
								
								
									
										8
									
								
								SOURCES/util-linux-60-raw.rules
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								SOURCES/util-linux-60-raw.rules
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | # | ||||||
|  | # Enter raw device bindings here. | ||||||
|  | # | ||||||
|  | # An example would be: | ||||||
|  | #   ACTION=="add", KERNEL=="sda", RUN+="/usr/bin/raw /dev/raw/raw1 %N" | ||||||
|  | # to bind /dev/raw/raw1 to /dev/sda, or | ||||||
|  | #   ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/usr/bin/raw /dev/raw/raw2 %M %m" | ||||||
|  | # to bind /dev/raw/raw2 to the device with major 8, minor 1. | ||||||
							
								
								
									
										6
									
								
								SOURCES/util-linux-chsh-chfn.pamd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								SOURCES/util-linux-chsh-chfn.pamd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | #%PAM-1.0 | ||||||
|  | auth       sufficient   pam_rootok.so | ||||||
|  | auth       include      system-auth | ||||||
|  | account    include      system-auth | ||||||
|  | password   include      system-auth | ||||||
|  | session    include      system-auth | ||||||
							
								
								
									
										17
									
								
								SOURCES/util-linux-login.pamd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								SOURCES/util-linux-login.pamd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | #%PAM-1.0 | ||||||
|  | auth       substack     system-auth | ||||||
|  | auth       include      postlogin | ||||||
|  | account    required     pam_nologin.so | ||||||
|  | account    include      system-auth | ||||||
|  | password   include      system-auth | ||||||
|  | # pam_selinux.so close should be the first session rule | ||||||
|  | session    required     pam_selinux.so close | ||||||
|  | session    required     pam_loginuid.so | ||||||
|  | session    optional     pam_console.so | ||||||
|  | # pam_selinux.so open should only be followed by sessions to be executed in the user context | ||||||
|  | session    required     pam_selinux.so open | ||||||
|  | session    required     pam_namespace.so | ||||||
|  | session    optional     pam_keyinit.so force revoke | ||||||
|  | session    include      system-auth | ||||||
|  | session    include      postlogin | ||||||
|  | -session   optional     pam_ck_connector.so | ||||||
							
								
								
									
										15
									
								
								SOURCES/util-linux-remote.pamd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								SOURCES/util-linux-remote.pamd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | #%PAM-1.0 | ||||||
|  | auth       substack     password-auth | ||||||
|  | auth       include      postlogin | ||||||
|  | account    required     pam_nologin.so | ||||||
|  | account    include      password-auth | ||||||
|  | password   include      password-auth | ||||||
|  | # pam_selinux.so close should be the first session rule | ||||||
|  | session    required     pam_selinux.so close | ||||||
|  | session    required     pam_loginuid.so | ||||||
|  | # pam_selinux.so open should only be followed by sessions to be executed in the user context | ||||||
|  | session    required     pam_selinux.so open | ||||||
|  | session    required     pam_namespace.so | ||||||
|  | session    optional     pam_keyinit.so force revoke | ||||||
|  | session    include      password-auth | ||||||
|  | session    include      postlogin | ||||||
							
								
								
									
										5
									
								
								SOURCES/util-linux-runuser-l.pamd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								SOURCES/util-linux-runuser-l.pamd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | #%PAM-1.0 | ||||||
|  | auth		include		runuser | ||||||
|  | session		optional	pam_keyinit.so force revoke | ||||||
|  | -session	optional	pam_systemd.so | ||||||
|  | session		include		runuser | ||||||
							
								
								
									
										5
									
								
								SOURCES/util-linux-runuser.pamd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								SOURCES/util-linux-runuser.pamd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | #%PAM-1.0 | ||||||
|  | auth		sufficient	pam_rootok.so | ||||||
|  | session		optional	pam_keyinit.so revoke | ||||||
|  | session		required	pam_limits.so | ||||||
|  | session		required	pam_unix.so | ||||||
							
								
								
									
										6
									
								
								SOURCES/util-linux-su-l.pamd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								SOURCES/util-linux-su-l.pamd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | #%PAM-1.0 | ||||||
|  | auth		include		su | ||||||
|  | account		include		su | ||||||
|  | password	include		su | ||||||
|  | session		optional	pam_keyinit.so force revoke | ||||||
|  | session		include		su | ||||||
							
								
								
									
										15
									
								
								SOURCES/util-linux-su.pamd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								SOURCES/util-linux-su.pamd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | #%PAM-1.0 | ||||||
|  | auth		required	pam_env.so | ||||||
|  | auth		sufficient	pam_rootok.so | ||||||
|  | # Uncomment the following line to implicitly trust users in the "wheel" group. | ||||||
|  | #auth		sufficient	pam_wheel.so trust use_uid | ||||||
|  | # Uncomment the following line to require a user to be in the "wheel" group. | ||||||
|  | #auth		required	pam_wheel.so use_uid | ||||||
|  | auth		substack	system-auth | ||||||
|  | auth		include		postlogin | ||||||
|  | account		sufficient	pam_succeed_if.so uid = 0 use_uid quiet | ||||||
|  | account		include		system-auth | ||||||
|  | password	include		system-auth | ||||||
|  | session		include		system-auth | ||||||
|  | session		include		postlogin | ||||||
|  | session		optional	pam_xauth.so | ||||||
							
								
								
									
										3140
									
								
								SPECS/util-linux.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3140
									
								
								SPECS/util-linux.spec
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user