rpms/udev/devel 0026-remove-extra-space-from-udevinfo-symlink-output.patch, NONE, 1.1 0027-udevinfo-simplify-symlink-printing-logic.patch, NONE, 1.1 0028-prevent-wrong-symlink-creation-if-database-disagress.patch, NONE, 1.1 0029-fix-wrong-variable-used-in-logged-string.patch, NONE, 1.1 0030-update-README.patch, NONE, 1.1 0031-rule_generator-move-all-policy-from-write_net_rules.patch, NONE, 1.1 udev.spec, 1.220, 1.221 0026-Removed-extra-space-from-udevinfo-symlink-output.patch, 1.1, NONE

Harald Hoyer (harald) fedora-extras-commits at redhat.com
Fri Sep 21 16:32:48 UTC 2007


Author: harald

Update of /cvs/pkgs/rpms/udev/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv22796

Modified Files:
	udev.spec 
Added Files:
	0026-remove-extra-space-from-udevinfo-symlink-output.patch 
	0027-udevinfo-simplify-symlink-printing-logic.patch 
	0028-prevent-wrong-symlink-creation-if-database-disagress.patch 
	0029-fix-wrong-variable-used-in-logged-string.patch 
	0030-update-README.patch 
	0031-rule_generator-move-all-policy-from-write_net_rules.patch 
Removed Files:
	0026-Removed-extra-space-from-udevinfo-symlink-output.patch 
Log Message:
* Fri Sep 21 2007 Harald Hoyer <harald at redhat.com> - 115-4
- more upstream fixes from git


0026-remove-extra-space-from-udevinfo-symlink-output.patch:

--- NEW FILE 0026-remove-extra-space-from-udevinfo-symlink-output.patch ---
>From c952356635a30f610a4d1b84e84d678fee7772c8 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald at redhat.com>
Date: Thu, 20 Sep 2007 15:24:42 +0200
Subject: [PATCH] remove extra space from udevinfo symlink output

---
 udevinfo.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/udevinfo.c b/udevinfo.c
index be9aa76..8e54705 100644
--- a/udevinfo.c
+++ b/udevinfo.c
@@ -389,10 +389,16 @@ int main(int argc, char *argv[], char *envp[])
 				goto exit;
 			if (root)
 				list_for_each_entry(name_loop, &udev->symlink_list, node)
-					printf("%s/%s ", udev_root, name_loop->name);
+					if (name_loop->node.next != &udev->symlink_list)
+						printf("%s/%s ", udev_root, name_loop->name);
+					else
+						printf("%s/%s", udev_root, name_loop->name);
 			else
 				list_for_each_entry(name_loop, &udev->symlink_list, node)
-					printf("%s ", name_loop->name);
+					if (name_loop->node.next != &udev->symlink_list)
+						printf("%s ", name_loop->name);
+					else
+						printf("%s", name_loop->name);
 			printf("\n");
 			break;
 		case QUERY_PATH:
-- 
1.5.2.4


0027-udevinfo-simplify-symlink-printing-logic.patch:

--- NEW FILE 0027-udevinfo-simplify-symlink-printing-logic.patch ---
>From 18770246edda383eef523a7e3aedd08ebbbde5cf Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Thu, 20 Sep 2007 15:25:29 +0200
Subject: [PATCH] udevinfo: simplify symlink printing logic

---
 udevinfo.c |   23 ++++++++---------------
 1 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/udevinfo.c b/udevinfo.c
index 8e54705..eb9b353 100644
--- a/udevinfo.c
+++ b/udevinfo.c
@@ -385,21 +385,14 @@ int main(int argc, char *argv[], char *envp[])
 				printf("%s\n", udev->name);
 			break;
 		case QUERY_SYMLINK:
-			if (list_empty(&udev->symlink_list))
-				goto exit;
-			if (root)
-				list_for_each_entry(name_loop, &udev->symlink_list, node)
-					if (name_loop->node.next != &udev->symlink_list)
-						printf("%s/%s ", udev_root, name_loop->name);
-					else
-						printf("%s/%s", udev_root, name_loop->name);
-			else
-				list_for_each_entry(name_loop, &udev->symlink_list, node)
-					if (name_loop->node.next != &udev->symlink_list)
-						printf("%s ", name_loop->name);
-					else
-						printf("%s", name_loop->name);
-			printf("\n");
+			list_for_each_entry(name_loop, &udev->symlink_list, node) {
+				char c = name_loop->node.next != &udev->symlink_list ? ' ' : '\n';
+
+				if (root)
+					printf("%s/%s%c", udev_root, name_loop->name, c);
+				else
+					printf("%s%c", name_loop->name, c);
+			}
 			break;
 		case QUERY_PATH:
 			printf("%s\n", udev->dev->devpath);
