SHA256
1
0
forked from pool/systemd

Accepting request 172582 from home:fcrozat:branches:Base:System

- Update to release 202:
  + 'systemctl list-jobs' got some polishing. '--type=' argument
    may now be passed more than once. 'systemctl list-sockets' has
    been added.
  + systemd gained a new unit 'systemd-static-nodes.service'
    that generates static device nodes earlier during boot, and
    can run in conjunction with udev.
  + systemd-nspawn now places all containers in the new /machine
    top-level cgroup directory in the name=systemd hierarchy.
  + bootchart can now store its data in the journal.
  + journactl can now take multiple --unit= and --user-unit=
    switches.
  + The cryptsetup logic now understands the "luks.key=" kernel
    command line switch. If a configured key file is missing, it
    will fallback to prompting the user.
- Rebase some patches
- Update handle-SYSTEMCTL_OPTIONS-environment-variable.patch to
  properly handle SYSTEMCTL_OPTIONS

- Fix regression in the default for tmp auto-deletion
  (systemd-tmp-safe-defaults.patch, FATE#314974).

- Add chromebook lid switch as a power switch to logind rule to
  enable suspend on lid close

- Update to release 202:
  + 'systemctl list-jobs' got some polishing. '--type=' argument
    may now be passed more than once. 'systemctl list-sockets' has
    been added.
  + systemd gained a new unit 'systemd-static-nodes.service'

OBS-URL: https://build.opensuse.org/request/show/172582
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=365
This commit is contained in:
Dr. Werner Fink 2013-04-19 20:31:17 +00:00 committed by Git OBS Bridge
parent 9bc096a963
commit a6c42807cc
40 changed files with 197 additions and 988 deletions

View File

@ -83,7 +83,7 @@ index 54c51ac..d2124ea 100644
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 2ad7388..5a90b60 100644
index 7d13b4f..9be1931 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -391,7 +391,7 @@ out:

View File

@ -8,10 +8,10 @@ udevd race for netlink events (bnc#774646)
1 file changed, 2 insertions(+)
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index 5a90b60..2a0bf60 100644
index 9be1931..d0c4c72 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -1410,6 +1410,8 @@ int main(int argc, char *argv[])
@@ -1414,6 +1414,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));

View File

@ -8,13 +8,13 @@ fix modules.devname path, it isn't in /usr.
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index 2a0bf60..6c2c2c9 100644
index d0c4c72..599cd3b 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -827,7 +827,7 @@ static void static_dev_create_from_modules(struct udev *udev)
FILE *f;
@@ -831,7 +831,7 @@ static void static_dev_create_from_modules(struct udev *udev)
return;
}
uname(&kernel);
- strscpyl(modules, sizeof(modules), ROOTPREFIX "/lib/modules/", kernel.release, "/modules.devname", NULL);
+ strscpyl(modules, sizeof(modules), "/lib/modules/", kernel.release, "/modules.devname", NULL);
f = fopen(modules, "re");

View File

@ -9,7 +9,7 @@ splash screen to verbose when a password is asked...
1 file changed, 22 insertions(+)
diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c
index 8a0fb89..4bece69 100644
index 4557155..3750f64 100644
--- a/src/shared/ask-password-api.c
+++ b/src/shared/ask-password-api.c
@@ -63,6 +63,9 @@ int ask_password_tty(
@ -42,7 +42,7 @@ index 8a0fb89..4bece69 100644
}
zero(pollfd);
@@ -240,6 +256,12 @@ finish:
@@ -239,6 +255,12 @@ finish:
close_nointr_nofail(ttyfd);
}

View File

@ -8,7 +8,7 @@ forward suspend/hibernation calls to pm-utils, if installed (bnc#790157)
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
index 0707625..91cbdf9 100644
index f5e78c1..8d91117 100644
--- a/src/sleep/sleep.c
+++ b/src/sleep/sleep.c
@@ -22,6 +22,7 @@
@ -57,10 +57,10 @@ index 0707625..91cbdf9 100644
/* Configure the hibernation mode */
+ if (!delegate_to_pmutils) {
if (streq(argv[1], "hibernate")) {
if (write_one_line_file("/sys/power/disk", "platform") < 0)
write_one_line_file("/sys/power/disk", "shutdown");
if (write_string_file("/sys/power/disk", "platform") < 0)
write_string_file("/sys/power/disk", "shutdown");
@@ -65,13 +79,14 @@ int main(int argc, char *argv[]) {
write_one_line_file("/sys/power/disk", "shutdown");
write_string_file("/sys/power/disk", "shutdown");
}
+

View File

@ -1,129 +0,0 @@
From: Robert Milasan <rmilasan@suse.com>
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 2ad7388..5a90b60 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);
}
}

View File

