From 99692aaa9b9a2ba23ac10ddfed736bbee26e2f218d830f49c432528d4fe226fa Mon Sep 17 00:00:00 2001 From: Robert Milasan Date: Thu, 25 Apr 2013 08:33:19 +0000 Subject: [PATCH] Accepting request 173325 from home:rmilasan:branches:Base:System - Rename remaning udev patches (clean-up). - Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at boot time not from udev (bnc#761109). - Drop unused patches: 1001-Reinstate-TIMEOUT-handling.patch 1005-udev-fix-sg-autoload-regression.patch 1026-re-add-persistent-net.patch - Rename remaning udev patches (clean-up). - Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at boot time not from udev (bnc#761109). - Drop unused patches: 1001-Reinstate-TIMEOUT-handling.patch 1005-udev-fix-sg-autoload-regression.patch 1026-re-add-persistent-net.patch OBS-URL: https://build.opensuse.org/request/show/173325 OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=371 --- 1001-Reinstate-TIMEOUT-handling.patch | 129 ------ ...enable-by_path-links-for-ata-devices.patch | 0 ...ate-by-id-scsi-links-for-ATA-devices.patch | 0 ...atch => 1003-udev-netlink-null-rules.patch | 10 +- ...fix.patch => 1004-fix-devname-prefix.patch | 10 +- ...fault-links-for-primary-cd_dvd-drive.patch | 0 1005-udev-fix-sg-autoload-regression.patch | 22 - ...h => 1006-udev-always-rename-network.patch | 0 1026-re-add-persistent-net.patch | 421 ------------------ systemd-mini.changes | 11 + systemd-mini.spec | 47 +- systemd.changes | 11 + systemd.spec | 47 +- 13 files changed, 76 insertions(+), 632 deletions(-) delete mode 100644 1001-Reinstate-TIMEOUT-handling.patch rename 1002-re-enable-by_path-links-for-ata-devices.patch => 1001-re-enable-by_path-links-for-ata-devices.patch (100%) rename 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch => 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch (100%) rename 1004-udev-netlink-null-rules.patch => 1003-udev-netlink-null-rules.patch (75%) rename 1007-fix-devname-prefix.patch => 1004-fix-devname-prefix.patch (70%) rename 1021-create-default-links-for-primary-cd_dvd-drive.patch => 1005-create-default-links-for-primary-cd_dvd-drive.patch (100%) delete mode 100644 1005-udev-fix-sg-autoload-regression.patch rename 1027-udev-always-rename-network.patch => 1006-udev-always-rename-network.patch (100%) delete mode 100644 1026-re-add-persistent-net.patch diff --git a/1001-Reinstate-TIMEOUT-handling.patch b/1001-Reinstate-TIMEOUT-handling.patch deleted file mode 100644 index 775c0a07..00000000 --- a/1001-Reinstate-TIMEOUT-handling.patch +++ /dev/null @@ -1,129 +0,0 @@ -From: Robert Milasan -Date: Thu, 11 Apr 2013 15:39:39 +0200 -Subject: Reinstate TIMEOUT handling - -Without treating events with timeouts specially some drivers would -cause a 30 seconds stall on boot: . - -I also received reports of some drivers not working at all, even -after the timeout. - -We will remove this patch when more drivers have been fixed in -the kernel (3.4?). - -This reverts 43d5c5f03645c4b842659f9b5bd0ae465e885e92 and -57c6f8ae5f52a6e8ffc66a54966346f733dded39. ---- - src/libudev/libudev-device.c | 19 +++++++++++++++++++ - src/libudev/libudev-private.h | 1 + - src/udev/udevd.c | 13 ++++++++++--- - 3 files changed, 30 insertions(+), 3 deletions(-) - -diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c -index 6bb2e41..4fdd242 100644 ---- a/src/libudev/libudev-device.c -+++ b/src/libudev/libudev-device.c -@@ -78,6 +78,7 @@ struct udev_device { - struct udev_list tags_list; - unsigned long long int seqnum; - usec_t usec_initialized; -+ int timeout; - int devlink_priority; - int refcount; - dev_t devnum; -@@ -172,6 +173,21 @@ static int udev_device_set_devnum(struct udev_device *udev_device, dev_t devnum) - return 0; - } - -+int udev_device_get_timeout(struct udev_device *udev_device) -+{ -+ return udev_device->timeout; -+} -+ -+static int udev_device_set_timeout(struct udev_device *udev_device, int timeout) -+{ -+ char num[32]; -+ -+ udev_device->timeout = timeout; -+ snprintf(num, sizeof(num), "%u", timeout); -+ udev_device_add_property(udev_device, "TIMEOUT", num); -+ return 0; -+} -+ - const char *udev_device_get_devpath_old(struct udev_device *udev_device) - { - return udev_device->devpath_old; -@@ -462,6 +478,8 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device, - udev_device_set_devpath_old(udev_device, &property[12]); - } else if (startswith(property, "SEQNUM=")) { - udev_device_set_seqnum(udev_device, strtoull(&property[7], NULL, 10)); -+ } else if (startswith(property, "TIMEOUT=")) { -+ udev_device_set_timeout(udev_device, strtoull(&property[8], NULL, 10)); - } else if (startswith(property, "IFINDEX=")) { - udev_device_set_ifindex(udev_device, strtoull(&property[8], NULL, 10)); - } else if (startswith(property, "DEVMODE=")) { -@@ -653,6 +671,7 @@ struct udev_device *udev_device_new(struct udev *udev) - udev_list_init(udev, &udev_device->sysattr_value_list, true); - udev_list_init(udev, &udev_device->sysattr_list, false); - udev_list_init(udev, &udev_device->tags_list, true); -+ udev_device->timeout = -1; - udev_device->watch_handle = -1; - /* copy global properties */ - udev_list_entry_foreach(list_entry, udev_get_properties_list_entry(udev)) -diff --git a/src/libudev/libudev-private.h b/src/libudev/libudev-private.h -index 54c51ac..d2124ea 100644 ---- a/src/libudev/libudev-private.h -+++ b/src/libudev/libudev-private.h -@@ -77,6 +77,7 @@ const char *udev_device_get_id_filename(struct udev_device *udev_device); - void udev_device_set_is_initialized(struct udev_device *udev_device); - int udev_device_add_tag(struct udev_device *udev_device, const char *tag); - void udev_device_cleanup_tags_list(struct udev_device *udev_device); -+int udev_device_get_timeout(struct udev_device *udev_device); - usec_t udev_device_get_usec_initialized(struct udev_device *udev_device); - void udev_device_set_usec_initialized(struct udev_device *udev_device, usec_t usec_initialized); - int udev_device_get_devlink_priority(struct udev_device *udev_device); -diff --git a/src/udev/udevd.c b/src/udev/udevd.c -index 7d13b4f..9be1931 100644 ---- a/src/udev/udevd.c -+++ b/src/udev/udevd.c -@@ -391,7 +391,7 @@ out: - } - } - --static void event_run(struct event *event) -+static void event_run(struct event *event, bool force) - { - struct udev_list_node *loop; - -@@ -417,7 +417,7 @@ static void event_run(struct event *event) - return; - } - -- if (children >= children_max) { -+ if (!force && children >= children_max) { - if (children_max > 1) - log_debug("maximum number (%i) of children reached\n", children); - return; -@@ -455,6 +455,13 @@ static int event_queue_insert(struct udev_device *dev) - - event->state = EVENT_QUEUED; - udev_list_node_append(&event->node, &event_list); -+ -+ /* run all events with a timeout set immediately */ -+ if (udev_device_get_timeout(dev) > 0) { -+ event_run(event, true); -+ return 0; -+ } -+ - return 0; - } - -@@ -566,7 +573,7 @@ static void event_queue_start(struct udev *udev) - if (is_devpath_busy(event)) - continue; - -- event_run(event); -+ event_run(event, false); - } - } - diff --git a/1002-re-enable-by_path-links-for-ata-devices.patch b/1001-re-enable-by_path-links-for-ata-devices.patch similarity index 100% rename from 1002-re-enable-by_path-links-for-ata-devices.patch rename to 1001-re-enable-by_path-links-for-ata-devices.patch diff --git a/1003-rules-create-by-id-scsi-links-for-ATA-devices.patch b/1002-rules-create-by-id-scsi-links-for-ATA-devices.patch similarity index 100% rename from 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch rename to 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch diff --git a/1004-udev-netlink-null-rules.patch b/1003-udev-netlink-null-rules.patch similarity index 75% rename from 1004-udev-netlink-null-rules.patch rename to 1003-udev-netlink-null-rules.patch index 8634d39d..f486a13f 100644 --- a/1004-udev-netlink-null-rules.patch +++ b/1003-udev-netlink-null-rules.patch @@ -7,11 +7,11 @@ udevd race for netlink events (bnc#774646) src/udev/udevd.c | 2 ++ 1 file changed, 2 insertions(+) -diff --git a/src/udev/udevd.c b/src/udev/udevd.c -index 9be1931..d0c4c72 100644 ---- a/src/udev/udevd.c -+++ b/src/udev/udevd.c -@@ -1414,6 +1414,8 @@ int main(int argc, char *argv[]) +Index: systemd-202/src/udev/udevd.c +=================================================================== +--- systemd-202.orig/src/udev/udevd.c ++++ systemd-202/src/udev/udevd.c +@@ -1407,6 +1407,8 @@ int main(int argc, char *argv[]) dev = udev_monitor_receive_device(monitor); if (dev != NULL) { udev_device_set_usec_initialized(dev, now(CLOCK_MONOTONIC)); diff --git a/1007-fix-devname-prefix.patch b/1004-fix-devname-prefix.patch similarity index 70% rename from 1007-fix-devname-prefix.patch rename to 1004-fix-devname-prefix.patch index 55fb3d90..7ab99e97 100644 --- a/1007-fix-devname-prefix.patch +++ b/1004-fix-devname-prefix.patch @@ -7,11 +7,11 @@ fix modules.devname path, it isn't in /usr. src/udev/udevd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/src/udev/udevd.c b/src/udev/udevd.c -index d0c4c72..599cd3b 100644 ---- a/src/udev/udevd.c -+++ b/src/udev/udevd.c -@@ -831,7 +831,7 @@ static void static_dev_create_from_modules(struct udev *udev) +Index: systemd-202/src/udev/udevd.c +=================================================================== +--- systemd-202.orig/src/udev/udevd.c ++++ systemd-202/src/udev/udevd.c +@@ -824,7 +824,7 @@ static void static_dev_create_from_modul return; } diff --git a/1021-create-default-links-for-primary-cd_dvd-drive.patch b/1005-create-default-links-for-primary-cd_dvd-drive.patch similarity index 100% rename from 1021-create-default-links-for-primary-cd_dvd-drive.patch rename to 1005-create-default-links-for-primary-cd_dvd-drive.patch diff --git a/1005-udev-fix-sg-autoload-regression.patch b/1005-udev-fix-sg-autoload-regression.patch deleted file mode 100644 index 1e79d84e..00000000 --- a/1005-udev-fix-sg-autoload-regression.patch +++ /dev/null @@ -1,22 +0,0 @@ -From: Robert Milasan -Date: Tue, 7 Aug 2012 08:34:49 +0000 -Subject: udev fix sg autoload regression - -Fix regression in udev where sg driver is no longer loaded for disc -events. Will need a non-udev solution for 12.3 (bnc#761109). ---- - rules/80-drivers.rules | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/rules/80-drivers.rules b/rules/80-drivers.rules -index 50523e4..b863532 100644 ---- a/rules/80-drivers.rules -+++ b/rules/80-drivers.rules -@@ -7,6 +7,7 @@ SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}="kmod load tifm_sd" - SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}="kmod load tifm_ms" - SUBSYSTEM=="memstick", RUN{builtin}="kmod load ms_block mspro_block" - SUBSYSTEM=="i2o", RUN{builtin}="kmod load i2o_block" -+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", IMPORT{builtin}="kmod load sg" - SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}="kmod load ppdev" - KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}="kmod load sm_ftl" - diff --git a/1027-udev-always-rename-network.patch b/1006-udev-always-rename-network.patch similarity index 100% rename from 1027-udev-always-rename-network.patch rename to 1006-udev-always-rename-network.patch diff --git a/1026-re-add-persistent-net.patch b/1026-re-add-persistent-net.patch deleted file mode 100644 index dd82550b..00000000 --- a/1026-re-add-persistent-net.patch +++ /dev/null @@ -1,421 +0,0 @@ -From: Robert Milasan -Date: Wed, 20 Mar 2013 10:14:59 +0000 -Subject: re-add persistent net - -udev: re-add persistent network rules (bnc#809843). ---- - Makefile.am | 10 +- - .../75-persistent-net-generator.rules | 102 +++++++++++++++ - src/udev/rule_generator/rule_generator.functions | 113 ++++++++++++++++ - src/udev/rule_generator/write_net_rules | 145 +++++++++++++++++++++ - 4 files changed, 369 insertions(+), 1 deletion(-) - create mode 100644 src/udev/rule_generator/75-persistent-net-generator.rules - create mode 100644 src/udev/rule_generator/rule_generator.functions - create mode 100644 src/udev/rule_generator/write_net_rules - -diff --git a/Makefile.am b/Makefile.am -index 10609f3..f5e4159 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -2287,6 +2287,14 @@ EXTRA_DIST += \ - src/gudev/seed-example.js - - # ------------------------------------------------------------------------------ -+dist_udevhome_SCRIPTS = \ -+ src/udev/rule_generator/rule_generator.functions \ -+ src/udev/rule_generator/write_net_rules -+ -+dist_udevrules_DATA += \ -+ src/udev/rule_generator/75-persistent-net-generator.rules -+ -+# ------------------------------------------------------------------------------ - if ENABLE_KEYMAP - keymap_SOURCES = \ - src/udev/keymap/keymap.c -@@ -2314,7 +2322,7 @@ dist_udevrules_DATA += \ - src/udev/keymap/95-keymap.rules \ - src/udev/keymap/95-keyboard-force-release.rules - --dist_udevhome_SCRIPTS = \ -+dist_udevhome_SCRIPTS += \ - src/udev/keymap/findkeyboards \ - src/udev/keymap/keyboard-force-release.sh - -diff --git a/src/udev/rule_generator/75-persistent-net-generator.rules b/src/udev/rule_generator/75-persistent-net-generator.rules -new file mode 100644 -index 0000000..4f80573 ---- /dev/null -+++ b/src/udev/rule_generator/75-persistent-net-generator.rules -@@ -0,0 +1,102 @@ -+# 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" -+ -+# 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]|msh*|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end" -+ -+# ignore Xen virtual interfaces -+SUBSYSTEMS=="xen", GOTO="persistent_net_generator_end" -+ -+# read MAC address -+ENV{MATCHADDR}="$attr{address}" -+ -+# match interface type -+ENV{MATCHIFTYPE}="$attr{type}" -+ -+# ignore KVM virtual interfaces -+ENV{MATCHADDR}=="52:54:00:*", GOTO="persistent_net_generator_end" -+# ignore VMWare virtual interfaces -+ENV{MATCHADDR}=="00:0c:29:*|00:50:56:*", GOTO="persistent_net_generator_end" -+# ignore Hyper-V virtual interfaces -+ENV{MATCHADDR}=="00:15:5d:*", GOTO="persistent_net_generator_end" -+ -+# These vendors are known to violate the local MAC address assignment scheme -+# Interlan, DEC (UNIBUS or QBUS), Apollo, Cisco, Racal-Datacom -+ENV{MATCHADDR}=="02:07:01:*", GOTO="globally_administered_whitelist" -+# 3Com -+ENV{MATCHADDR}=="02:60:60:*", GOTO="globally_administered_whitelist" -+# 3Com IBM PC; Imagen; Valid; Cisco; Apple -+ENV{MATCHADDR}=="02:60:8c:*", GOTO="globally_administered_whitelist" -+# Intel -+ENV{MATCHADDR}=="02:a0:c9:*", GOTO="globally_administered_whitelist" -+# Olivetti -+ENV{MATCHADDR}=="02:aa:3c:*", GOTO="globally_administered_whitelist" -+# CMC Masscomp; Silicon Graphics; Prime EXL -+ENV{MATCHADDR}=="02:cf:1f:*", GOTO="globally_administered_whitelist" -+# Prominet Corporation Gigabit Ethernet Switch -+ENV{MATCHADDR}=="02:e0:3b:*", GOTO="globally_administered_whitelist" -+# BTI (Bus-Tech, Inc.) IBM Mainframes -+ENV{MATCHADDR}=="02:e6:d3:*", GOTO="globally_administered_whitelist" -+# Realtek -+ENV{MATCHADDR}=="52:54:00:*", GOTO="globally_administered_whitelist" -+# Novell 2000 -+ENV{MATCHADDR}=="52:54:4c:*", GOTO="globally_administered_whitelist" -+# Realtec -+ENV{MATCHADDR}=="52:54:ab:*", GOTO="globally_administered_whitelist" -+# Kingston Technologies -+ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="globally_administered_whitelist" -+# Xensource -+ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist" -+ -+# match interface dev_id -+ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}" -+ -+# 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}="" -+ -+LABEL="globally_administered_whitelist" -+ -+# build comment line for generated rule: -+SUBSYSTEMS=="pci", ENV{COMMENT}="PCI device $attr{vendor}:$attr{device} ($driver)" -+SUBSYSTEMS=="usb", ATTRS{idVendor}=="?*", 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=="ieee1394", ENV{COMMENT}="Firewire device $attr{host_id})" -+ -+# ibmveth likes to use "locally administered" MAC addresses -+DRIVERS=="ibmveth", ENV{MATCHADDR}="$attr{address}", ENV{COMMENT}="ibmveth ($id)" -+ -+# 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}="" -+ -+# see if we got enough data to create a rule -+ENV{MATCHADDR}=="", ENV{MATCHID}=="", ENV{INTERFACE_NAME}=="", GOTO="persistent_net_generator_end" -+ -+# default comment -+ENV{COMMENT}=="", ENV{COMMENT}="net device ($attr{driver})" -+ -+# write rule -+DRIVERS=="?*", IMPORT{program}="write_net_rules" -+ -+# rename interface if needed -+ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}" -+ -+LABEL="persistent_net_generator_end" -diff --git a/src/udev/rule_generator/rule_generator.functions b/src/udev/rule_generator/rule_generator.functions -new file mode 100644 -index 0000000..087bc34 ---- /dev/null -+++ b/src/udev/rule_generator/rule_generator.functions -@@ -0,0 +1,113 @@ -+# functions used by the udev rule generator -+ -+# Copyright (C) 2006 Marco d'Itri -+ -+# 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, either version 2 of the License, or -+# (at your option) any later version. -+ -+# This program 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. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+PATH='/usr/bin:/bin:/usr/sbin:/sbin' -+ -+# Read a single line from file $1 in the $DEVPATH directory. -+# The function must not return an error even if the file does not exist. -+sysread() { -+ local file="$1" -+ [ -e "/sys$DEVPATH/$file" ] || return 0 -+ local value -+ read value < "/sys$DEVPATH/$file" || return 0 -+ echo "$value" -+} -+ -+sysreadlink() { -+ local file="$1" -+ [ -e "/sys$DEVPATH/$file" ] || return 0 -+ readlink -f /sys$DEVPATH/$file 2> /dev/null || true -+} -+ -+# Return true if a directory is writeable. -+writeable() { -+ if ln -s test-link $1/.is-writeable 2> /dev/null; then -+ rm -f $1/.is-writeable -+ return 0 -+ else -+ return 1 -+ fi -+} -+ -+# Create a lock file for the current rules file. -+lock_rules_file() { -+ RUNDIR="/run/udev" -+ [ -e "$RUNDIR" ] || return 0 -+ -+ RULES_LOCK="$RUNDIR/.lock-${RULES_FILE##*/}" -+ -+ retry=30 -+ while ! mkdir $RULES_LOCK 2> /dev/null; do -+ if [ $retry -eq 0 ]; then -+ echo "Cannot lock $RULES_FILE!" >&2 -+ exit 2 -+ fi -+ sleep 1 -+ retry=$(($retry - 1)) -+ done -+} -+ -+unlock_rules_file() { -+ [ "$RULES_LOCK" ] || return 0 -+ rmdir $RULES_LOCK || true -+} -+ -+# Choose the real rules file if it is writeable or a temporary file if not. -+# Both files should be checked later when looking for existing rules. -+choose_rules_file() { -+ RUNDIR="/run/udev" -+ local tmp_rules_file="$RUNDIR/tmp-rules--${RULES_FILE##*/}" -+ [ -e "$RULES_FILE" -o -e "$tmp_rules_file" ] || PRINT_HEADER=1 -+ -+ if writeable ${RULES_FILE%/*}; then -+ RO_RULES_FILE='/dev/null' -+ else -+ RO_RULES_FILE=$RULES_FILE -+ RULES_FILE=$tmp_rules_file -+ fi -+} -+ -+# Return the name of the first free device. -+raw_find_next_available() { -+ local links="$1" -+ -+ local basename=${links%%[ 0-9]*} -+ local max=-1 -+ for name in $links; do -+ local num=${name#$basename} -+ [ "$num" ] || num=0 -+ [ $num -gt $max ] && max=$num -+ done -+ -+ local max=$(($max + 1)) -+ # "name0" actually is just "name" -+ [ $max -eq 0 ] && return -+ echo "$max" -+} -+ -+# Find all rules matching a key (with action) and a pattern. -+find_all_rules() { -+ local key="$1" -+ local linkre="$2" -+ local match="$3" -+ -+ local search='.*[[:space:],]'"$key"'"('"$linkre"')".*' -+ echo $(sed -n -r -e 's/^#.*//' -e "${match}s/${search}/\1/p" \ -+ $RO_RULES_FILE \ -+ $([ -e $RULES_FILE ] && echo $RULES_FILE) \ -+ 2>/dev/null) -+} -diff --git a/src/udev/rule_generator/write_net_rules b/src/udev/rule_generator/write_net_rules -new file mode 100644 -index 0000000..fad1cc5 ---- /dev/null -+++ b/src/udev/rule_generator/write_net_rules -@@ -0,0 +1,145 @@ -+#!/bin/sh -e -+ -+# 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= 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 -+# MATCHDEVID dev_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 -+ -+# Copyright (C) 2006 Marco d'Itri -+# Copyright (C) 2007 Kay Sievers -+# -+# 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, either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program 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. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+# debug, if UDEV_LOG= -+if [ -n "$UDEV_LOG" ]; then -+ if [ "$UDEV_LOG" -ge 7 ]; then -+ set -x -+ fi -+fi -+ -+RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules' -+ -+if [ -e /usr/lib/udev/rule_generator.functions ]; then -+ . /usr/lib/udev/rule_generator.functions -+else -+ . /lib/udev/rule_generator.functions -+fi -+ -+interface_name_taken() { -+ local value="$(find_all_rules 'NAME=' $INTERFACE)" -+ if [ "$value" ]; then -+ return 0 -+ else -+ return 1 -+ fi -+} -+ -+find_next_available() { -+ raw_find_next_available "$(find_all_rules 'NAME=' "$1")" -+} -+ -+write_rule() { -+ local match="$1" -+ local name="$2" -+ local comment="$3" -+ -+ { -+ if [ "$PRINT_HEADER" ]; then -+ PRINT_HEADER= -+ echo "# This file was automatically generated by the $0" -+ echo "# program, run by the persistent-net-generator.rules rules file." -+ echo "#" -+ echo "# You can modify it, as long as you keep each rule on a single" -+ echo "# line, and change only the value of the NAME= key." -+ fi -+ -+ echo "" -+ [ "$comment" ] && echo "# $comment" -+ echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\"" -+ } >> $RULES_FILE -+} -+ -+if [ -z "$INTERFACE" ]; then -+ echo "missing \$INTERFACE" >&2 -+ exit 1 -+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 -+ -+# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces -+if [ "$MATCHADDR" ]; then -+ match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\"" -+fi -+ -+if [ "$MATCHDRV" ]; then -+ match="$match, DRIVERS==\"$MATCHDRV\"" -+fi -+ -+if [ "$MATCHDEVID" ]; then -+ match="$match, ATTR{dev_id}==\"$MATCHDEVID\"" -+fi -+ -+if [ "$MATCHID" ]; then -+ match="$match, KERNELS==\"$MATCHID\"" -+fi -+ -+if [ "$MATCHIFTYPE" ]; then -+ match="$match, ATTR{type}==\"$MATCHIFTYPE\"" -+fi -+ -+if [ -z "$match" ]; then -+ echo "missing valid match" >&2 -+ unlock_rules_file -+ exit 1 -+fi -+ -+basename=${INTERFACE%%[0-9]*} -+match="$match, KERNEL==\"$basename*\"" -+ -+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 -+ if interface_name_taken; then -+ INTERFACE="$basename$(find_next_available "$basename[0-9]*")" -+ # prevent INTERFACE from being "eth" instead of "eth0" -+ [ "$INTERFACE" = "${INTERFACE%%[ \[\]0-9]*}" ] && INTERFACE=${INTERFACE}0 -+ echo "INTERFACE_NEW=$INTERFACE" -+ fi -+fi -+ -+write_rule "$match" "$INTERFACE" "$COMMENT" -+ -+unlock_rules_file -+ -+exit 0 diff --git a/systemd-mini.changes b/systemd-mini.changes index fb756c60..6a125ce6 100644 --- a/systemd-mini.changes +++ b/systemd-mini.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Thu Apr 25 08:19:30 UTC 2013 - rmilasan@suse.com + +- Rename remaning udev patches (clean-up). +- Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at + boot time not from udev (bnc#761109). +- Drop unused patches: + 1001-Reinstate-TIMEOUT-handling.patch + 1005-udev-fix-sg-autoload-regression.patch + 1026-re-add-persistent-net.patch + ------------------------------------------------------------------- Tue Apr 23 14:58:47 CEST 2013 - fcrozat@suse.com diff --git a/systemd-mini.spec b/systemd-mini.spec index 05e18590..a65bb80c 100644 --- a/systemd-mini.spec +++ b/systemd-mini.spec @@ -170,24 +170,18 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch # udev patches -# PATCH-FIX-OPENSUSE 1001-Reinstate-TIMEOUT-handling.patch -Patch1001: 1001-Reinstate-TIMEOUT-handling.patch -# PATCH-FIX-OPENSUSE 1002-re-enable-by_path-links-for-ata-devices.patch -Patch1002: 1002-re-enable-by_path-links-for-ata-devices.patch -# PATCH-FIX-OPENSUSE 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch -Patch1003: 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch -# PATCH-FIX-OPENSUSE 1004-udev-netlink-null-rules.patch -Patch1004: 1004-udev-netlink-null-rules.patch -# PATCH-FIX-OPENSUSE 1005-udev-fix-sg-autoload-regression.patch -Patch1005: 1005-udev-fix-sg-autoload-regression.patch -# PATCH-FIX-OPENSUSE 1007-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr -Patch1007: 1007-fix-devname-prefix.patch -# PATCH-FIX-OPENSUSE 1021-create-default-links-for-primary-cd_dvd-drive.patch -Patch1021: 1021-create-default-links-for-primary-cd_dvd-drive.patch -# PATCH-FIX-OPENSUSE 1026-re-add-persistent-net.patch -Patch1026: 1026-re-add-persistent-net.patch -# PATCH-FIX-OPENSUSE 1027-udev-always-rename-network.patch -Patch1027: 1027-udev-always-rename-network.patch +# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch +Patch1001: 1001-re-enable-by_path-links-for-ata-devices.patch +# PATCH-FIX-OPENSUSE 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch +Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch +# PATCH-FIX-OPENSUSE 1003-udev-netlink-null-rules.patch +Patch1003: 1003-udev-netlink-null-rules.patch +# PATCH-FIX-OPENSUSE 1004-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr +Patch1004: 1004-fix-devname-prefix.patch +# PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch +Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch +# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch +Patch1006: 1006-udev-always-rename-network.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -370,10 +364,7 @@ cp %{SOURCE7} m4/ %patch1003 -p1 %patch1004 -p1 %patch1005 -p1 -%patch1007 -p1 -%patch1021 -p1 -%patch1026 -p1 -%patch1027 -p1 +%patch1006 -p1 #systemd %patch0 -p1 @@ -512,6 +503,13 @@ ln -s systemd-random-seed-load.service %{buildroot}/%{_prefix}/lib/systemd/syste # don't mount /tmp as tmpfs for now rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount +# create %{_libexecdir}/modules-load.d +mkdir -p %{buildroot}%{_libexecdir}/modules-load.d +cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/sg.conf +# load sg module at boot time +sg +EOF + # To avoid making life hard for Factory developers, don't package the # kernel.core_pattern setting until systemd-coredump is a part of an actual # systemd release and it's made clear how to get the core dumps out of the @@ -724,7 +722,7 @@ fi %endif %clean -# rm -rf %{buildroot} +rm -rf %{buildroot} %files %defattr(-,root,root) @@ -809,6 +807,7 @@ fi %dir %{_libexecdir}/modules-load.d %dir %{_sysconfdir}/modules-load.d +%{_libexecdir}/modules-load.d/sg.conf %dir %{_libexecdir}/tmpfiles.d %dir %{_sysconfdir}/tmpfiles.d @@ -952,8 +951,6 @@ fi %{_prefix}/lib/udev/scsi_id %{_prefix}/lib/udev/v4l_id %{_prefix}/lib/udev/write_dev_root_rule -%{_prefix}/lib/udev/write_net_rules -%{_prefix}/lib/udev/rule_generator.functions %dir %{_prefix}/lib/udev/keymaps %{_prefix}/lib/udev/keymaps/* %{_prefix}/lib/udev/keyboard-force-release.sh diff --git a/systemd.changes b/systemd.changes index fb756c60..6a125ce6 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Thu Apr 25 08:19:30 UTC 2013 - rmilasan@suse.com + +- Rename remaning udev patches (clean-up). +- Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at + boot time not from udev (bnc#761109). +- Drop unused patches: + 1001-Reinstate-TIMEOUT-handling.patch + 1005-udev-fix-sg-autoload-regression.patch + 1026-re-add-persistent-net.patch + ------------------------------------------------------------------- Tue Apr 23 14:58:47 CEST 2013 - fcrozat@suse.com diff --git a/systemd.spec b/systemd.spec index e38d06b1..4d1f6bd2 100644 --- a/systemd.spec +++ b/systemd.spec @@ -165,24 +165,18 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch # udev patches -# PATCH-FIX-OPENSUSE 1001-Reinstate-TIMEOUT-handling.patch -Patch1001: 1001-Reinstate-TIMEOUT-handling.patch -# PATCH-FIX-OPENSUSE 1002-re-enable-by_path-links-for-ata-devices.patch -Patch1002: 1002-re-enable-by_path-links-for-ata-devices.patch -# PATCH-FIX-OPENSUSE 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch -Patch1003: 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch -# PATCH-FIX-OPENSUSE 1004-udev-netlink-null-rules.patch -Patch1004: 1004-udev-netlink-null-rules.patch -# PATCH-FIX-OPENSUSE 1005-udev-fix-sg-autoload-regression.patch -Patch1005: 1005-udev-fix-sg-autoload-regression.patch -# PATCH-FIX-OPENSUSE 1007-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr -Patch1007: 1007-fix-devname-prefix.patch -# PATCH-FIX-OPENSUSE 1021-create-default-links-for-primary-cd_dvd-drive.patch -Patch1021: 1021-create-default-links-for-primary-cd_dvd-drive.patch -# PATCH-FIX-OPENSUSE 1026-re-add-persistent-net.patch -Patch1026: 1026-re-add-persistent-net.patch -# PATCH-FIX-OPENSUSE 1027-udev-always-rename-network.patch -Patch1027: 1027-udev-always-rename-network.patch +# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch +Patch1001: 1001-re-enable-by_path-links-for-ata-devices.patch +# PATCH-FIX-OPENSUSE 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch +Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch +# PATCH-FIX-OPENSUSE 1003-udev-netlink-null-rules.patch +Patch1003: 1003-udev-netlink-null-rules.patch +# PATCH-FIX-OPENSUSE 1004-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr +Patch1004: 1004-fix-devname-prefix.patch +# PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch +Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch +# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch +Patch1006: 1006-udev-always-rename-network.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -365,10 +359,7 @@ cp %{SOURCE7} m4/ %patch1003 -p1 %patch1004 -p1 %patch1005 -p1 -%patch1007 -p1 -%patch1021 -p1 -%patch1026 -p1 -%patch1027 -p1 +%patch1006 -p1 #systemd %patch0 -p1 @@ -507,6 +498,13 @@ ln -s systemd-random-seed-load.service %{buildroot}/%{_prefix}/lib/systemd/syste # don't mount /tmp as tmpfs for now rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount +# create %{_libexecdir}/modules-load.d +mkdir -p %{buildroot}%{_libexecdir}/modules-load.d +cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/sg.conf +# load sg module at boot time +sg +EOF + # To avoid making life hard for Factory developers, don't package the # kernel.core_pattern setting until systemd-coredump is a part of an actual # systemd release and it's made clear how to get the core dumps out of the @@ -719,7 +717,7 @@ fi %endif %clean -# rm -rf %{buildroot} +rm -rf %{buildroot} %files %defattr(-,root,root) @@ -804,6 +802,7 @@ fi %dir %{_libexecdir}/modules-load.d %dir %{_sysconfdir}/modules-load.d +%{_libexecdir}/modules-load.d/sg.conf %dir %{_libexecdir}/tmpfiles.d %dir %{_sysconfdir}/tmpfiles.d @@ -947,8 +946,6 @@ fi %{_prefix}/lib/udev/scsi_id %{_prefix}/lib/udev/v4l_id %{_prefix}/lib/udev/write_dev_root_rule -%{_prefix}/lib/udev/write_net_rules -%{_prefix}/lib/udev/rule_generator.functions %dir %{_prefix}/lib/udev/keymaps %{_prefix}/lib/udev/keymaps/* %{_prefix}/lib/udev/keyboard-force-release.sh