-- 
1.5.2.4


0028-prevent-wrong-symlink-creation-if-database-disagress.patch:

--- NEW FILE 0028-prevent-wrong-symlink-creation-if-database-disagress.patch ---
>From b2d1ae727e78ac3e22caa11798360d87775095ff Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Thu, 20 Sep 2007 19:38:58 +0200
Subject: [PATCH] prevent wrong symlink creation if database disagress with current rules

---
 udev_node.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/udev_node.c b/udev_node.c
index 556a442..c620e4a 100644
--- a/udev_node.c
+++ b/udev_node.c
@@ -218,14 +218,16 @@ static int update_link(struct udevice *udev, const char *name)
 		if (strcmp(udev->dev->devpath, device->name) == 0) {
 			info("compare (our own) priority of '%s' %i >= %i",
 			     udev->dev->devpath, udev->link_priority, priority);
-			if (target[0] == '\0' || udev->link_priority >= priority) {
+			if (strcmp(udev->name, name) == 0) {
+				info("'%s' is our device node, database inconsistent, skip link update", udev->name);
+			} else if (target[0] == '\0' || udev->link_priority >= priority) {
 				priority = udev->link_priority;
 				strlcpy(target, udev->name, sizeof(target));
 			}
 			continue;
 		}
 
-		/* or something else, then read priority from database */
+		/* another device, read priority from database */
 		udev_db = udev_device_init(NULL);
 		if (udev_db == NULL)
 			continue;
-- 
1.5.2.4


0029-fix-wrong-variable-used-in-logged-string.patch:

--- NEW FILE 0029-fix-wrong-variable-used-in-logged-string.patch ---
>From 3a3d078cfd3a3adb1c9f66e0df95d704c3a92504 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Fri, 21 Sep 2007 00:55:19 +0200
Subject: [PATCH] fix wrong variable used in logged string

---
 udev_rules.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/udev_rules.c b/udev_rules.c
index 3ec8477..5ae4aa2 100644
--- a/udev_rules.c
+++ b/udev_rules.c
@@ -1446,7 +1446,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udev)
 	}
 
 	if (!name_set) {
-		info("no node name set, will use kernel name '%s'", udev->name);
+		info("no node name set, will use kernel name '%s'", udev->dev->kernel);
 		strlcpy(udev->name, udev->dev->kernel, sizeof(udev->name));
 	}
 
-- 
1.5.2.4


0030-update-README.patch:

--- NEW FILE 0030-update-README.patch ---
>From b317b96c15bc61d59f138515e71f05bbd8f7b2ff Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Fri, 21 Sep 2007 10:33:36 +0200
Subject: [PATCH] update README

---
 README |   13 +++++--------
 1 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/README b/README
index 74aa790..b37d0d5 100644
--- a/README
+++ b/README
@@ -3,13 +3,10 @@ udev - userspace device management
 For more information see the files in the docs/ directory.
 
 Important Note:
-  Integrating udev in the system is a whole lot of work, has complex dependencies
-  and differs a lot from distro to distro. All major distros depend on udev these
-  days and the system may not work without a proper installed version. The upstream
-  udev project does not support or recommend to replace a distro's udev installation
-  with the upstream version. The installation of a unmodified upstream version may
-  render your system unusable. Until now, there is no "default" setup or a set of
-  "default" rules provided by the upstream udev version.
+  Integrating udev in the system has complex dependencies and differs from distro
+  to distro. All major distros depend on udev these days and the system may not
+  work without a properly installed version. The upstream udev project does not
+  recommend to replace a distro's udev installation with the upstream version.
 
 Requirements:
   - Version 2.6.15 of the Linux kernel for reliable operation of this release of
