Compare commits

...
Sign in to create a new pull request.

13 commits

Author SHA1 Message Date
Fedora Release Engineering
22c1cc9bc2 dist-git conversion 2010-07-29 14:38:49 +00:00
John W. Linville
5343435643 forgot to actually bump release... 2010-02-03 14:21:20 +00:00
John W. Linville
5c91f65fc5 rules: add rfcomm* to group dialout (bug #561354) 2010-02-03 14:19:54 +00:00
Bill Nottingham
eb424686b4 Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-26 01:13:35 +00:00
Harald Hoyer
6132eeb5d9 - fix scsi_id segfault (bug #516920) 2009-09-14 17:02:57 +00:00
Harald Hoyer
6581278683 - try to fix audio cdrom problems (bug #513495) 2009-08-04 09:27:17 +00:00
Harald Hoyer
7780338862 - try to fix audio cdrom problems (bug #513495) 2009-08-04 09:26:45 +00:00
Harald Hoyer
9b86fedf33 - add /dev/fuse to be created by start_udev
- add "udevlog" kernel command line option to redirect the output of udevd
    to /dev/.udev/udev.log
2009-07-14 10:06:45 +00:00
Harald Hoyer
9c5117be4c - really try to kill udevd in %post (bug #481075)
- show "isw_raid_member" before "linux_raid_member" with vol_id (bug
    #499246)
- add new ACPI modalias for floppy module autoloading (bug #503308)
- add isdn capi rules (bug #507241)
- backport several bugfixes from git
2009-06-30 11:46:28 +00:00
Harald Hoyer
d63eb6b16c - cdrom_id: add and use ID_CDROM_MEDIA to decide if we run vol_id (bug
#496298)
- Resolves: rhbz#496298
2009-04-24 10:39:08 +00:00
Harald Hoyer
e36c8fb246 tag inc 2009-04-24 10:35:16 +00:00
Harald Hoyer
de8f844fac - cdrom_id: add and use ID_CDROM_MEDIA to decide if we run vol_id (bug
#496298)
- Resolves: rhbz#496298
2009-04-24 10:33:07 +00:00
Jesse Keating
904c2ce7a9 Initialize branch F-11 for udev 2009-04-15 05:27:46 +00:00
15 changed files with 503 additions and 60 deletions

View file

View file

@ -1,22 +0,0 @@
# Makefile for source rpm: udev
# $Id: Makefile,v 1.2 2004/11/04 16:16:37 harald Exp $
NAME := udev
SPECFILE = $(firstword $(wildcard *.spec))
UPSTREAM_CHECKS = sign
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attempt a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

View file

@ -0,0 +1,34 @@
From 0ee946c41f7fb215c2cca2469e63af9369b2b7e2 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Tue, 5 May 2009 14:52:38 -0400
Subject: [PATCH] Prioritize dmraid formats over md raid.
Since dmraid formats are what BIOS recognizes, they should be recognized
before linux's "md" raid format.
---
extras/volume_id/lib/volume_id.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/extras/volume_id/lib/volume_id.c b/extras/volume_id/lib/volume_id.c
index 48bfd88..b3793fd 100644
--- a/extras/volume_id/lib/volume_id.c
+++ b/extras/volume_id/lib/volume_id.c
@@ -41,7 +41,6 @@ struct prober {
};
static const struct prober prober_raid[] = {
- { volume_id_probe_linux_raid, { "linux_raid", } },
{ volume_id_probe_ddf_raid, { "ddf_raid", } },
{ volume_id_probe_intel_software_raid, { "isw_raid", } },
{ volume_id_probe_lsi_mega_raid, { "lsi_mega_raid", } },
@@ -55,6 +54,7 @@ static const struct prober prober_raid[] = {
{ volume_id_probe_lvm1, { "lvm1", } },
{ volume_id_probe_lvm2, { "lvm2", } },
{ volume_id_probe_highpoint_37x_raid, { "highpoint_raid", } },
+ { volume_id_probe_linux_raid, { "linux_raid", } },
};
static const struct prober prober_filesystem[] = {
--
1.6.2.2

View file

@ -99,36 +99,27 @@ make_extra_nodes () {
USE_MD5="false"
[ -x /usr/bin/md5sum -a "$UDEV_USE_MAKEDEV_CACHE" == "yes" ] && USE_MD5="true"
for i in 0 1 2 3 4 5 6 7; do
[ -b /dev/loop$i ] || /bin/mknod -m 0640 /dev/loop$i b 7 $i
/bin/chown root:disk /dev/loop$i
done
for i in 0 1 2 3; do
[ -c /dev/lp$i ] || /bin/mknod -m 0660 /dev/lp$i c 6 $i
/bin/chown root:lp /dev/lp$i
done
[ -d /dev/net ] || mkdir -p /dev/net
/bin/mknod -m 0640 /dev/loop0 b 7 0
/bin/chown root:disk /dev/loop0
/bin/mknod -m 0640 /dev/loop1 b 7 1
/bin/chown root:disk /dev/loop1
/bin/mknod -m 0640 /dev/loop2 b 7 2
/bin/chown root:disk /dev/loop2
/bin/mknod -m 0640 /dev/loop3 b 7 3
/bin/chown root:disk /dev/loop3
/bin/mknod -m 0640 /dev/loop4 b 7 4
/bin/chown root:disk /dev/loop4
/bin/mknod -m 0640 /dev/loop5 b 7 5
/bin/chown root:disk /dev/loop5
/bin/mknod -m 0640 /dev/loop6 b 7 6
/bin/chown root:disk /dev/loop6
/bin/mknod -m 0640 /dev/loop7 b 7 7
/bin/chown root:disk /dev/loop7
/bin/mknod -m 0600 /dev/net/tun c 10 200
/bin/chown root:root /dev/net/tun
/bin/mknod -m 0600 /dev/ppp c 108 0
/bin/chown root:root /dev/ppp
/bin/mknod -m 0660 /dev/lp0 c 6 0
/bin/chown root:lp /dev/lp0
/bin/mknod -m 0660 /dev/lp1 c 6 1
/bin/chown root:lp /dev/lp1
/bin/mknod -m 0660 /dev/lp2 c 6 2
/bin/chown root:lp /dev/lp2
/bin/mknod -m 0660 /dev/lp3 c 6 3
/bin/chown root:lp /dev/lp3
[ -x /sbin/restorecon ] && /sbin/restorecon /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5 /dev/loop6 /dev/loop7 /dev/net/tun /dev/ppp /dev/lp0 /dev/lp1 /dev/lp2 /dev/lp3
[ -c /dev/net/tun ] || /bin/mknod -m 0600 /dev/net/tun c 10 200
#/bin/chown root:root /dev/net/tun
[ -c /dev/ppp ] || /bin/mknod -m 0600 /dev/ppp c 108 0
#/bin/chown root:root /dev/ppp
[ -c /dev/fuse ] || /bin/mknod -m 0666 /dev/fuse c 10 229
#/bin/chown root:root /dev/fuse
[ -x /sbin/restorecon ] && /sbin/restorecon /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5 /dev/loop6 /dev/loop7 /dev/net/tun /dev/ppp /dev/lp0 /dev/lp1 /dev/lp2 /dev/lp3 /dev/fuse
if [ -x "$MAKEDEV" ]; then
for i in /etc/udev/makedev.d/*.nodes; do
@ -258,6 +249,7 @@ make_extra_nodes &
cmdline=$(cat /proc/cmdline)
kill_udevd > "$udev_root/null" 2>&1
rm -fr $udev_root/.udev > "$udev_root/null" 2>&1
mkdir -p $udev_root/.udev > "$udev_root/null" 2>&1
UDEV_OPTS=""
if [ -f "/sys/class/tty/console/uevent" ]; then
# trigger the sorted events
@ -266,7 +258,14 @@ if [ -f "/sys/class/tty/console/uevent" ]; then
if strstr "$cmdline" udevtrace; then
UDEV_OPTS="$UDEV_OPTS --debug-trace"
fi
/sbin/udevd -d $UDEV_OPTS
if strstr "$cmdline" udevlog; then
UDEV_OPTS="$UDEV_OPTS --debug"
/sbin/udevd -d $UDEV_OPTS 2>$udev_root/.udev/udev.log
else
/sbin/udevd -d $UDEV_OPTS
fi
wait
ret=$[$ret + $?]

12
udev-141-max_short.patch Normal file
View file

@ -0,0 +1,12 @@
diff -up udev-141/extras/scsi_id/scsi_serial.c.max_short udev-141/extras/scsi_id/scsi_serial.c
--- udev-141/extras/scsi_id/scsi_serial.c.max_short 2009-09-14 18:31:54.000000000 +0200
+++ udev-141/extras/scsi_id/scsi_serial.c 2009-09-14 18:31:57.000000000 +0200
@@ -587,7 +587,7 @@ static int check_fill_0x83_prespc3(struc
serial[j++] = hex_str[(page_83[4+i] & 0xf0) >> 4];
serial[j++] = hex_str[ page_83[4+i] & 0x0f];
}
- strcpy(serial_short, serial);
+ strncpy(serial_short, serial, max_len-1);
return 0;
}

21
udev-142-rfcomm.patch Normal file
View file

@ -0,0 +1,21 @@
commit 6d34b6af12144a89f2b41c2c2d7613706b34122a
Author: Kay Sievers <kay.sievers@vrfy.org>
Date: Tue Apr 28 11:24:25 2009 +0200
rules: add rfcomm* to group dialout
https://bugs.launchpad.net/bugs/368109
diff --git a/rules/rules.d/50-udev-default.rules b/rules/rules.d/50-udev-default.rules
index 6bf45cc..6ce3e7f 100644
--- a/rules/rules.d/50-udev-default.rules
+++ b/rules/rules.d/50-udev-default.rules
@@ -13,7 +13,7 @@ KERNEL=="vcs|vcs[0-9]*|vcsa|vcsa[0-9]*", GROUP="tty"
KERNEL=="console", MODE="0600"
# serial
-KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*", GROUP="dialout"
+KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
KERNEL=="ppp", MODE="0600"
KERNEL=="mwave", NAME="modems/mwave", GROUP="dialout"
KERNEL=="hvc*|hvsi*", GROUP="dialout"

View file

@ -0,0 +1,35 @@
From: Scott James Remnant <scott@ubuntu.com>
Date: Thu, 14 May 2009 11:42:44 +0000 (+0100)
Subject: OWNER/GROUP: fix if logic
X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=055e40edc647d8ccfc27c9cd3163ab5dbf63ed6c
OWNER/GROUP: fix if logic
The introduction of the --resolve-names=early/never code introduced a
bug to the OWNER/GROUP lookup. Previously if the name had contained $,
lookup would have been performed later; after the patch, the key ended
up being ignored!
---
diff --git a/udev/udev-rules.c b/udev/udev-rules.c
index b8b7e52..39fe55a 100644
--- a/udev/udev-rules.c
+++ b/udev/udev-rules.c
@@ -1431,7 +1431,7 @@ static int add_rule(struct udev_rules *rules, char *line,
} else if ((rules->resolve_names > 0) && strchr("$%", value[0]) == NULL) {
uid = add_uid(rules, value);
rule_add_key(&rule_tmp, TK_A_OWNER_ID, op, NULL, &uid);
- } else if (rules->resolve_names == 0) {
+ } else if (rules->resolve_names >= 0) {
rule_add_key(&rule_tmp, TK_A_OWNER, op, value, NULL);
}
rule_tmp.rule.rule.flags = 1;
@@ -1448,7 +1448,7 @@ static int add_rule(struct udev_rules *rules, char *line,
} else if ((rules->resolve_names > 0) && strchr("$%", value[0]) == NULL) {
gid = add_gid(rules, value);
rule_add_key(&rule_tmp, TK_A_GROUP_ID, op, NULL, &gid);
- } else if (rules->resolve_names == 0) {
+ } else if (rules->resolve_names >= 0) {
rule_add_key(&rule_tmp, TK_A_GROUP, op, value, NULL);
}
rule_tmp.rule.rule.flags = 1;

View file

@ -0,0 +1,31 @@
From: Kay Sievers <kay.sievers@vrfy.org>
Date: Wed, 13 May 2009 16:01:32 +0000 (+0200)
Subject: fix possible endless loop for GOTO to non-existent LABEL
X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=0c37798916bc87d72f5f1399d9e050307901db84
fix possible endless loop for GOTO to non-existent LABEL
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526365
---
diff --git a/udev/udev-rules.c b/udev/udev-rules.c
index fac418e..b8b7e52 100644
--- a/udev/udev-rules.c
+++ b/udev/udev-rules.c
@@ -1610,6 +1610,7 @@ static int parse_file(struct udev_rules *rules, const char *filename, unsigned s
if (strcmp(label, &rules->buf[rules->tokens[j].rule.label_off]) != 0)
continue;
rules->tokens[i].key.rule_goto = j;
+ break;
}
if (rules->tokens[i].key.rule_goto == 0)
err(rules->udev, "GOTO '%s' has no matching label in: '%s'\n", label, filename);
@@ -2504,6 +2505,8 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
break;
}
case TK_A_GOTO:
+ if (cur->key.rule_goto == 0)
+ break;
cur = &rules->tokens[cur->key.rule_goto];
continue;
case TK_A_LAST_RULE:

View file

@ -0,0 +1,38 @@
From: Kay Sievers <kay.sievers@vrfy.org>
Date: Thu, 16 Apr 2009 22:29:56 +0000 (+0200)
Subject: cdrom_id: add Xen cdrom support
X-Git-Tag: 142~43
X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=55d8f5e208396589476583dad8f2a7f2db3e2ef5
cdrom_id: add Xen cdrom support
---
diff --git a/extras/cdrom_id/60-cdrom_id.rules b/extras/cdrom_id/60-cdrom_id.rules
index 12fbf63..a3e8e3c 100644
--- a/extras/cdrom_id/60-cdrom_id.rules
+++ b/extras/cdrom_id/60-cdrom_id.rules
@@ -1,3 +1,5 @@
-# import optical drive properties
+# do not edit this file, it will be overwritten on update
-ACTION=="add|change", KERNEL=="sr[0-9]*|hd[a-z]|pcd[0-9]*", IMPORT{program}="cdrom_id --export $tempnode"
+# import optical drive properties
+ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", \
+ KERNEL=="sr[0-9]*|hd[a-z]|pcd[0-9]|xvd*", IMPORT{program}="cdrom_id --export $tempnode"
diff --git a/extras/cdrom_id/cdrom_id.c b/extras/cdrom_id/cdrom_id.c
index 7be0789..c578f12 100644
--- a/extras/cdrom_id/cdrom_id.c
+++ b/extras/cdrom_id/cdrom_id.c
@@ -567,10 +567,8 @@ int main(int argc, char *argv[])
}
/* check drive */
- if (cd_inquiry(udev, fd) < 0) {
- rc = 2;
- goto exit;
- }
+ if (cd_inquiry(udev, fd) < 0)
+ goto print;
/* read drive and possibly current profile */
if (cd_profiles(udev, fd) < 0)

View file

@ -0,0 +1,45 @@
From: Kay Sievers <kay.sievers@vrfy.org>
Date: Thu, 14 May 2009 10:57:19 +0000 (+0200)
Subject: rule-generator: cd - skip by-path links if we create by-id links
X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=b4fa1b67f86c9555cbb41c57774761730f6b8939
rule-generator: cd - skip by-path links if we create by-id links
---
diff --git a/extras/rule_generator/75-cd-aliases-generator.rules b/extras/rule_generator/75-cd-aliases-generator.rules
index e357a6a..e6da010 100644
--- a/extras/rule_generator/75-cd-aliases-generator.rules
+++ b/extras/rule_generator/75-cd-aliases-generator.rules
@@ -1,6 +1,9 @@
# these rules generate rules for the /dev/{cdrom,dvd,...} symlinks
-# the path of removable devices changes frequently
-ACTION=="add", SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394", ENV{ID_CDROM}=="?*", ENV{GENERATED}!="?*", PROGRAM="write_cd_rules by-id", SYMLINK+="%c"
+# the "path" of usb/ieee1394 devices changes frequently, use "id"
+ACTION=="add", SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394", ENV{ID_CDROM}=="?*", ENV{GENERATED}!="?*", \
+ PROGRAM="write_cd_rules by-id", SYMLINK+="%c", GOTO="persistent_cd_end"
ACTION=="add", SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{GENERATED}!="?*", PROGRAM="write_cd_rules", SYMLINK+="%c"
+
+LABEL="persistent_cd_end"
diff --git a/extras/rule_generator/write_cd_rules b/extras/rule_generator/write_cd_rules
index 398cd27..0d16fe6 100644
--- a/extras/rule_generator/write_cd_rules
+++ b/extras/rule_generator/write_cd_rules
@@ -97,7 +97,7 @@ choose_rules_file
link_num=$(find_next_available 'cdrom[0-9]*')
-match="ENV{ID_CDROM}==\"?*\", $RULE"
+match="SUBSYSTEM==\"block\", ENV{ID_CDROM}==\"?*\", $RULE"
comment="$ID_MODEL ($ID_PATH)"
@@ -108,6 +108,7 @@ comment="$ID_MODEL ($ID_PATH)"
write_rule "$match" "dvd$link_num"
[ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ] && \
write_rule "$match" "dvdrw$link_num"
+echo >> $RULES_FILE
unlock_rules_file

View file

@ -0,0 +1,62 @@
From: Kay Sievers <kay.sievers@vrfy.org>
Date: Mon, 25 May 2009 22:50:45 +0000 (+0200)
Subject: cdrom_id: suppress ID_CDROM_MEDIA_STATE=blank for plain non-writable CDROM media
X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=d3c8231e738dd286591c1becc2f327ed55ed89d1
cdrom_id: suppress ID_CDROM_MEDIA_STATE=blank for plain non-writable CDROM media
Some broken fake cdrom drives return ID_CDROM_MEDIA_STATE=blank.
$ /lib/udev/cdrom_id -d /dev/sr1
main: probing: '/dev/sr1'
cd_inquiry: INQUIRY: [Nokia ][S60 ][1.0 ]
cd_profiles: GET CONFIGURATION: number of profiles 76
cd_profiles: current profile 0x08
cd_media_toc: READ TOC: len: 12
cd_media_toc: last track 1 starts at block 0
cd_media_info: disk type 00
ID_CDROM=1
ID_CDROM_MRW=1
ID_CDROM_MRW_W=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_CD=1
ID_CDROM_MEDIA_STATE=blank
Others work fine, but ID_CDROM_MEDIA_STATE is not needed for non-writable CDROM media:
$ /lib/udev/cdrom_id -d /dev/sr1
main: probing: '/dev/sr1'
cd_inquiry: INQUIRY: [SanDisk ][U3 Cruzer Micro ][8.02]
cd_profiles: GET CONFIGURATION: number of profiles 72
cd_profiles: current profile 0x08
cd_media_toc: READ TOC: len: 20
cd_media_toc: track=1 info=0x4(data) start_block=0
cd_media_toc: last track 1 starts at block 0
cd_media_info: disk type 00
ID_CDROM=1
ID_CDROM_MRW=1
ID_CDROM_MRW_W=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_CD=1
ID_CDROM_MEDIA_STATE=complete
ID_CDROM_MEDIA_SESSION_COUNT=1
ID_CDROM_MEDIA_TRACK_COUNT=1
ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
---
diff --git a/extras/cdrom_id/cdrom_id.c b/extras/cdrom_id/cdrom_id.c
index 0d873ae..921e534 100644
--- a/extras/cdrom_id/cdrom_id.c
+++ b/extras/cdrom_id/cdrom_id.c
@@ -426,8 +426,10 @@ static int cd_media_info(struct udev *udev, int fd)
info(udev, "disk type %02x\n", header[8]);
- if ((header[2] & 3) < 4)
+ /* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */
+ if (!cd_media_cd_rom && (header[2] & 3) < 4)
cd_media_state = media_status[header[2] & 3];
+
if ((header[2] & 3) != 2)
cd_media_session_next = header[10] << 8 | header[5];
cd_media_session_count = header[9] << 8 | header[4];

View file

@ -0,0 +1,43 @@
From: Kay Sievers <kay.sievers@vrfy.org>
Date: Thu, 23 Apr 2009 13:04:16 +0000 (+0200)
Subject: cdrom_id: skip media tests if CDROM_DRIVE_STATUS != CDS_DISC_OK
X-Git-Tag: 142~26
X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=d6f0b22d574c6a5e5f3430be3fc619d4b2f46cd5
cdrom_id: skip media tests if CDROM_DRIVE_STATUS != CDS_DISC_OK
---
diff --git a/extras/cdrom_id/cdrom_id.c b/extras/cdrom_id/cdrom_id.c
index 371d6a2..0d873ae 100644
--- a/extras/cdrom_id/cdrom_id.c
+++ b/extras/cdrom_id/cdrom_id.c
@@ -197,6 +197,16 @@ static int cd_capability_compat(struct udev *udev, int fd)
return 0;
}
+static int cd_media_compat(struct udev *udev, int fd)
+{
+ if (ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT) != CDS_DISC_OK) {
+ info(udev, "CDROM_DRIVE_STATUS != CDS_DISC_OK\n");
+ return -1;
+ }
+ cd_media = 1;
+ return 0;
+}
+
static int cd_inquiry(struct udev *udev, int fd) {
struct scsi_cmd sc;
unsigned char inq[128];
@@ -569,7 +579,11 @@ int main(int argc, char *argv[])
goto exit;
}
- /* check drive */
+ /* check for media */
+ if (cd_media_compat(udev, fd) < 0)
+ goto print;
+
+ /* check if drive talks MMC */
if (cd_inquiry(udev, fd) < 0)
goto print;

View file

@ -0,0 +1,28 @@
From: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Date: Wed, 20 May 2009 14:12:22 +0000 (+0200)
Subject: udevadm: settle - fix timeout
X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=f58a9099bb2b18f3f683615324a4382b95446305
udevadm: settle - fix timeout
The timeout wasn't working when settle was run as root:
# udevadm control --stop-exec-queue
# udevadm trigger
# udevadm settle --timeout=1
... (hangs)
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
---
diff --git a/udev/udevadm-settle.c b/udev/udevadm-settle.c
index 3b26f10..52d9c0b 100644
--- a/udev/udevadm-settle.c
+++ b/udev/udevadm-settle.c
@@ -167,6 +167,7 @@ int udevadm_settle(struct udev *udev, int argc, char *argv[])
sigprocmask(SIG_BLOCK, &mask, &oldmask);
if (udev_ctrl_send_settle(uctrl) > 0)
sigsuspend(&oldmask);
+ sigprocmask(SIG_SETMASK, &oldmask, NULL);
udev_ctrl_unref(uctrl);
}
}

54
udev.git-f907449eee.patch Normal file
View file

@ -0,0 +1,54 @@
From: Kay Sievers <kay.sievers@vrfy.org>
Date: Tue, 21 Apr 2009 01:27:14 +0000 (+0200)
Subject: cdrom_id: add and use ID_CDROM_MEDIA to decide if we run vol_id
X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=f907449eee
cdrom_id: add and use ID_CDROM_MEDIA to decide if we run vol_id
Some broken mobile phones offer a faked cdrom drive with a media
without any tracks.
---
diff --git a/extras/cdrom_id/cdrom_id.c b/extras/cdrom_id/cdrom_id.c
index c578f12..371d6a2 100644
--- a/extras/cdrom_id/cdrom_id.c
+++ b/extras/cdrom_id/cdrom_id.c
@@ -76,6 +76,7 @@ static unsigned int cd_mrw;
static unsigned int cd_mrw_w;
/* media info */
+static unsigned int cd_media;
static unsigned int cd_media_cd_rom;
static unsigned int cd_media_cd_r;
static unsigned int cd_media_cd_rw;
@@ -325,6 +326,8 @@ static int cd_profiles(struct udev *udev, int fd)
return -1;
}
+ cd_media = 1;
+
switch (cur_profile) {
case 0x03:
case 0x04:
@@ -625,6 +628,8 @@ print:
if (cd_mrw_w)
printf("ID_CDROM_MRW_W=1\n");
+ if (cd_media)
+ printf("ID_CDROM_MEDIA=1\n");
if (cd_media_mo)
printf("ID_CDROM_MEDIA_MO=1\n");
if (cd_media_mrw)
diff --git a/rules/rules.d/60-persistent-storage.rules b/rules/rules.d/60-persistent-storage.rules
index 23c21f8..4095488 100644
--- a/rules/rules.d/60-persistent-storage.rules
+++ b/rules/rules.d/60-persistent-storage.rules
@@ -55,7 +55,7 @@ ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PA
ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
# probe filesystem metadata of optical drives which have a media inserted
-KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT}=="?*", IMPORT{program}="vol_id --export --skip-raid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
+KERNEL=="sr*", ENV{ID_CDROM_MEDIA}=="?*", IMPORT{program}="vol_id --export --skip-raid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
# probe filesystem metadata of disks
KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode"

View file

@ -6,7 +6,7 @@
Summary: A userspace implementation of devfs
Name: udev
Version: 141
Release: 1%{?dist}
Release: 8%{?dist}
License: GPLv2
Group: System Environment/Base
Provides: udev-persistent = %{version}-%{release}
@ -18,6 +18,18 @@ Source3: udev-post.init
Source4: fw_unit_symlinks.sh
Source5: udev.sysconfig
Patch0: udev.git-f907449eee.patch
Patch1: udev.git-055e40edc647d8ccfc27c9cd3163ab5dbf63ed6c.patch
Patch2: udev.git-0c37798916bc87d72f5f1399d9e050307901db84.patch
Patch3: udev.git-b4fa1b67f86c9555cbb41c57774761730f6b8939.patch
Patch4: udev.git-55d8f5e208396589476583dad8f2a7f2db3e2ef5.patch
Patch5: udev.git-d6f0b22d574c6a5e5f3430be3fc619d4b2f46cd5.patch
Patch6: udev.git-d3c8231e738dd286591c1becc2f327ed55ed89d1.patch
Patch7: udev.git-f58a9099bb2b18f3f683615324a4382b95446305.patch
Patch8: Prioritize-dmraid-formats-over-md-raid.patch
Patch9: udev-141-max_short.patch
Patch10: udev-142-rfcomm.patch
Patch102: udev-118-sysconf.patch
ExclusiveOS: Linux
@ -91,6 +103,18 @@ dynamic library, which provides access to udev device information.
%prep
%setup -q
%patch0 -p1 -b .git1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch102 -p1 -b .sysconf
%build
@ -174,6 +198,7 @@ for i in \
rules/packages/40-s390.rules \
%endif
rules/packages/40-alsa.rules \
rules/packages/40-isdn.rules \
rules/packages/64-md-raid.rules \
rules/packages/64-device-mapper.rules \
; do
@ -192,6 +217,7 @@ mkdir -p -m 0755 $RPM_BUILD_ROOT%{firmwaredir}
mkdir -p -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d
cat > $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/floppy-pnp.conf <<EOF
alias pnp:dPNP0700 floppy
alias acpi:PNP0700: floppy
EOF
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d
@ -205,10 +231,15 @@ mkdir -p $RPM_BUILD_ROOT/var/lib/udev/makedev.d
%preun
if [ "$1" -eq 0 -a -f %{_initrddir}/udev ]; then
if [ -x /sbin/pidof ]; then
udevadm control --stop-exec-queue
pid=$(/sbin/pidof -c udevd)
if [ -n "$pid" ]; then
kill $pid
fi
while [ -n "$pid" ]; do
for p in $pid; do
kill $hard $p;
done
pid=$(/sbin/pidof -c udevd)
hard="-9"
done
fi
/sbin/chkconfig --del udev
fi
@ -228,11 +259,17 @@ getent group dialout >/dev/null || /usr/sbin/groupadd -g 18 dialout || :
%post
if [ "$1" -gt 1 -a -x /sbin/pidof ]; then
udevadm control --stop-exec-queue
pid=$(/sbin/pidof -c udevd)
if [ -n "$pid" ]; then
kill $pid
/sbin/udevd -d
fi
while [ -n "$pid" ]; do
for p in $pid; do
kill $hard $p;
done
pid=$(/sbin/pidof -c udevd)
hard="-9"
done
/sbin/udevd -d
udevadm control --start-exec-queue
fi
/sbin/chkconfig --add udev-post
@ -379,6 +416,32 @@ rm -rf $RPM_BUILD_ROOT
%changelog
* Tue Feb 2 2010 John W. Linville <linville@redhat.com> 141-8
- rules: add rfcomm* to group dialout (bug #561354)
* Mon Sep 14 2009 Harald Hoyer <harald@redhat.com> 141-7
- fix scsi_id segfault (bug #516920)
* Tue Aug 04 2009 Harald Hoyer <harald@redhat.com> 141-6
- try to fix audio cdrom problems (bug #513495)
* Tue Jul 14 2009 Harald Hoyer <harald@redhat.com> 141-5
- add /dev/fuse to be created by start_udev
- add "udevlog" kernel command line option to redirect the
output of udevd to /dev/.udev/udev.log
* Tue Jun 30 2009 Harald Hoyer <harald@redhat.com> 141-4
- really try to kill udevd in %post (bug #481075)
- show "isw_raid_member" before "linux_raid_member" with vol_id (bug #499246)
- add new ACPI modalias for floppy module autoloading (bug #503308)
- add isdn capi rules (bug #507241)
- backport several bugfixes from git
* Fri Apr 24 2009 Harald Hoyer <harald@redhat.com> 141-3
- cdrom_id: add and use ID_CDROM_MEDIA to decide if we run vol_id
(bug #496298)
- Resolves: rhbz#496298
* Tue Apr 14 2009 Harald Hoyer <harald@redhat.com> 141-1
- version 141