From d14a25fc4f65ae3d6e62f4668e9cb88d74834255 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 18 Mar 2012 00:02:54 +0000 Subject: Sun Mar 18 00:02:53 UTC 2012 --- core/udev/0001-reinstate-TIMEOUT-handling.patch | 126 ++++++++++++++++++++++++ core/udev/PKGBUILD | 18 ++-- 2 files changed, 137 insertions(+), 7 deletions(-) create mode 100644 core/udev/0001-reinstate-TIMEOUT-handling.patch (limited to 'core/udev') diff --git a/core/udev/0001-reinstate-TIMEOUT-handling.patch b/core/udev/0001-reinstate-TIMEOUT-handling.patch new file mode 100644 index 000000000..9b251b283 --- /dev/null +++ b/core/udev/0001-reinstate-TIMEOUT-handling.patch @@ -0,0 +1,126 @@ +From 86617453cd78bf88d347f0e75a5be8b5ebac6c2e Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Thu, 15 Mar 2012 02:12:43 +0100 +Subject: [PATCH] reinstate TIMEOUT= handling + +This reverts 43d5c5f03645c4b842659f9b5bd0ae465e885e92 and +57c6f8ae5f52a6e8ffc66a54966346f733dded39. + +Signed-off-by: Tom Gundersen +--- + src/libudev-device.c | 19 +++++++++++++++++++ + src/libudev-private.h | 1 + + src/udevd.c | 13 ++++++++++--- + 3 files changed, 30 insertions(+), 3 deletions(-) + +diff --git a/src/libudev-device.c b/src/libudev-device.c +index 10f28b8..639c367 100644 +--- a/src/libudev-device.c ++++ b/src/libudev-device.c +@@ -68,6 +68,7 @@ struct udev_device { + struct udev_list tags_list; + unsigned long long int seqnum; + unsigned long long int usec_initialized; ++ int timeout; + int devlink_priority; + int refcount; + dev_t devnum; +@@ -160,6 +161,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; +@@ -414,6 +430,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 (strncmp(property, "SEQNUM=", 7) == 0) { + udev_device_set_seqnum(udev_device, strtoull(&property[7], NULL, 10)); ++ } else if (strncmp(property, "TIMEOUT=", 8) == 0) { ++ udev_device_set_timeout(udev_device, strtoull(&property[8], NULL, 10)); + } else if (strncmp(property, "IFINDEX=", 8) == 0) { + udev_device_set_ifindex(udev_device, strtoull(&property[8], NULL, 10)); + } else if (strncmp(property, "DEVMODE=", 8) == 0) { +@@ -599,6 +617,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-private.h b/src/libudev-private.h +index 5f5c64a..ec63b67 100644 +--- a/src/libudev-private.h ++++ b/src/libudev-private.h +@@ -87,6 +87,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); + unsigned long long udev_device_get_usec_initialized(struct udev_device *udev_device); + void udev_device_set_usec_initialized(struct udev_device *udev_device, unsigned long long usec_initialized); + int udev_device_get_devlink_priority(struct udev_device *udev_device); +diff --git a/src/udevd.c b/src/udevd.c +index 1702217..88e9272 100644 +--- a/src/udevd.c ++++ b/src/udevd.c +@@ -401,7 +401,7 @@ out: + } + } + +-static void event_run(struct event *event) ++static void event_run(struct event *event, bool force) + { + struct udev_list_node *loop; + +@@ -427,7 +427,7 @@ static void event_run(struct event *event) + return; + } + +- if (children >= children_max) { ++ if (!force && children >= children_max) { + if (children_max > 1) + info(event->udev, "maximum number (%i) of children reached\n", children); + return; +@@ -461,6 +461,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; + } + +@@ -577,7 +584,7 @@ static void event_queue_start(struct udev *udev) + continue; + } + +- event_run(event); ++ event_run(event, false); + } + } + +-- +1.7.9.4 + diff --git a/core/udev/PKGBUILD b/core/udev/PKGBUILD index bc45f9f4e..114f524b9 100644 --- a/core/udev/PKGBUILD +++ b/core/udev/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 153480 2012-03-14 23:26:14Z tomegun $ +# $Id: PKGBUILD 153633 2012-03-16 22:34:33Z tomegun $ # Maintainer: Tom Gundersen # Contributor: Aaron Griffin # Contributor: Tobias Powalowski @@ -6,14 +6,15 @@ pkgname=udev pkgver=181 -pkgrel=4 +pkgrel=5 pkgdesc="The userspace dev tools (udev)" -depends=('util-linux' 'libusb-compat' 'glib2' 'kmod' 'pciutils' 'usbutils' 'pciutils' 'acl') +depends=('util-linux' 'libusb-compat' 'glib2' 'kmod' 'pciutils' 'usbutils' 'acl') install=udev.install arch=(i686 x86_64) license=('GPL') makedepends=('gobject-introspection' 'gperf' 'libxslt' 'usbutils' 'kmod') source=(ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.xz + 0001-reinstate-TIMEOUT-handling.patch initcpio-hooks-udev initcpio-install-udev) url="http://git.kernel.org/?p=linux/hotplug/udev.git;a=summary" @@ -24,6 +25,8 @@ options=(!makeflags !libtool) build() { cd $srcdir/$pkgname-$pkgver + patch -p1 -i ../0001-reinstate-TIMEOUT-handling.patch + ./configure --prefix=/usr \ --with-rootprefix= \ --sysconfdir=/etc \ @@ -39,6 +42,10 @@ package() { cd $srcdir/$pkgname-$pkgver make DESTDIR=${pkgdir} install + # install the mkinitpcio hook + install -D -m644 ../initcpio-hooks-udev ${pkgdir}/usr/lib/initcpio/hooks/udev + install -D -m644 ../initcpio-install-udev ${pkgdir}/usr/lib/initcpio/install/udev + # udevd moved, symlink to make life easy for restarting udevd manually ln -s ../../lib/udev/udevd ${pkgdir}/usr/bin/udevd @@ -52,11 +59,8 @@ package() { s#GROUP="tape"#GROUP="storage"#g; s#GROUP="cdrom"#GROUP="optical"#g' $i done - - # install the mkinitpcio hook - install -D -m644 ../initcpio-hooks-udev ${pkgdir}/lib/initcpio/hooks/udev - install -D -m644 ../initcpio-install-udev ${pkgdir}/lib/initcpio/install/udev } md5sums=('0d7af750702620a871b9f9b98d8ad859' + 'f758b3e62ab77a1a6b7be12bb900cb2d' 'a4dd853050bf2e0ae6b2e3d2c75499c2' 'ee0bfe91a20fff12cc25ab1d1e024853') -- cgit v1.2.3-54-g00ecf