@@ -21,7 +18,7 @@ Requirements:
     but it is completely silly - don't complain if anything goes wrong.)
 
   - The proc filesystem must be mounted on /proc, the sysfs filesystem must
-    be mounted at /sys. No other location will be supported by udev.
+    be mounted at /sys. No other location is supported by udev.
 
 
 Operation:
-- 
1.5.2.4


0031-rule_generator-move-all-policy-from-write_net_rules.patch:

--- NEW FILE 0031-rule_generator-move-all-policy-from-write_net_rules.patch ---
>From c746922ca26fe18f6b3f3a4516e7236bfc0106b7 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Fri, 21 Sep 2007 17:42:46 +0200
Subject: [PATCH] rule_generator: move all policy from write_net_rules to the rules file

---
 .../75-persistent-net-generator.rules              |   43 ++++++--
 extras/rule_generator/write_net_rules              |  119 +++++++++-----------
 2 files changed, 84 insertions(+), 78 deletions(-)

diff --git a/extras/rule_generator/75-persistent-net-generator.rules b/extras/rule_generator/75-persistent-net-generator.rules
index f88627d..d09bc38 100644
--- a/extras/rule_generator/75-persistent-net-generator.rules
+++ b/extras/rule_generator/75-persistent-net-generator.rules
@@ -1,33 +1,56 @@
 # do not edit this file, it will be overwritten on update
 
 # these rules generate rules for persistent network device naming
+#
+# variables used to communicate:
+#   MATCHADDR             MAC address used for the match
+#   MATCHID               bus_id used for the match
+#   MATCHDRV              driver name used for the match
+#   MATCHIFTYPE           interface type match
+#   COMMENT               comment to add to the generated rule
+#   INTERFACE_NAME        requested name supplied by external tool
+#   INTERFACE_NEW         new interface name returned by rule writer
 
 ACTION!="add", GOTO="persistent_net_generator_end"
 SUBSYSTEM!="net", GOTO="persistent_net_generator_end"
 
-# device name whitelist
-KERNEL!="eth*|ath*|wlan*|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end"
-
 # ignore the interface if a name has already been set
 NAME=="?*", GOTO="persistent_net_generator_end"
 
+# device name whitelist
+KERNEL!="eth*|ath*|wlan*[0-9]|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end"
+
+# add interface type match for some devices
+KERNEL=="wlan*|ath*", ENV{MATCHIFTYPE}="1"
+
 # ignore Xen virtual interfaces
 SUBSYSTEMS=="xen", GOTO="persistent_net_generator_end"
 
-# build device description string to add a comment to the generated rule
+# read MAC address
+ENV{MATCHADDR}="$attr{address}"
+
+# do not use "locally administered" MAC address
+ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""
+
+# do not use empty address
+ENV{MATCHADDR}=="00:00:00:00:00:00", ENV{MATCHADDR}=""
+
+# build comment line for generated rule:
 SUBSYSTEMS=="pci", ENV{COMMENT}="PCI device $attr{vendor}:$attr{device} ($driver)"
 SUBSYSTEMS=="usb", ENV{COMMENT}="USB device 0x$attr{idVendor}:0x$attr{idProduct} ($driver)"
 SUBSYSTEMS=="pcmcia", ENV{COMMENT}="PCMCIA device $attr{card_id}:$attr{manf_id} ($driver)"
-SUBSYSTEMS=="ccwgroup", ENV{COMMENT}="S/390 $driver device at $id", ENV{NETDEV}="$id", ENV{NETDRV}="$driver"
 SUBSYSTEMS=="ieee1394", ENV{COMMENT}="Firewire device $attr{host_id})"
-ENV{COMMENT}=="", ENV{COMMENT}="$env{SUBSYSTEM} device ($driver)"
 
-DRIVERS=="?*", ENV{NETDEV}=="?*", IMPORT{program}="write_net_rules --driver $env{NETDRV} --id $env{NETDEV}"
+# S/390 uses id matches only, do not use MAC address match
+SUBSYSTEMS=="ccwgroup", ENV{COMMENT}="S/390 $driver device at $id", ENV{MATCHID}="$id", ENV{MATCHDRV}="$driver", ENV{MATCHADDR}=""
+
+# default comment
+ENV{COMMENT}=="", ENV{COMMENT}="$env{SUBSYSTEM} device"
 