@ -11,7 +11,7 @@ Conflicts:
1 file changed, 46 insertions(+), 5 deletions(-)
diff --git a/src/core/service.c b/src/core/service.c
index a1b2d93..da22e55 100644
index c13ff35..0b39ec6 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -51,7 +51,8 @@
@ -108,7 +108,7 @@ index a1b2d93..da22e55 100644
if (r < 0)
return r;
@@ -3663,7 +3701,7 @@ static int service_enumerate(Manager *m) {
@@ -3661,7 +3699,7 @@ static int service_enumerate(Manager *m) {
if (de->d_name[0] == 'S') {
@ -117,7 +117,7 @@ index a1b2d93..da22e55 100644
SERVICE(service)->sysv_start_priority_from_rcnd =
MAX(a*10 + b, SERVICE(service)->sysv_start_priority_from_rcnd);
@@ -3680,7 +3718,8 @@ static int service_enumerate(Manager *m) {
@@ -3678,7 +3716,8 @@ static int service_enumerate(Manager *m) {
goto finish;
} else if (de->d_name[0] == 'K' &&
@ -127,7 +127,7 @@ index a1b2d93..da22e55 100644
r = set_ensure_allocated(&shutdown_services,
trivial_hash_func, trivial_compare_func);
@@ -3720,7 +3759,9 @@ static int service_enumerate(Manager *m) {
@@ -3718,7 +3757,9 @@ static int service_enumerate(Manager *m) {
* runlevels we assume the stop jobs will be implicitly added
* by the core logic. Also, we don't really distinguish here
* between the runlevels 0 and 6 and just add them to the

View File

@ -8,11 +8,11 @@ Subject: avoid assertion if invalid address familily is passed to
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c
index b0fb832..b3aaca8 100644
index 16ccb3e..884eb99 100644
--- a/src/nss-myhostname/nss-myhostname.c
+++ b/src/nss-myhostname/nss-myhostname.c
@@ -384,6 +384,12 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
struct address *addresses = NULL, *a;
@@ -383,6 +383,12 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
struct address *a;
unsigned n_addresses = 0, n;
+ if (af != AF_INET && af != AF_INET6) {
@ -24,7 +24,7 @@ index b0fb832..b3aaca8 100644
if (len != PROTO_ADDRESS_SIZE(af)) {
*errnop = EINVAL;
*h_errnop = NO_RECOVERY;
@@ -399,11 +405,6 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
@@ -398,11 +404,6 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0)
goto found;

View File

@ -1,24 +0,0 @@
From: Robert Milasan <rmilasan@suse.com>
Date: Tue, 12 Feb 2013 09:16:23 +0000
Subject: create default links for primary cd_dvd drive
cdrom_id: created links for the default cd/dvd drive (bnc#783054).
---
rules/60-cdrom_id.rules | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/rules/60-cdrom_id.rules b/rules/60-cdrom_id.rules
index 6eaf76a..ec0b19a 100644
--- a/rules/60-cdrom_id.rules
+++ b/rules/60-cdrom_id.rules
@@ -15,6 +15,9 @@ ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdr
# enable the receiving of media eject button events
IMPORT{program}="cdrom_id --lock-media $devnode"
-KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
+KERNEL=="sr0", ENV{ID_CDROM}=="1", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
+KERNEL=="sr0", ENV{ID_CDROM_CD_RW}=="1", SYMLINK+="cdrw", OPTIONS+="link_priority=-100"
+KERNEL=="sr0", ENV{ID_CDROM_DVD}=="1", SYMLINK+="dvd", OPTIONS+="link_priority=-100"
+KERNEL=="sr0", ENV{ID_CDROM_DVD_RW}=="1", SYMLINK+="dvdrw", OPTIONS+="link_priority=-100"
LABEL="cdrom_end"

View File

@ -8,16 +8,16 @@ Subject: delay fsck / cryptsetup after md / dmraid / lvm are started
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
index bee8a36..6edc760 100644
index 9b8e229..0949287 100644
--- a/src/cryptsetup/cryptsetup-generator.c
+++ b/src/cryptsetup/cryptsetup-generator.c
@@ -162,6 +162,7 @@ static int create_disk(
@@ -160,6 +160,7 @@ static int create_disk(
"Conflicts=umount.target\n"
"DefaultDependencies=no\n"
"BindsTo=%s dev-mapper-%%i.device\n"
"After=systemd-readahead-collect.service systemd-readahead-replay.service %s\n"
"BindsTo=dev-mapper-%i.device\n"
+ "After=md.service dmraid.service lvm.service\n"
"Before=umount.target\n",
d, d);
"After=systemd-readahead-collect.service systemd-readahead-replay.service\n",
f);
diff --git a/units/systemd-fsck@.service.in b/units/systemd-fsck@.service.in
index b3c71eb..c66a411 100644

View File

@ -7,7 +7,7 @@ Subject: disable nss-myhostname warning (bnc#783841)
1 file changed, 1 insertion(+)
diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
index 859b5a0..4aad17b 100644
index 0437e33..c7f454c 100644
--- a/src/hostname/hostnamed.c
+++ b/src/hostname/hostnamed.c
@@ -134,6 +134,7 @@ static int read_data(void) {

View File

@ -1,22 +0,0 @@
From: Frederic Crozat <fcrozat@suse.com>
Date: Wed, 5 Dec 2012 15:13:27 +0000
Subject: fix devname prefix
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 2a0bf60..6c2c2c9 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -827,7 +827,7 @@ static void static_dev_create_from_modules(struct udev *udev)
FILE *f;
uname(&kernel);
- strscpyl(modules, sizeof(modules), ROOTPREFIX "/lib/modules/", kernel.release, "/modules.devname", NULL);
+ strscpyl(modules, sizeof(modules), "/lib/modules/", kernel.release, "/modules.devname", NULL);
f = fopen(modules, "re");
if (f == NULL)
return;

View File

@ -3,38 +3,40 @@ Date: Thu, 23 Aug 2012 11:08:25 +0200
Subject: fix support for boot prefixed initscript (bnc#746506)
---
src/systemctl/systemctl.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
src/systemctl/systemctl.c | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index edd136a..36918f2 100644
index c2b1749..84ce87c 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -3642,7 +3642,27 @@ static int enable_sysv_units(char **args) {
@@ -4060,8 +4060,28 @@ static int enable_sysv_units(char **args) {
p[strlen(p) - sizeof(".service") + 1] = 0;
found_sysv = access(p, F_OK) >= 0;
if (!found_sysv) {
free(p);
- if (!found_sysv)
+ if (!found_sysv) {
+#ifdef HAVE_SYSV_COMPAT
+ free(p);
+ p = NULL;
+ if (!isempty(arg_root))
+ asprintf(&p, "%s/" SYSTEM_SYSVINIT_PATH "/boot.%s", arg_root, name);
+ else
+ asprintf(&p, SYSTEM_SYSVINIT_PATH "/boot.%s", name);
+ if (!p) {
+ log_error("No memory");
+ r = -ENOMEM;
+ r = log_oom();
+ goto finish;
+ }
+ p[strlen(p) - sizeof(".service") + 1] = 0;
+ found_sysv = access(p, F_OK) >= 0;
+
+ if (!found_sysv) {
+ free(p);
+ continue;
+ }
+#else
continue;
+#endif
}
+ }
/* Mark this entry, so that we don't try enabling it as native unit */
args[f] = (char*) "";

View File

@ -3,11 +3,11 @@ Date: Mon, 7 Nov 2011 18:04:20 +0100
Subject: force lvm restart after cryptsetup target is reached
---
src/cryptsetup/cryptsetup-generator.c | 58 ++++++++++++++++++++++++++++++++++-
1 file changed, 57 insertions(+), 1 deletion(-)
src/cryptsetup/cryptsetup-generator.c | 57 ++++++++++++++++++++++++++++++++++-
1 file changed, 56 insertions(+), 1 deletion(-)
diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
index 8959bf5..d386b60 100644
index ac0ed58..9b8e229 100644
--- a/src/cryptsetup/cryptsetup-generator.c
+++ b/src/cryptsetup/cryptsetup-generator.c
@@ -22,6 +22,7 @@
@ -18,14 +18,13 @@ index 8959bf5..d386b60 100644
#include "log.h"
#include "util.h"
@@ -64,6 +65,55 @@ static bool has_option(const char *haystack, const char *needle) {
@@ -64,6 +65,54 @@ static bool has_option(const char *haystack, const char *needle) {
return false;
}
+static int create_storage_after_cryptsetup (void) {
+ int r;
+ char _cleanup_free_ *to = NULL, *p = NULL;
+ FILE _cleanup_fclose_ *f = NULL;
+ _cleanup_free_ char *to = NULL, *p = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
+
+ if (asprintf(&p, "%s/storage-after-cryptsetup.service", arg_dest) < 0)
+ return log_oom();
@ -74,15 +73,15 @@ index 8959bf5..d386b60 100644
static int create_disk(
const char *name,
const char *device,
@@ -284,6 +334,7 @@ int main(int argc, char *argv[]) {
FILE _cleanup_fclose_ *f = NULL;
@@ -331,6 +380,7 @@ int main(int argc, char *argv[]) {
_cleanup_fclose_ FILE *f = NULL;
unsigned n = 0;
int r = EXIT_SUCCESS;
+ bool no_crypttab = false;
char **i;
char _cleanup_strv_free_ **arg_proc_cmdline_disks_done = NULL;
char _cleanup_strv_free_ **arg_proc_cmdline_disks = NULL;
@@ -312,8 +363,10 @@ int main(int argc, char *argv[]) {
_cleanup_strv_free_ char **arg_proc_cmdline_disks_done = NULL;
_cleanup_strv_free_ char **arg_proc_cmdline_disks = NULL;
@@ -360,8 +410,10 @@ int main(int argc, char *argv[]) {
f = fopen("/etc/crypttab", "re");
if (!f) {
@ -94,7 +93,7 @@ index 8959bf5..d386b60 100644
else {
r = EXIT_FAILURE;
log_error("Failed to open /etc/crypttab: %m");
@@ -397,5 +450,8 @@ int main(int argc, char *argv[]) {
@@ -445,5 +497,8 @@ int main(int argc, char *argv[]) {
r = EXIT_FAILURE;
}

View File

@ -4,23 +4,25 @@ Subject: handle SYSTEMCTL_OPTIONS environment variable
(bnc#798620)
---
src/systemctl/systemctl.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
src/systemctl/systemctl.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 36918f2..28d6586 100644
index 84ce87c..cceafc9 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -4340,6 +4340,26 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
assert(argc >= 0);
assert(argv);
@@ -5926,6 +5926,28 @@ int main(int argc, char*argv[]) {
log_parse_environment();
log_open();
+ if (secure_getenv("SYSTEMCTL_OPTIONS")) {
+ if (secure_getenv("SYSTEMCTL_OPTIONS") &&
+ (!program_invocation_short_name ||
+ (program_invocation_short_name && strstr(program_invocation_short_name, "systemctl")))) {
+ char **parsed_systemctl_options = strv_split_quoted(getenv("SYSTEMCTL_OPTIONS"));
+
+ if (*parsed_systemctl_options && **parsed_systemctl_options) {
+ char **k,**a;
+ char _cleanup_strv_free_ **new_argv = new(char*, strv_length(argv) + strv_length(parsed_systemctl_options) + 1);
+ _cleanup_strv_free_ char **new_argv = new(char*, strv_length(argv) + strv_length(parsed_systemctl_options) + 1);
+ new_argv[0] = strdup(argv[0]);
+ for (k = new_argv+1, a = parsed_systemctl_options; *a; k++, a++) {
+ *k = strdup(*a);
@ -35,6 +37,6 @@ index 36918f2..28d6586 100644
+ }
+ }
+
while ((c = getopt_long(argc, argv, "ht:p:aqfs:H:Pn:o:i", options, NULL)) >= 0) {
switch (c) {
r = parse_argv(argc, argv);
if (r < 0)
goto finish;

View File

@ -8,7 +8,7 @@ Subject: handle disable_caplock and compose_table and kbd_rate
1 file changed, 153 insertions(+), 3 deletions(-)
diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
index c1f662b..5f3354e 100644
index 1bbf737..384f936 100644
--- a/src/vconsole/vconsole-setup.c
+++ b/src/vconsole/vconsole-setup.c
@@ -40,6 +40,7 @@
@ -39,7 +39,7 @@ index c1f662b..5f3354e 100644
args[i++] = NULL;
pid = fork();
@@ -217,6 +220,101 @@ static void font_copy_to_all_vcs(int fd) {
@@ -212,6 +215,101 @@ static void font_copy_to_all_vcs(int fd) {
}
}
@ -141,7 +141,7 @@ index c1f662b..5f3354e 100644
int main(int argc, char **argv) {
const char *vc;
char *vc_keymap = NULL;
@@ -224,8 +322,16 @@ int main(int argc, char **argv) {
@@ -219,8 +317,16 @@ int main(int argc, char **argv) {
char *vc_font = NULL;
char *vc_font_map = NULL;
char *vc_font_unimap = NULL;
@ -158,8 +158,8 @@ index c1f662b..5f3354e 100644
pid_t font_pid = 0, keymap_pid = 0;
bool font_copy = false;
int r = EXIT_FAILURE;
@@ -286,13 +392,43 @@ int main(int argc, char **argv) {
log_warning("Failed to read /etc/vconsole.conf: %s", strerror(-r));
@@ -276,13 +382,43 @@ int main(int argc, char **argv) {
log_warning("Failed to read /proc/cmdline: %s", strerror(-r));
}
+ if (r <= 0) {
@ -203,7 +203,7 @@ index c1f662b..5f3354e 100644
font_load(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid) >= 0)
r = EXIT_SUCCESS;
@@ -300,6 +436,14 @@ finish:
@@ -290,6 +426,14 @@ finish:
if (keymap_pid > 0)
wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid);
@ -218,7 +218,7 @@ index c1f662b..5f3354e 100644
if (font_pid > 0) {
wait_for_terminate_and_warn(KBD_SETFONT, font_pid);
if (font_copy)
@@ -310,6 +454,12 @@ finish:
@@ -300,6 +444,12 @@ finish:
free(vc_font);
free(vc_font_map);
free(vc_font_unimap);

View File

@ -8,7 +8,7 @@ Subject: handle /etc/HOSTNAME
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
index 4aad17b..e7532f6 100644
index c7f454c..cfbd706 100644
--- a/src/hostname/hostnamed.c
+++ b/src/hostname/hostnamed.c
@@ -129,6 +129,10 @@ static int read_data(void) {
@ -34,9 +34,9 @@ index 4aad17b..e7532f6 100644
return 0;
}
- return write_one_line_file_atomic_label("/etc/hostname", data[PROP_STATIC_HOSTNAME]);
- return write_string_file_atomic_label("/etc/hostname", data[PROP_STATIC_HOSTNAME]);
+
+ r = write_one_line_file_atomic_label("/etc/hostname", data[PROP_STATIC_HOSTNAME]);
+ r = write_string_file_atomic_label("/etc/hostname", data[PROP_STATIC_HOSTNAME]);
+ if (!r) {
+ r = symlink_atomic("/etc/hostname", "/etc/HOSTNAME");
+ }

View File

@ -15,10 +15,10 @@ Subject: handle numlock value in /etc/sysconfig/keyboard
create mode 100644 src/login/numlock-on.c
diff --git a/Makefile.am b/Makefile.am
index e44b075..00905d0 100644
index d594a3d..e82d092 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2113,6 +2113,19 @@ dist_udevrules_DATA += \
@@ -2205,6 +2205,19 @@ dist_udevrules_DATA += \
rules/61-accelerometer.rules
# ------------------------------------------------------------------------------
@ -39,10 +39,10 @@ index e44b075..00905d0 100644
if ENABLE_GTK_DOC
SUBDIRS += \
diff --git a/configure.ac b/configure.ac
index 5421461..a2d8755 100644
index e58d694..222ed22 100644
--- a/configure.ac
+++ b/configure.ac
@@ -787,6 +787,11 @@ AM_CONDITIONAL(ENABLE_MANPAGES, [test "x$have_manpages" = "xyes"])
@@ -789,6 +789,11 @@ AM_CONDITIONAL(ENABLE_MANPAGES, [test "x$have_manpages" = "xyes"])
# ------------------------------------------------------------------------------
@ -112,10 +112,10 @@ index 0000000..77a8368
+ return execv(args[0], (char * const*) args);
+}
diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
index 5f3354e..f5cafc1 100644
index 384f936..e1f8868 100644
--- a/src/vconsole/vconsole-setup.c
+++ b/src/vconsole/vconsole-setup.c
@@ -326,12 +326,14 @@ int main(int argc, char **argv) {
@@ -321,12 +321,14 @@ int main(int argc, char **argv) {
char *vc_kbd_delay = NULL;
char *vc_kbd_rate = NULL;
char *vc_kbd_disable_caps_lock = NULL;
@ -130,7 +130,7 @@ index 5f3354e..f5cafc1 100644
pid_t font_pid = 0, keymap_pid = 0;
bool font_copy = false;
int r = EXIT_FAILURE;
@@ -399,6 +401,7 @@ int main(int argc, char **argv) {
@@ -389,6 +391,7 @@ int main(int argc, char **argv) {
"KBD_DELAY", &vc_kbd_delay,
"KBD_RATE", &vc_kbd_rate,
"KBD_DISABLE_CAPS_LOCK", &vc_kbd_disable_caps_lock,
@ -138,7 +138,7 @@ index 5f3354e..f5cafc1 100644
"COMPOSETABLE", &vc_compose_table,
NULL);
if (r < 0 && r != -ENOENT)
@@ -413,6 +416,37 @@ int main(int argc, char **argv) {
@@ -403,6 +406,37 @@ int main(int argc, char **argv) {
log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r));
disable_capslock = vc_kbd_disable_caps_lock && strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0;
@ -176,7 +176,7 @@ index 5f3354e..f5cafc1 100644
#endif
}
@@ -435,6 +469,10 @@ int main(int argc, char **argv) {
@@ -425,6 +459,10 @@ int main(int argc, char **argv) {
finish:
if (keymap_pid > 0)
wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid);

View File

@ -8,12 +8,12 @@ handle ROOT_USES_LANG=ctype (bnc#792182).
1 file changed, 27 insertions(+)
diff --git a/src/core/locale-setup.c b/src/core/locale-setup.c
index eefb256..d6cbea9 100644
index d7113b9..b3fb603 100644
--- a/src/core/locale-setup.c
+++ b/src/core/locale-setup.c
@@ -70,6 +70,11 @@ static const char * const variable_names[_VARIABLE_MAX] = {
int locale_setup(void) {
char *variables[_VARIABLE_MAX];
char *variables[_VARIABLE_MAX] = {};
int r = 0, i;
+#ifdef HAVE_SYSV_COMPAT
+ char _cleanup_free_ *root_uses_lang;
@ -21,9 +21,9 @@ index eefb256..d6cbea9 100644
+ zero(root_uses_lang);
+#endif
zero(variables);
@@ -119,6 +124,28 @@ int locale_setup(void) {
if (detect_container(NULL) <= 0) {
r = parse_env_file("/proc/cmdline", WHITESPACE,
@@ -117,6 +122,28 @@ int locale_setup(void) {
log_warning("Failed to read /etc/locale.conf: %s", strerror(-r));
}

View File

@ -8,7 +8,7 @@ Subject: module-load: handle SUSE /etc/sysconfig/kernel module list
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
index 9ee2603..2b5b571 100644
index 7b19ee0..36b1a68 100644
--- a/src/modules-load/modules-load.c
+++ b/src/modules-load/modules-load.c
@@ -262,6 +262,9 @@ static int parse_argv(int argc, char *argv[]) {

View File

@ -8,10 +8,10 @@ Subject: optionally warn if nss-myhostname is called
2 files changed, 46 insertions(+)
diff --git a/configure.ac b/configure.ac
index 5e35613..5421461 100644
index 5173783..e58d694 100644
--- a/configure.ac
+++ b/configure.ac
@@ -712,6 +712,17 @@ if test "x$enable_myhostname" != "xno"; then
@@ -714,6 +714,17 @@ if test "x$enable_myhostname" != "xno"; then
fi
AM_CONDITIONAL(HAVE_MYHOSTNAME, [test "$have_myhostname" = "yes"])
@ -30,7 +30,7 @@ index 5e35613..5421461 100644
AC_ARG_WITH(firmware-path,
AS_HELP_STRING([--with-firmware-path=DIR[[[:DIR[...]]]]],
diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c
index b3aaca8..043f279 100644
index 884eb99..dbd9a2d 100644
--- a/src/nss-myhostname/nss-myhostname.c
+++ b/src/nss-myhostname/nss-myhostname.c
@@ -30,6 +30,9 @@
@ -42,10 +42,10 @@ index b3aaca8..043f279 100644
+#endif
#include "ifconf.h"
#include "macro.h"
@@ -44,6 +47,10 @@
#define ALIGN(a) (((a+sizeof(void*)-1)/sizeof(void*))*sizeof(void*))
#define LOCALADDRESS_IPV6 &in6addr_loopback
#define LOOPBACK_INTERFACE "lo"
+#ifdef LOG_NSS_MY_HOSTNAME_WARNING
+static void warn(const char* hn);
@ -54,7 +54,7 @@ index b3aaca8..043f279 100644
enum nss_status _nss_myhostname_gethostbyname4_r(
const char *name,
struct gaih_addrtuple **pat,
@@ -116,6 +123,10 @@ enum nss_status _nss_myhostname_gethostbyname4_r(
@@ -115,6 +122,10 @@ enum nss_status _nss_myhostname_gethostbyname4_r(
return NSS_STATUS_NOTFOUND;
}
@ -65,7 +65,7 @@ index b3aaca8..043f279 100644
/* If this fails, n_addresses is 0. Which is fine */
ifconf_acquire_addresses(&addresses, &n_addresses);
@@ -336,6 +347,10 @@ enum nss_status _nss_myhostname_gethostbyname3_r(
@@ -334,6 +345,10 @@ enum nss_status _nss_myhostname_gethostbyname3_r(
return NSS_STATUS_NOTFOUND;
}
@ -76,7 +76,7 @@ index b3aaca8..043f279 100644
return fill_in_hostent(hn, af, host, buffer, buflen, errnop, h_errnop, ttlp, canonp);
}
@@ -434,6 +449,10 @@ found:
@@ -429,6 +444,10 @@ found:
return NSS_STATUS_UNAVAIL;
}
@ -87,7 +87,7 @@ index b3aaca8..043f279 100644
return fill_in_hostent(hn, af, host, buffer, buflen, errnop, h_errnop, ttlp, NULL);
}
@@ -453,3 +472,19 @@ enum nss_status _nss_myhostname_gethostbyaddr_r(
@@ -448,3 +467,19 @@ enum nss_status _nss_myhostname_gethostbyaddr_r(
errnop, h_errnop,
NULL);
}

View File

@ -8,7 +8,7 @@ Subject: parse /etc/insserv.conf and adds dependencies accordingly
1 file changed, 101 insertions(+)
diff --git a/src/core/service.c b/src/core/service.c
index 98266a5..8707cb5 100644
index cf0bbe0..08fc97c 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -3440,6 +3440,105 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
@ -117,7 +117,7 @@ index 98266a5..8707cb5 100644
static int service_enumerate(Manager *m) {
char **p;
@@ -3602,6 +3701,8 @@ static int service_enumerate(Manager *m) {
@@ -3600,6 +3699,8 @@ static int service_enumerate(Manager *m) {
r = 0;

View File

@ -1,421 +0,0 @@
From: Robert Milasan <rmilasan@suse.com>
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 <md@Linux.IT>
+
+# 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 <http://www.gnu.org/licenses/>.
+
+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=<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
+# 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 <md@Linux.IT>
+# Copyright (C) 2007 Kay Sievers <kay.sievers@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, 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 <http://www.gnu.org/licenses/>.
+
+# debug, if UDEV_LOG=<debug>
+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

View File

@ -1,120 +0,0 @@
From: Robert Milasan <rmilasan@suse.com>
Date: Thu, 12 Jul 2012 15:56:34 +0000
Subject: re-enable by_path links for ata devices
Fix by-path links for ATA transport (bnc#770910)
---
src/udev/udev-builtin-path_id.c | 92 +++++++++++++++++++++++++++++++++++------
1 file changed, 80 insertions(+), 12 deletions(-)
diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
index da02731..a77d4e8 100644
--- a/src/udev/udev-builtin-path_id.c
+++ b/src/udev/udev-builtin-path_id.c
@@ -338,6 +338,85 @@ static struct udev_device *handle_scsi_hyperv(struct udev_device *parent, char *
return parent;
}
+static struct udev_device *handle_ata(struct udev_device *parent, char **path)
+{
+ struct udev_device *hostdev;
+ int host, bus, target, lun;
+ const char *name;
+ char *base;
+ char *pos;
+ DIR *dir;
+ struct dirent *dent;
+ int basenum, len;
+
+ hostdev = udev_device_get_parent_with_subsystem_devtype(parent, "scsi", "scsi_host");
+ if (hostdev == NULL)
+ return NULL;
+
+ name = udev_device_get_sysname(parent);
+ if (sscanf(name, "%d:%d:%d:%d", &host, &bus, &target, &lun) != 4)
+ return NULL;
+
+ /* rebase ata offset to get the local relative number */
+ basenum = -1;
+ base = strdup(udev_device_get_syspath(hostdev));
+ if (base == NULL)
+ return NULL;
+ pos = strrchr(base, '/');
+ if (pos == NULL) {
+ parent = NULL;
+ goto out;
+ }
+ pos[0] = '\0';
+ len = strlen(base) - 5;
+ if (len <= 0) {
+ parent = NULL;
+ goto out;
+ }
+ base[len] = '\0';
+ dir = opendir(base);
+ if (dir == NULL) {
+ parent = NULL;
+ goto out;
+ }
+ for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
+ char *rest;
+ int i;
+
+ if (dent->d_name[0] == '.')
+ continue;
+ if (dent->d_type != DT_DIR && dent->d_type != DT_LNK)
+ continue;
+ if (strncmp(dent->d_name, "ata", 3) != 0)
+ continue;
+ i = strtoul(&dent->d_name[3], &rest, 10);
+
+ /* ata devices start with 1, so decrease by 1 if i is bigger then 0 */
+ if (i > 0)
+ i--;
+ if (rest[0] != '\0')
+ continue;
+ /*
+ * find the smallest number; the host really needs to export its
+ * own instance number per parent device; relying on the global host
+ * enumeration and plainly rebasing the numbers sounds unreliable
+ */
+ if (basenum == -1 || i < basenum)
+ basenum = i;
+ }
+ closedir(dir);
+ if (basenum == -1) {
+ parent = NULL;
+ goto out;
+ }
+ host -= basenum;
+
+ path_prepend(path, "scsi-%u:%u:%u:%u", host, bus, target, lun);
+out:
+ free(base);
+ return hostdev;
+}
+
static struct udev_device *handle_scsi(struct udev_device *parent, char **path)
{
const char *devtype;
@@ -374,19 +453,8 @@ static struct udev_device *handle_scsi(struct udev_device *parent, char **path)
goto out;
}
- /*
- * We do not support the ATA transport class, it uses global counters
- * to name the ata devices which numbers spread across multiple
- * controllers.
- *
- * The real link numbers are not exported. Also, possible chains of ports
- * behind port multipliers cannot be composed that way.
- *
- * Until all that is solved at the kernel level, there are no by-path/
- * links for ATA devices.
- */
if (strstr(name, "/ata") != NULL) {
- parent = NULL;
+ parent = handle_ata(parent, path);
goto out;
}

View File

@ -12,7 +12,7 @@ PIDFile: and X-Systemd-RemainAfterExit to control it.
2 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/src/core/service.c b/src/core/service.c
index e34bcf1..a1b2d93 100644
index 5118b06..c13ff35 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -135,6 +135,7 @@ static void service_init(Unit *u) {

View File

@ -11,10 +11,10 @@ Subject: restore /var/run and /var/lock bind mount if they aren't symlink
create mode 100644 units/var-run.mount
diff --git a/Makefile.am b/Makefile.am
index 00905d0..10609f3 100644
index e82d092..38309a9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -398,6 +398,12 @@ dist_systemunit_DATA = \
@@ -406,6 +406,12 @@ dist_systemunit_DATA = \
units/system-update.target \
units/initrd-switch-root.target
@ -27,7 +27,7 @@ index 00905d0..10609f3 100644
nodist_systemunit_DATA = \
units/getty@.service \
units/serial-getty@.service \
@@ -3913,6 +3919,9 @@ RUNLEVEL4_TARGET_WANTS += \
@@ -4018,6 +4024,9 @@ RUNLEVEL4_TARGET_WANTS += \
systemd-update-utmp-runlevel.service
RUNLEVEL5_TARGET_WANTS += \
systemd-update-utmp-runlevel.service

View File

@ -1,8 +1,7 @@
From fced3673ee1001dc905206f9a92ea2062f951d3c Mon Sep 17 00:00:00 2001
From: Robert Schweikert <rjschwei@suse.com>
Date: Fri, 12 Apr 2013 12:08:16 -0400
Subject: [PATCH] rules: add lid switch of ARM based Chromebook as a power
switch to logind
Subject: rules: add lid switch of ARM based Chromebook as a power switch to
logind
---
src/login/70-power-switch.rules | 1 +
@ -19,6 +18,3 @@ index 36fb827..d925ab7 100644
+SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="gpio-keys.8", TAG+="power-switch"
LABEL="power_switch_end"
--
1.8.1.4

View File

@ -1,24 +0,0 @@
From: Robert Milasan <rmilasan@suse.com>
Date: Wed, 27 Jun 2012 08:55:59 +0000
Subject: rules create by id scsi links for ATA devices
Re-enable creation of by-id scsi links for ATA devices. (bnc#769002)
---
rules/60-persistent-storage.rules | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
index a4d009a..f720c7e 100644
--- a/rules/60-persistent-storage.rules
+++ b/rules/60-persistent-storage.rules
@@ -42,6 +42,10 @@ KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="s
KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"
+# scsi compat links for ATA devices
+KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}"
+KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n"
+
# firewire
KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}"
KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n"

View File

@ -13,7 +13,7 @@ Fixes https://bugzilla.novell.com/show_bug.cgi?id=721426
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/core/service.c b/src/core/service.c
index 8707cb5..e34bcf1 100644
index 08fc97c..5118b06 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -2072,8 +2072,13 @@ static void service_enter_running(Service *s, ServiceResult f) {

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9a08baa8fa5c48f0aab683b2f771e4be75c3c852afc45e5cb4df06428ac8c217
size 2109864

3
systemd-202.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8c43073252a52eb9f9ab9bd698be0192bcb2175ba5daba6057250083dd64e059
size 2149860

View File

@ -1,3 +1,31 @@
-------------------------------------------------------------------
Fri Apr 19 16:40:17 UTC 2013 - fcrozat@suse.com
- Update to release 202:
+ 'systemctl list-jobs' got some polishing. '--type=' argument
may now be passed more than once. 'systemctl list-sockets' has
been added.
+ systemd gained a new unit 'systemd-static-nodes.service'
    that generates static device nodes earlier during boot, and
    can run in conjunction with udev.
+ systemd-nspawn now places all containers in the new /machine
    top-level cgroup directory in the name=systemd hierarchy.
+ bootchart can now store its data in the journal.
+ journactl can now take multiple --unit= and --user-unit=
    switches.
+ The cryptsetup logic now understands the "luks.key=" kernel
    command line switch. If a configured key file is missing, it
will fallback to prompting the user.
- Rebase some patches
- Update handle-SYSTEMCTL_OPTIONS-environment-variable.patch to
properly handle SYSTEMCTL_OPTIONS
-------------------------------------------------------------------
Fri Apr 19 12:47:13 UTC 2013 - max@suse.com
- Fix regression in the default for tmp auto-deletion
(systemd-tmp-safe-defaults.patch, FATE#314974).
-------------------------------------------------------------------
Fri Apr 12 16:58:31 UTC 2013 - fcrozat@suse.com
@ -131,6 +159,12 @@ reset by assigning empty string to them, using drop-in.
to systemd unit files.
- Merge patches for nss-myhostname package to this package.
-------------------------------------------------------------------
Fri Apr 12 16:17:04 UTC 2013 - rschweikert@suse.com
- Add chromebook lid switch as a power switch to logind rule to
enable suspend on lid close
-------------------------------------------------------------------
Mon Apr 8 14:51:47 CEST 2013 - fcrozat@suse.com

View File

@ -25,7 +25,7 @@
Name: systemd-mini
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 200
Version: 202
Release: 0
Summary: A System and Session Manager
License: LGPL-2.1+
@ -151,6 +151,8 @@ Patch26: ensure-systemd-udevd-is-started-before-local-fs-pre-for-lo.patch
Patch27: apply-ACL-for-nvidia-device-nodes.patch
# PATCH-FIX-OPENSUSE Revert-service-drop-support-for-SysV-scripts-for-the-early.patch fcrozat@suse.com -- handle boot.* initscripts
Patch37: Revert-service-drop-support-for-SysV-scripts-for-the-early.patch
# PATCH-FIX-OPENSUSE systemd-tmp-safe-defaults.patch -- FATE#314974 max@suse.de -- Return to SUSE's "safe defaults" policy on deleting files from tmp direcorie.
Patch39: systemd-tmp-safe-defaults.patch
# Upstream First - Policy:
# Never add any patches to this package without the upstream commit id
@ -162,6 +164,8 @@ Patch23: disable-nss-myhostname-warning-bnc-783841.patch
Patch24: handle-etc-HOSTNAME.patch
# PATCH-FIX-OPENSUSE Forward-suspend-hibernate-calls-to-pm-utils.patch fcrozat@suse.com bnc#790157 -- forward to pm-utils
Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
# PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
# udev patches
# PATCH-FIX-OPENSUSE 1001-Reinstate-TIMEOUT-handling.patch
@ -396,6 +400,8 @@ cp %{SOURCE7} m4/
%patch26 -p1
%patch27 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
%build
autoreconf -fiv

View File

@ -1,17 +1,26 @@
max@suse.de FATE#314974
From: Reinhard Max <max@suse.de>
Date: Fri, 19 Apr 2013 16:12:28 +0200
Subject: systemd tmp safe defaults
Index: systemd-200/tmpfiles.d/tmp.conf
===================================================================
--- systemd-200.orig/tmpfiles.d/tmp.conf 2013-03-20 22:58:40.159281473 +0100
+++ systemd-200/tmpfiles.d/tmp.conf 2013-04-19 14:37:47.500403658 +0200
@@ -8,8 +8,8 @@
Fix regression in the default for tmp auto-deletion (FATE#314974).
SUSE policy is to not clean /tmp by default.
---
tmpfiles.d/tmp.conf | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/tmpfiles.d/tmp.conf b/tmpfiles.d/tmp.conf
index 3b534a1..99eb6f2 100644
--- a/tmpfiles.d/tmp.conf
+++ b/tmpfiles.d/tmp.conf
@@ -8,8 +8,9 @@
# See tmpfiles.d(5) for details
# Clear tmp directories separately, to make them easier to override
-d /tmp 1777 root root 10d
-d /var/tmp 1777 root root 30d
+d /tmp 1777 root root
+d /var/tmp 1777 root root
+# SUSE policy: we don't clean those directories
+d /tmp 1777 root root -
+d /var/tmp 1777 root root -
# Exclude namespace mountpoints created with PrivateTmp=yes
x /tmp/systemd-private-*

View File

@ -1,3 +1,25 @@
-------------------------------------------------------------------
Fri Apr 19 16:40:17 UTC 2013 - fcrozat@suse.com
- Update to release 202:
+ 'systemctl list-jobs' got some polishing. '--type=' argument
may now be passed more than once. 'systemctl list-sockets' has
been added.
+ systemd gained a new unit 'systemd-static-nodes.service'
    that generates static device nodes earlier during boot, and
    can run in conjunction with udev.
+ systemd-nspawn now places all containers in the new /machine
    top-level cgroup directory in the name=systemd hierarchy.
+ bootchart can now store its data in the journal.
+ journactl can now take multiple --unit= and --user-unit=
    switches.
+ The cryptsetup logic now understands the "luks.key=" kernel
    command line switch. If a configured key file is missing, it
will fallback to prompting the user.
- Rebase some patches
- Update handle-SYSTEMCTL_OPTIONS-environment-variable.patch to
properly handle SYSTEMCTL_OPTIONS
-------------------------------------------------------------------
Fri Apr 19 12:47:13 UTC 2013 - max@suse.com

View File

@ -23,7 +23,7 @@
Name: systemd
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 200
Version: 202
Release: 0
Summary: A System and Session Manager
License: LGPL-2.1+
@ -159,8 +159,8 @@ Patch23: disable-nss-myhostname-warning-bnc-783841.patch
Patch24: handle-etc-HOSTNAME.patch
# PATCH-FIX-OPENSUSE Forward-suspend-hibernate-calls-to-pm-utils.patch fcrozat@suse.com bnc#790157 -- forward to pm-utils
Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
# PATCH-FIX-UPSTREAM lid-switch-chromebook.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
Patch38: lid-switch-chromebook.patch
# PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
# udev patches
# PATCH-FIX-OPENSUSE 1001-Reinstate-TIMEOUT-handling.patch

View File

@ -7,10 +7,10 @@ Subject: timedate: add support for openSUSE version of /etc/sysconfig/clock
1 file changed, 7 insertions(+)
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
index 16fffd0..b1b1859 100644
index cdb6e5b..7246452 100644
--- a/src/timedate/timedated.c
+++ b/src/timedate/timedated.c
@@ -180,6 +180,13 @@ static int read_data(void) {
@@ -182,6 +182,13 @@ static int read_data(void) {
goto have_timezone;
}
}

View File

@ -1,77 +0,0 @@
From: Robert Milasan <rmilasan@suse.com>
Date: Thu, 28 Mar 2013 09:24:43 +0000
Subject: udev always rename network
udev: ensure that the network interfaces are renamed even if they exist
(bnc#809843).
---
src/udev/udev-event.c | 46 +++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 43 insertions(+), 3 deletions(-)
diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
index 3db2cb7..3ee9039 100644
--- a/src/udev/udev-event.c
+++ b/src/udev/udev-event.c
@@ -750,6 +750,7 @@ static int rename_netif(struct udev_event *event)
struct udev_device *dev = event->dev;
int sk;
struct ifreq ifr;
+ int loop;
int err;
log_debug("changing net interface name from '%s' to '%s'\n",
@@ -766,12 +767,51 @@ static int rename_netif(struct udev_event *event)
strscpy(ifr.ifr_name, IFNAMSIZ, udev_device_get_sysname(dev));
strscpy(ifr.ifr_newname, IFNAMSIZ, event->name);
err = ioctl(sk, SIOCSIFNAME, &ifr);
- if (err >= 0) {
+ if (err == 0) {
print_kmsg("renamed network interface %s to %s\n", ifr.ifr_name, ifr.ifr_newname);
- } else {
+ goto out;
+ }
+
+ /* keep trying if the destination interface name already exists */
+ err = -errno;
+ if (err != -EEXIST) {
+ goto out;
+ }
+
+ /* free our own name, another process may wait for us */
+ snprintf(ifr.ifr_newname, IFNAMSIZ, "rename%u", udev_device_get_ifindex(dev));
+ err = ioctl(sk, SIOCSIFNAME, &ifr);
+ if (err < 0) {
err = -errno;
- log_error("error changing net interface name %s to %s: %m\n", ifr.ifr_name, ifr.ifr_newname);
+ goto out;
}
+
+ /* log temporary name */
+ print_kmsg("renamed network interface %s to %s\n", ifr.ifr_name, ifr.ifr_newname);
+
+ /* wait a maximum of 90 seconds for our target to become available */
+ strscpy(ifr.ifr_name, IFNAMSIZ, ifr.ifr_newname);
+ strscpy(ifr.ifr_newname, IFNAMSIZ, event->name);
+ loop = 90 * 20;
+ while (loop--) {
+ const struct timespec duration = { 0, 1000 * 1000 * 1000 / 20 };
+
+ log_debug("wait for netif '%s' to become free, loop=%i\n", event->name, (90 * 20) - loop);
+ nanosleep(&duration, NULL);
+
+ err = ioctl(sk, SIOCSIFNAME, &ifr);
+ if (err == 0) {
+ print_kmsg("renamed network interface %s to %s\n", ifr.ifr_name, ifr.ifr_newname);
+ break;
+ }
+ err = -errno;
+ if (err != -EEXIST)
+ break;
+ }
+
+out:
+ if (err < 0)
+ log_error("error changing net interface name %s to %s: %m\n", ifr.ifr_name, ifr.ifr_newname);
close(sk);
return err;
}

View File

@ -1,22 +0,0 @@
From: Robert Milasan <rmilasan@suse.com>
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"

View File

@ -1,22 +0,0 @@
From: Robert Milasan <rmilasan@suse.com>
Date: Mon, 6 Aug 2012 13:35:34 +0000
Subject: udev netlink null rules
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 5a90b60..2a0bf60 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -1410,6 +1410,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));
+ if (rules == NULL)
+ rules = udev_rules_new(udev, resolve_names);
if (event_queue_insert(dev) < 0)
udev_device_unref(dev);
}