-# skip "locally administered" MAC addresses
-ATTR{address}=="?[2367abef]:*", GOTO="persistent_net_generator_end"
+# write rule
+DRIVERS=="?*", IMPORT{program}="write_net_rules"
 
-DRIVERS=="?*", ENV{NETDEV}!="?*", IMPORT{program}="write_net_rules $attr{address}"
+# rename interface if needed
 ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}"
 
 LABEL="persistent_net_generator_end"
diff --git a/extras/rule_generator/write_net_rules b/extras/rule_generator/write_net_rules
index 62acb88..b25ecfd 100644
--- a/extras/rule_generator/write_net_rules
+++ b/extras/rule_generator/write_net_rules
@@ -1,20 +1,25 @@
 #!/bin/sh -e
 #
-# This script is run if the interface (recognized by its MAC address) lacks
-# a rule for persistent naming.
-#
-# If there is already a persistent rule with that interface name then the
-# current interface needs to be renamed.
-#
-# If the interface needs to be renamed, a NAME=value pair will be printed
-# on stdout to allow udev to IMPORT it. Then a rule for the MAC address and
-# interface name is written.
-#
-# (C) 2006 Marco d'Itri <md at Linux.IT>
+# Copyright (C) 2006 Marco d'Itri <md at Linux.IT>
+# Copyright (C) 2007 Kay Sievers <kay.sievers at vrfy.org>
 #
 # This program 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 version 2 of the License.
+#
+# This script is run to create persistent network device naming rules
+# based on properties of the device.
+# If the interface needs to be renamed, INTERFACE_NEW=<name> will be printed
+# on stdout to allow udev to IMPORT it.
+
+# variables used to communicate:
+#   MATCHADDR             MAC address used for the match
+#   MATCHID               bus_id used for the match
+#   MATCHDRV              driver name used for the match
+#   MATCHIFTYPE           interface type match
+#   COMMENT               comment to add to the generated rule
+#   INTERFACE_NAME        requested name supplied by external tool
+#   INTERFACE_NEW         new interface name returned by rule writer
 
 RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
 
@@ -49,78 +54,57 @@ write_rule() {
 
 	echo ""
 	[ "$comment" ] && echo "# $comment"
-	echo "SUBSYSTEM==\"net\", $match, NAME=\"$name\""
+	echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\""
 	} >> $RULES_FILE
 }
 
 if [ -z "$INTERFACE" ]; then
-	echo "Missing \$INTERFACE." >&2
+	echo "missing \$INTERFACE" >&2
 	exit 1
 fi
 
-if [ "$1" ]; then
-    while [ "$*" ] ; do
-	case $1 in
-	    --mac)
-		shift
-		MAC_ADDR=$1
-		shift
-		;;
-	    --driver)
-		shift
-		DRIVER=$1
-		shift
-		;;
-	    --id)
-		shift
-		ID=$1
-		shift
-		;;
-	    *)
-		MAC_ADDR=$1
-		shift
-		;;
-	esac
-    done
-else
-    MAC_ADDR=$(sysread address)
-fi
-
-if [ -z "$DRIVER" ] && [ -z "$ID" ] ; then
-    if [ -z "$MAC_ADDR" ]; then
-	echo "No MAC address for $INTERFACE." >&2
-	exit 1
-    fi
-    if [ "$MAC_ADDR" = "00:00:00:00:00:00" ]; then
-	echo "NULL MAC address for $INTERFACE." >&2
-	exit 1
-    fi
-fi
-
 # Prevent concurrent processes from modifying the file at the same time.
 lock_rules_file
 
 # Check if the rules file is writeable.
 choose_rules_file
 
-# If a rule using the current name already exists then find a new name and
-# report it to udev which will rename the interface.
-basename=${INTERFACE%%[0-9]*}
-if interface_name_taken; then
-	INTERFACE="$basename$(find_next_available "$basename[0-9]*")"
-	if [ ! -t 1 ]; then
-		echo "INTERFACE_NEW=$INTERFACE"
-	fi
+# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
+if [ "$MATCHADDR" ]; then
+	match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\""
 fi
 
-# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
-if [ "$MAC_ADDR" ] ; then
-    match="DRIVERS==\"?*\", ATTR{address}==\"$MAC_ADDR\""
-else
-    match="DRIVERS==\"$DRIVER\", KERNELS==\"$ID\""
+if [ "$MATCHDRV" ]; then
+	match="$match, DRIVERS==\"$MATCHDRV\""
+fi
+
+if [ "$MATCHID" ]; then
+	match="$match, KERNELS==\"$MATCHID\""
+fi
+
+if [ "$MATCHIFTYPE" ]; then
+	match="$match, ATTR{type}==\"$MATCHIFTYPE\""
 fi
-if [ $basename = "ath" -o $basename = "wlan" ]; then
-	match="$match, ATTR{type}==\"1\"" # do not match the wifi* interfaces
+
+if [ -z "$match" ]; then
+	echo "missing valid match" >&2
+	exit 1
+fi
+
+if [ "$INTERFACE_NAME" ]; then
+	# external tools may request a custom name
+	COMMENT="$COMMENT (custom name provided by external tool)"
+	if [ "$INTERFACE_NAME" != "$INTERFACE" ]; then
+		INTERFACE=$INTERFACE_NAME;
+		echo "INTERFACE_NEW=$INTERFACE"
+	fi
+else
+	# if a rule using the current name already exists, find a new name
+	basename=${INTERFACE%%[0-9]*}
+	if interface_name_taken; then
+		INTERFACE="$basename$(find_next_available "$basename[0-9]*")"
+		echo "INTERFACE_NEW=$INTERFACE"
+	fi
 fi
 
 write_rule "$match" "$INTERFACE" "$COMMENT"
@@ -128,4 +112,3 @@ write_rule "$match" "$INTERFACE" "$COMMENT"
 unlock_rules_file
 
 exit 0
-
-- 
1.5.2.4



Index: udev.spec
===================================================================
RCS file: /cvs/pkgs/rpms/udev/devel/udev.spec,v
retrieving revision 1.220
retrieving revision 1.221
diff -u -r1.220 -r1.221
--- udev.spec	20 Sep 2007 12:27:11 -0000	1.220
+++ udev.spec	21 Sep 2007 16:32:15 -0000	1.221
@@ -6,7 +6,7 @@
 Summary: A userspace implementation of devfs
 Name: udev
 Version: 115
-Release: 3.20070920git%{?dist}
+Release: 4.20070921git%{?dist}
 License: GPLv2
 Group: System Environment/Base
 Provides: udev-persistent = %{version}-%{release}
@@ -44,6 +44,12 @@
 Patch24: 0024-use-SEQNUM-in-dev-.udev-queue-instead-of-devpath.patch
 Patch25: 0025-rules-add-memstick-module-loading.patch
 Patch26: 0026-Removed-extra-space-from-udevinfo-symlink-output.patch
+Patch26: 0026-remove-extra-space-from-udevinfo-symlink-output.patch
+Patch27: 0027-udevinfo-simplify-symlink-printing-logic.patch
+Patch28: 0028-prevent-wrong-symlink-creation-if-database-disagress.patch
+Patch29: 0029-fix-wrong-variable-used-in-logged-string.patch
+Patch30: 0030-update-README.patch
+Patch31: 0031-rule_generator-move-all-policy-from-write_net_rules.patch
 
 Patch100: udev-089-nopie.patch
 Patch101: udev-091-lib64.patch
@@ -118,6 +124,11 @@
 %patch22 -p1 -b .git22
 %patch25 -p1 -b .git25
 %patch26 -p1 -b .git26
+%patch27 -p1 -b .git27
+%patch28 -p1 -b .git28
+%patch29 -p1 -b .git29
+%patch30 -p1 -b .git30
+%patch31 -p1 -b .git31
 
 %patch100 -p1 -b .nopie
 %patch101 -p1 -b .lib64
@@ -402,6 +413,9 @@
 %{_libdir}/pkgconfig/libvolume_id.pc 
 
 %changelog
+* Fri Sep 21 2007 Harald Hoyer <harald at redhat.com> - 115-4
+- more upstream fixes from git
+
 * Thu Sep 20 2007 Harald Hoyer <harald at redhat.com> - 115-3
 - some upstream fixes from git
 - removed last_rule for loop rules


--- 0026-Removed-extra-space-from-udevinfo-symlink-output.patch DELETED ---




More information about the fedora-extras-commits mailing list