Compare commits

..

24 commits

Author SHA1 Message Date
Harald Hoyer
6432dc01e2 - fix /dev/systty
Resolves: rhbz#654935
2010-11-19 09:03:32 +01:00
Harald Hoyer
43b305ff9c - fixed SELinux contexts on "add" events
- backported keymaps
- backported cdrom_id
2010-09-22 14:02:53 +02:00
Harald Hoyer
92e3355c96 - fixed SELinux contexts on "add" events
- backported keymaps
- backported cdrom_id
2010-09-22 13:58:14 +02:00
Harald Hoyer
b5e470b956 * Fri Aug 13 2010 Harald Hoyer <harald@redhat.com> 153-3
- revert the default trigger to "add"
2010-08-13 10:30:02 +02:00
Harald Hoyer
43b3a39d3c * Wed Aug 04 2010 Harald Hoyer <harald@redhat.com> 153-1.0.test.1
- trigger with action==add
- add rd_NO_MDIMSM on noiswmd kernel cmdline option
Resolves: rhbz#589774
- fix console switching and ACLs
Resolves: rhbz#608712
- fix key mapping for Samsung N210
Resolves: rhbz#606302
- fix for blank or audio CDs
Resolves: rhbz#606285
- fix for scsi changer
Resolves: rhbz#600983
2010-08-04 15:59:39 +02:00
Harald Hoyer
24924749ea * Wed Aug 04 2010 Harald Hoyer <harald@redhat.com> 153-1.0.test.1
- trigger with action==add
- add rd_NO_MDIMSM on noiswmd kernel cmdline option
Resolves: rhbz#589774
- fix console switching and ACLs
Resolves: rhbz#608712
- fix key mapping for Samsung N210
Resolves: rhbz#606302
- fix for blank or audio CDs
Resolves: rhbz#606285
- fix for scsi changer
Resolves: rhbz#600983
2010-08-04 15:42:31 +02:00
Harald Hoyer
90c26960fb fix console switching and ACLs 2010-08-04 15:02:15 +02:00
Harald Hoyer
3e4cfcfce0 start_udev: add rd_NO_MDIMSM on noiswmd kernel cmdline option 2010-08-04 15:00:53 +02:00
Harald Hoyer
57475b8536 start_udev: trigger with action==add 2010-08-04 14:59:43 +02:00
Harald Hoyer
f714968249 * Mon Aug 02 2010 Harald Hoyer <harald@redhat.com> 153-1
- version 153, because device-mapper needs IMPORT{db}
- do not remove udev database
Resolves: rhbz#610925
2010-08-02 20:14:04 +02:00
Harald Hoyer
b2bfe88396 * Mon Aug 02 2010 Harald Hoyer <harald@redhat.com> 151-11
- do not remove udev database
Resolves: rhbz#610925
2010-08-02 18:50:58 +02:00
Fedora Release Engineering
e4e1196b9f dist-git conversion 2010-07-29 14:37:42 +00:00
c79a4d6abd - Revert patch for hid2hci rules, fixes keyboards not going into HCI
(Bluetooth) mode after being plugged in (#595178)
2010-06-10 13:08:14 +00:00
Harald Hoyer
b8ad91fd93 - more cdrom_id bugfixes to prevent autoclosing 2010-04-27 10:41:44 +00:00
Harald Hoyer
e542609413 - more cdrom_id bugfixes for buggy cdroms and CD burning (bug #577659) 2010-04-13 15:29:13 +00:00
Harald Hoyer
cc9477b6ac - only correct the timestamp, if UTC=="no" 2010-03-22 14:24:27 +00:00
Harald Hoyer
4041a2a8e4 - only correct the timestamp, if UTC=="no" 2010-03-22 14:21:43 +00:00
Harald Hoyer
9165231177 - only correct the timestamp, if UTC=="no" 2010-03-22 14:19:53 +00:00
Harald Hoyer
f693b0743f - only correct the timestamp, if UTC=="no" 2010-03-22 14:18:48 +00:00
Harald Hoyer
e418dca65a - touch with "--no-create", will not use open() and trigger devs/watchdogs
(bug #575417)
2010-03-22 13:35:22 +00:00
Harald Hoyer
164998caba - fixed return code of touching the device nodes [FAIL] -> [OK] 2010-03-22 10:09:06 +00:00
Harald Hoyer
cd81212d7e add "-D" to gperf call 2010-03-19 13:12:23 +00:00
Harald Hoyer
e8b3267692 - add patch for virtio-ports (#569700)
- own libgudev dirs (#561319)
- minor udev startup script improvements (#549518)
- create /dev/hugepages subdir in start_udev (#541998)
- remove GPL COPYING file from LGPL subpackages (#536843)
- removed symlinks to udevadm
- touch all device nodes after udev settled for the timezone timestamp
    (#569335)
- add some upstream bugfixes
2010-03-19 12:49:37 +00:00
Jesse Keating
66d65ff607 Initialize branch F-13 for udev 2010-02-17 03:22:54 +00:00
33 changed files with 4062 additions and 1 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
udev-151.tar.bz2
udev-153.tar.bz2
udev-153.tar.bz2.sign

View file

@ -0,0 +1,35 @@
From 326c5fc3ea684825629eccaf33a548759162a539 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers@vrfy.org>
Date: Tue, 31 Aug 2010 21:29:21 +0200
Subject: [PATCH] set SELinux context on 'add' but not on 'change' events
---
udev/udev-node.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/udev/udev-node.c b/udev/udev-node.c
index 228b3eb..c8113f1 100644
--- a/udev/udev-node.c
+++ b/udev/udev-node.c
@@ -56,10 +56,17 @@ int udev_node_mknod(struct udev_device *dev, const char *file, mode_t mode, uid_
info(udev, "set permissions %s, %#o, uid=%u, gid=%u\n", file, mode, uid, gid);
chmod(file, mode);
chown(file, uid, gid);
- udev_selinux_lsetfilecon(udev, file, mode);
} else {
info(udev, "preserve permissions %s, %#o, uid=%u, gid=%u\n", file, mode, uid, gid);
}
+ /*
+ * Set initial selinux file context only on add events.
+ * We set the proper context on bootup (triger) or for newly
+ * added devices, but we don't change it later, in case
+ * something else has set a custom context in the meantime.
+ */
+ if (strcmp(udev_device_get_action(dev), "add") == 0)
+ udev_selinux_lsetfilecon(udev, file, mode);
/* always update timestamp when we re-use the node, like on media change events */
utimensat(AT_FDCWD, file, NULL, 0);
} else {
--
1.7.2.3

View file

@ -0,0 +1,52 @@
From 939cc18afc49ee8479572c14c7fa777646fd4add Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers@vrfy.org>
Date: Tue, 3 Aug 2010 15:09:46 +0200
Subject: [PATCH 17/18] udev-acl: properly handle CK change events for root user
mschmidt@redhat.com writes:
> since root is treated specially, it does not do anything!
> udev-acl may want to prevent removing ACLs from root, but
> it must not stop the ACLs being granted to the user of the
> new session.
https://bugzilla.redhat.com/show_bug.cgi?id=608712
---
extras/udev-acl/udev-acl.c | 7 +------
1 files changed, 1 insertions(+), 6 deletions(-)
diff --git a/extras/udev-acl/udev-acl.c b/extras/udev-acl/udev-acl.c
index ff04ec6..f2b5005 100644
--- a/extras/udev-acl/udev-acl.c
+++ b/extras/udev-acl/udev-acl.c
@@ -224,14 +224,10 @@ static int consolekit_called(const char *ck_action, uid_t *uid, uid_t *uid2, con
if (s == NULL)
return -1;
u = strtoul(s, NULL, 10);
- if (u == 0)
- return 0;
s = getenv("CK_SEAT_SESSION_USER_UID");
if (s == NULL)
return -1;
u2 = strtoul(s, NULL, 10);
- if (u2 == 0)
- return 0;
s = getenv("CK_SEAT_OLD_SESSION_IS_LOCAL");
s2 = getenv("CK_SEAT_SESSION_IS_LOCAL");
@@ -263,12 +259,11 @@ static int consolekit_called(const char *ck_action, uid_t *uid, uid_t *uid2, con
a = ACTION_ADD;
u = u2;
}
-
break;
case ACTION_NONE:
break;
default:
- g_assert_not_reached ();
+ g_assert_not_reached();
break;
}
--
1.7.2

View file

@ -0,0 +1,125 @@
From 9ac90ae153accdfcb56c24c5748690933ad219b2 Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Wed, 4 Aug 2010 11:53:25 +0200
Subject: [PATCH 18/18] udev-acl: really fix ACL assignment in CK events
The previous fix for udev-acl was incomplete. The ACL were not properly
assigned to the new user when switching from root's session because of
the test for 'uid != 0'.
Centralize the special handling of root to a single place (in set_facl).
https://bugzilla.redhat.com/show_bug.cgi?id=608712
---
extras/udev-acl/udev-acl.c | 37 +++++++++++++++++++------------------
1 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/extras/udev-acl/udev-acl.c b/extras/udev-acl/udev-acl.c
index f2b5005..31e9991 100644
--- a/extras/udev-acl/udev-acl.c
+++ b/extras/udev-acl/udev-acl.c
@@ -12,20 +12,18 @@
* General Public License for more details:
*/
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <inttypes.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+#include <acl/libacl.h>
+#include <sys/stat.h>
#include <errno.h>
#include <getopt.h>
-#include <sys/stat.h>
#include <glib.h>
-#include <acl/libacl.h>
+#include <inttypes.h>
#include <libudev.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
static int debug;
@@ -45,6 +43,10 @@ static int set_facl(const char* filename, uid_t uid, int add)
acl_permset_t permset;
int ret;
+ /* don't touch ACLs for root */
+ if (uid == 0)
+ return 0;
+
/* read current record */
acl = acl_get_file(filename, ACL_TYPE_ACCESS);
if (!acl)
@@ -190,8 +192,6 @@ static int consolekit_called(const char *ck_action, uid_t *uid, uid_t *uid2, con
if (s == NULL)
return -1;
u = strtoul(s, NULL, 10);
- if (u == 0)
- return 0;
s = getenv("CK_SEAT_SESSION_IS_LOCAL");
if (s == NULL)
@@ -205,8 +205,6 @@ static int consolekit_called(const char *ck_action, uid_t *uid, uid_t *uid2, con
if (s == NULL)
return -1;
u = strtoul(s, NULL, 10);
- if (u == 0)
- return 0;
s = getenv("CK_SEAT_OLD_SESSION_IS_LOCAL");
if (s == NULL)
@@ -331,6 +329,7 @@ int main (int argc, char* argv[])
};
int action = -1;
const char *device = NULL;
+ bool uid_given = false;
uid_t uid = 0;
uid_t uid2 = 0;
const char* remove_session_id = NULL;
@@ -357,6 +356,7 @@ int main (int argc, char* argv[])
device = optarg;
break;
case 'u':
+ uid_given = true;
uid = strtoul(optarg, NULL, 10);
break;
case 'd':
@@ -369,8 +369,9 @@ int main (int argc, char* argv[])
}
}
- if (action < 0 && device == NULL && uid == 0)
- consolekit_called(argv[optind], &uid, &uid2, &remove_session_id, &action);
+ if (action < 0 && device == NULL && !uid_given)
+ if (!consolekit_called(argv[optind], &uid, &uid2, &remove_session_id, &action))
+ uid_given = true;
if (action < 0) {
fprintf(stderr, "missing action\n\n");
@@ -378,13 +379,13 @@ int main (int argc, char* argv[])
goto out;
}
- if (device != NULL && uid != 0) {
+ if (device != NULL && uid_given) {
fprintf(stderr, "only one option, --device=DEVICEFILE or --user=UID expected\n\n");
rc = 3;
goto out;
}
- if (uid != 0) {
+ if (uid_given) {
switch (action) {
case ACTION_ADD:
/* Add ACL for given uid to all matching devices. */
--
1.7.2

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,26 @@
From 155e313bfda594b3d8e2a31d48f341765bdfa75d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 27 Apr 2010 12:22:42 +0200
Subject: [PATCH 110/110] cdrom_id: only mark sr[0-9]* as ID_CDROM
we cannot be sure for xvd*
---
extras/cdrom_id/60-cdrom_id.rules | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/extras/cdrom_id/60-cdrom_id.rules b/extras/cdrom_id/60-cdrom_id.rules
index 16b3af9..b3109f1 100644
--- a/extras/cdrom_id/60-cdrom_id.rules
+++ b/extras/cdrom_id/60-cdrom_id.rules
@@ -5,7 +5,7 @@ SUBSYSTEM!="block", GOTO="cdrom_end"
KERNEL!="sr[0-9]*|xvd*", GOTO="cdrom_end"
ENV{DEVTYPE}!="disk", GOTO="cdrom_end"
-ENV{ID_CDROM}="1"
+KERNEL=="sr[0-9]*", ENV{ID_CDROM}="1"
IMPORT{program}="cdrom_id --export $tempnode"
LABEL="cdrom_end"
--
1.7.0.1

4
40-ia64.rules Normal file
View file

@ -0,0 +1,4 @@
# do not edit this file, it will be overwritten on update
KERNEL=="sgi_*", MODE="0666"

4
40-isdn.rules Normal file
View file

@ -0,0 +1,4 @@
# do not edit this file, it will be overwritten on update
SUBSYSTEM=="capi", KERNEL=="capi", NAME="capi20", GROUP="dialout"
SUBSYSTEM=="tty", KERNEL=="capi[0-9]*", NAME="capi/%n"

6
40-ppc.rules Normal file
View file

@ -0,0 +1,6 @@
# do not edit this file, it will be overwritten on update
KERNEL=="iseries/ibmsis*", GROUP="disk"
KERNEL=="iseries/nvt*", GROUP="disk"
KERNEL=="iseries/vt*", GROUP="disk"
KERNEL=="iseries/vtty*, GROUP="dialout"

4
40-s390.rules Normal file
View file

@ -0,0 +1,4 @@
# do not edit this file, it will be overwritten on update
KERNEL=="z90crypt", MODE="0666"

4
64-device-mapper.rules Normal file
View file

@ -0,0 +1,4 @@
# do not edit this file, it will be overwritten on update
KERNEL=="device-mapper", NAME="mapper/control"

36
64-md-raid.rules Normal file
View file

@ -0,0 +1,36 @@
# do not edit this file, it will be overwritten on update
SUBSYSTEM!="block", GOTO="md_end"
ACTION!="add|change", GOTO="md_end"
# import data from a raid member and activate it
#ENV{ID_FS_TYPE}=="linux_raid_member", IMPORT{program}="/sbin/mdadm --examine --export $tempnode", RUN+="/sbin/mdadm --incremental $env{DEVNAME}"
# import data from a raid set
KERNEL!="md*", GOTO="md_end"
# partitions have no md/{array_state,metadata_version}
ENV{DEVTYPE}=="partition", GOTO="md_ignore_state"
# container devices have a metadata version of e.g. 'external:ddf' and
# never leave state 'inactive'
ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state"
TEST!="md/array_state", GOTO="md_end"
ATTR{md/array_state}=="|clear|inactive", GOTO="md_end"
LABEL="md_ignore_state"
IMPORT{program}="/sbin/mdadm --detail --export $tempnode"
ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace"
ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}"
ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}"
ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace"
ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n"
ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n"
ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n"
IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
OPTIONS+="link_priority=100"
OPTIONS+="watch"
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
LABEL="md_end"

6
Makefile.git Normal file
View file

@ -0,0 +1,6 @@
Patch:
@for i in 0*.patch; do n=$$[$$(echo $$i|cut -f 1 -d '-'|sed -e 's#^0*##')]; echo "Patch$$n: $$i";done
patch:
@for i in 0*.patch; do n=$$[$$(echo $$i|cut -f 1 -d '-'|sed -e 's#^0*##')]; echo "%patch$$n -p1 -b .git$$n";done

View file

@ -1 +0,0 @@
obsolete udev, it is replaced by systemd

25
fw_unit_symlinks.sh Normal file
View file

@ -0,0 +1,25 @@
#!/bin/sh
SYSFS=/sys
NAME=$1
NUM=$2
for i in "${SYSFS}${DEVPATH}/${NAME}.*/specifier_id"; do
if [ ! -f "$i" ]; then
continue
fi
SPECID="`cat $i`"
if [ $((SPECID)) -eq $((0x00609e)) ]; then
echo -n "sbp2-${NUM} "
elif [ $((SPECID)) -eq $((0x00a02d)) ]; then
SWVER="`cat ${i%/specifier_id}/version`"
if [ $((SWVER)) -ge $((0x100)) -a $((SWVER)) -lt $((0x110)) ]; then
echo -n "iidc${NUM} "
elif [ $((SWVER)) -eq $((0x10001)) ]; then
echo -n "avc${NUM} "
elif [ $((SWVER)) -ge $((0x14000)) -a $((SWVER)) -le $((0x14001)) ]; then
echo -n "vendorfw${NUM} "
fi
fi
done
echo

1
mirrors Normal file
View file

@ -0,0 +1 @@
ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/

2
sources Normal file
View file

@ -0,0 +1,2 @@
76d12a9d97c3409e9ef60a4288227e8f udev-153.tar.bz2
962e6d9b7fcf45432b361e3116923a3a udev-153.tar.bz2.sign

339
start_udev Executable file
View file

@ -0,0 +1,339 @@
#!/bin/bash
#
# start_udev
#
# script to initialize /dev by using udev.
#
# Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
#
# Released under the GPL v2 only.
#
# This needs to be run at the earliest possible point in the boot
# process.
#
# Based on the udev init.d script
#
# Thanks go out to the Gentoo developers for proving
# that this is possible to do.
#
# Yes, it's very verbose, feel free to turn off all of the echo calls,
# they were there to make me feel better that everything was working
# properly during development...
#
# don't use udev if sysfs is not mounted.
sysfs_dir=/sys
export TZ=/etc/localtime
[ -d $sysfs_dir/class ] || exit 1
[ -r /proc/mounts ] || exit 1
[ -x /sbin/udevd ] || exit 1
[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
udev_root=${udev_root-/dev}
if [ -f /dev/.in_sysinit ]; then
exec >/dev/console 2>/dev/console </dev/console
fi
. /etc/init.d/functions
. /etc/sysconfig/udev
prog=udev
bin=/sbin/udev
udevd=/sbin/udevd
MAKEDEV="/sbin/MAKEDEV"
# Check SELinux status
selinuxfs="$(fstab_decode_str `LC_ALL=C awk '/ selinuxfs / { print $2 }' /proc/mounts`)"
SELINUX_STATE=
if [ -n "$selinuxfs" ] && [ "`cat /proc/self/attr/current`" != "kernel" ]; then
if [ -r "$selinuxfs/enforce" ] ; then
SELINUX_STATE=`cat "$selinuxfs/enforce"`
else
# assume enforcing if you can't read it
SELINUX_STATE=1
fi
fi
[ -c /dev/systty ] && ln -fs tty0 /dev/systty
touch_recursive() {
( cd $1;
for i in *; do
[[ -c "$i" || -b "$i" ]] && touch --no-create "$i"
[ -d "$i" ] && touch_recursive "$i"
done )
return 0
}
xargs_simple () {
if [ "$1" = "-n" ]; then
shift
MAXNR="$1"
shift
else
MAXNR=100
fi
NR=$MAXNR
ARGS=""
[ -z "$1" ] && set echo
while read line; do
if [ $NR -gt 0 ]; then
ARGS="$ARGS $line"
NR=$[$NR - 1]
else
"$@" $ARGS
NR=$MAXNR
ARGS="$line"
fi
done
if [ -n "$ARGS" ]; then
"$@" $ARGS
fi
}
make_extra_nodes () {
ln -snf /proc/self/fd $udev_root/fd
ln -snf /proc/self/fd/0 $udev_root/stdin
ln -snf /proc/self/fd/1 $udev_root/stdout
ln -snf /proc/self/fd/2 $udev_root/stderr
ln -snf /proc/kcore $udev_root/core
[ -d $udev_root/pts ] || mkdir -m 0755 $udev_root/pts
[ -d $udev_root/shm ] || mkdir -m 0755 $udev_root/shm
[ -d $udev_root/hugepages ] || mkdir -m 0755 $udev_root/hugepages
[ -a /dev/MAKEDEV ] || ln -s $MAKEDEV /dev/MAKEDEV;
USE_MD5="false"
[[ "$UDEV_USE_MAKEDEV_CACHE" == "yes" && -x /usr/bin/md5sum ]] && 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
[ -c /dev/net/tun ] || /bin/mknod -m 0666 /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
if [ -x /sbin/restorecon ]; then
/sbin/restorecon -R /dev
fi
if [ -x "$MAKEDEV" ]; then
for i in /etc/udev/makedev.d/*.nodes; do
if [ -f "$i" ]; then
# use a little caching to speedup things
if [ "$USE_MD5" == "true" ]; then
# fix for MAKEDEV shell scripts
[ -d /dev/.udev/makedev.d ] || mkdir -p /dev/.udev/makedev.d
md5=$(/usr/bin/md5sum "$i"|(read a b; echo $a))-se$SELINUX_STATE
if [ -f "/var/lib/udev/makedev.d/${md5}.sh" ];then
md5file="/var/lib/udev/makedev.d/${md5}.sh"
else
md5file="/dev/.udev/makedev.d/${md5}.sh"
fi
if [ ! -f "$md5file" ]; then
( sed -e 's,#.*,,g' "$i" | \
xargs_simple -n 100 $MAKEDEV -x -a -S ) \
> "$md5file"
fi
. "$md5file" >$udev_root/null 2>&1
else
( sed -e 's,#.*,,g' "$i" | \
xargs_simple -n 100 $MAKEDEV -x )
fi
fi
done
fi
for devdir in /etc/udev/devices /lib/udev/devices; do
[ -d "$devdir" ] || continue
pushd $devdir &> "$udev_root/null"
set *
if [ "$1" != "*" ]; then
#echo "Warning: $devdir is deprecated. Please use /etc/udev/makedev.d/."
cp -ar "$@" $udev_root/
if [ -x /sbin/restorecon ]; then
pushd "$udev_root" &> "$udev_root/null"
/sbin/restorecon "$@"
popd &> "$udev_root/null"
fi
fi
popd &> "$udev_root/null"
done
}
kill_udevd() {
if [ -x /sbin/pidof ]; then
pid=`/sbin/pidof -x udevd`
[ -n "$pid" ] && kill $pid
fi
}
findalias () {
local n
for n in "$1"/* ; do
[ -h "$n" ] && continue
[ -d "$n" ] && { findalias "$n" ; continue; }
[ "${n##*/}" == "modalias" ] && echo $(cat $n)
done
}
# returns OK if $1 contains $2
strstr() {
[ "${1#*$2*}" = "$1" ] && return 1
return 0
}
getval() {
what=$1
shift
for arg; do
if strstr "$arg" "$what="; then
val=${arg#${what}=*}
echo $val
return 0
fi
done
return 1
}
wait_for_queue() {
local timeout=${1:-0}
local ret=0
if [ $timeout -gt 0 ]; then
/sbin/udevadm settle --timeout=$timeout
else
/sbin/udevadm settle
fi
ret=$?
if [ $ret -ne 0 ]; then
echo -n "Wait timeout. Will continue in the background."
fi
return $ret;
}
export ACTION=add
prog=udev
ret=0
STRING=$"Starting $prog: "
# propagate $udev_root from /sys
echo -n "$STRING"
# mount the tmpfs on ${udev_root%/}, if not already done
LANG=C awk "\$2 == \"${udev_root%/}\" && ( \$3 == \"devtmpfs\" || \$3 == \"tmpfs\" ) { exit 1 }" /proc/mounts && {
if LANG=C grep -Fq "none ${udev_root%/}/pts " /proc/mounts; then
PTSDIR=$(mktemp -d)
mount --move $udev_root/pts "$PTSDIR"
fi
if LANG=C grep -Fq "none ${udev_root%/}/shm " /proc/mounts; then
SHMDIR=$(mktemp -d)
mount --move $udev_root/shm "$SHMDIR"
fi
# First try to mount a devtmpfs on $udev_root
mount -n -o mode=0755 -t devtmpfs none "$udev_root" 2>/dev/null \
|| mount -n -o mode=0755 -t tmpfs none "$udev_root"
mkdir -m 0755 $udev_root/pts
mkdir -m 0755 $udev_root/shm
if [ -n "$PTSDIR" ]; then
mount --move "$PTSDIR" $udev_root/pts
rmdir "$PTSDIR"
fi
if [ -n "$SHMDIR" ]; then
mount --move "$SHMDIR" $udev_root/shm
rmdir "$SHMDIR"
fi
ret=$[$ret + $?]
}
make_extra_nodes
kill_udevd > "$udev_root/null" 2>&1
UDEV_OPTS=""
if [ -f "/sys/class/tty/console/uevent" ]; then
# trigger the sorted events
echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
cmdline=$(cat /proc/cmdline)
if strstr "$cmdline" udevtrace; then
UDEV_OPTS="$UDEV_OPTS --debug-trace"
fi
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 + $?]
udevtimeout=$(getval udevtimeout $cmdline)
if strstr "$cmdline" udevdebug; then
/sbin/udevadm control --log-priority=debug
fi
if strstr "$cmdline" udevinfo; then
/sbin/udevadm control --log-priority=info
fi
if strstr "$cmdline" udevchilds; then
/sbin/udevadm control --max-childs=$(getval udevchilds $cmdline)
fi
if strstr "$cmdline" noiswmd; then
/sbin/udevadm control --env=rd_NO_MDIMSM=1
fi
/sbin/udevadm control --env=STARTUP=1
if strstr "$cmdline" modprobedebug; then
/sbin/udevadm control --env=MODPROBE_OPTIONS="-s -v -q"
echo
findalias /sys | while read modules ; do
if [ -n "$modules" ]; then
echo "Loading modules for $modules in 5 seconds"
sleep 5
/sbin/modprobe -a -v -q $modules
wait_for_queue $udevtimeout
fi
done
echo "Triggering Rest"
fi
/sbin/udevadm trigger --action=add
ret=$[$ret + $?]
wait_for_queue $udevtimeout
ret=$[$ret + $?]
wait
ret=$[$ret + $?]
/sbin/udevadm control --env=STARTUP=
# touch all device files for timezone glitches
# "find" is in /usr/bin and might not be available
if [ -f /etc/sysconfig/clock ]; then
. /etc/sysconfig/clock
[[ "$UTC" == "false" || "$UTC" == "no" ]] \
&& touch_recursive /dev > "$udev_root/null" 2>&1
fi
else
echo -n " kernel too old for this udev version "
/sbin/udevd -d $UDEV_OPTS
ret=10
fi
[ $ret -eq 0 ] && success $"$STRING" || failure $"$STRING"
echo
exit 0

13
udev-151-gperf.patch Normal file
View file

@ -0,0 +1,13 @@
diff -up udev-151/extras/keymap/keys-from-name.gperf udev-151/extras/keymap/keys-from-name
diff -up udev-151/Makefile.am.gperf udev-151/Makefile.am
--- udev-151/Makefile.am.gperf 2010-03-19 14:04:36.000000000 +0100
+++ udev-151/Makefile.am 2010-03-19 14:04:52.000000000 +0100
@@ -550,7 +550,7 @@ extras/keymap/keys-from-name.gperf: extr
$(AM_V_GEN)$(AWK) 'BEGIN{ print "struct key { const char* name; unsigned short id; };"; print "%null-strings"; print "%%";} { print $$1 ", " $$1 }' < $< > $@
extras/keymap/keys-from-name.h: extras/keymap/keys-from-name.gperf Makefile
- $(AM_V_GEN)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C < $< > $@
+ $(AM_V_GEN)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C -D < $< > $@
extras/keymap/keys-to-name.h: extras/keymap/keys.txt Makefile
$(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const key_names[KEY_CNT] = { "} { print "[" $$1 "] = \"" $$1 "\"," } END{print "};"}' < $< > $@

25
udev-151-rules.patch Normal file
View file

@ -0,0 +1,25 @@
diff --git a/rules/redhat/40-redhat.rules b/rules/redhat/40-redhat.rules
index 47ce9e5..aaba82b 100644
--- a/rules/redhat/40-redhat.rules
+++ b/rules/redhat/40-redhat.rules
@@ -5,11 +5,11 @@ KERNEL=="hd*[0-9]", ATTRS{media}=="floppy", ATTRS{removable}=="1", SYMLINK+="flo
KERNEL=="fw*", PROGRAM="fw_unit_symlinks.sh %k %n", SYMLINK+="$result"
-ACTION=="add", KERNEL=="sg[0-9]*", BUS=="scsi", ATTRS{type}=="3|6", SYMLINK+="scanner scanner-%k", MODE="0660"
+ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_device", ATTRS{type}=="3|6", SYMLINK+="scanner scanner-%k", MODE="0660"
-ACTION=="add", KERNEL=="sg[0-9]*", BUS=="scsi", ATTRS{type}=="8", SYMLINK+="changer changer-%k", MODE="0660", GROUP="disk"
+ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_device", ATTRS{type}=="8", SYMLINK+="changer changer-%k", MODE="0660", GROUP="disk"
-BUS=="usb", KERNEL=="sd*", ATTRS{bInterfaceClass}=="08", ATTRS{bInterfaceSubClass}=="04", GROUP="floppy", MODE="0660", SYMLINK+="floppy floppy-%k"
+SUBSYSTEM=="usb", KERNEL=="sd*", ATTRS{bInterfaceClass}=="08", ATTRS{bInterfaceSubClass}=="04", GROUP="floppy", MODE="0660", SYMLINK+="floppy floppy-%k"
KERNEL=="fd[0-9]*", SYMLINK+="floppy floppy-%k"
@@ -25,3 +25,5 @@ KERNEL=="vcsa[0-9]*", OWNER="vcsa", GROUP="tty"
KERNEL=="vcc/*", OWNER="vcsa", GROUP="tty"
KERNEL=="event*", ATTRS{idVendor}=="03f0", ATTRS{interface}=="Virtual Mouse", ATTRS{bInterfaceProtocol}=="02", SYMLINK+="input/hp_ilo_mouse"
+
+ACTION=="add", SUBSYSTEM=="cpu", KERNEL=="cpu[0-9]*", ATTR{online}="1"

30
udev-151-virtio.patch Normal file
View file

@ -0,0 +1,30 @@
From 764304885705e51ef3eb1d078eed3cf6604c4684 Mon Sep 17 00:00:00 2001
From: Amit Shah <amit.shah@redhat.com>
Date: Fri, 26 Feb 2010 14:02:51 +0530
Subject: [PATCH] Fix virtio-ports rule to use $attr instead of $ATTR
Newer udev versions don't understand $ATTR.
Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
rules/rules.d/50-udev-default.rules | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Changed by Harald Hoyer <harald@redhat.com>
diff --git a/rules/rules.d/50-udev-default.rules b/rules/rules.d/50-udev-default.rules
index f8556d1..da1535f 100644
--- a/rules/rules.d/50-udev-default.rules
+++ b/rules/rules.d/50-udev-default.rules
@@ -18,7 +18,7 @@ KERNEL=="mwave", GROUP="dialout"
KERNEL=="hvc*|hvsi*", GROUP="dialout"
# virtio serial / console ports
-KERNEL=="vport*", SYMLINK+="virtio-ports/$attr{name}"
+KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}"
# mem
KERNEL=="null|zero|full|random|urandom", MODE="0666"
--
1.6.2.5

View file

@ -0,0 +1,246 @@
diff -ur udev-153-orig/extras/cdrom_id/cdrom_id.c udev-153/extras/cdrom_id/cdrom_id.c
--- udev-153-orig/extras/cdrom_id/cdrom_id.c 2010-04-17 19:29:58.000000000 +0200
+++ udev-153/extras/cdrom_id/cdrom_id.c 2010-08-31 10:35:41.000000000 +0200
@@ -85,6 +85,8 @@
static unsigned int cd_media_dvd_rom = 0;
static unsigned int cd_media_dvd_r = 0;
static unsigned int cd_media_dvd_rw = 0;
+static unsigned int cd_media_dvd_rw_ro = 0; /* restricted overwrite mode */
+static unsigned int cd_media_dvd_rw_seq = 0; /* sequential mode */
static unsigned int cd_media_dvd_ram = 0;
static unsigned int cd_media_dvd_plus_r = 0;
static unsigned int cd_media_dvd_plus_rw = 0;
@@ -348,6 +350,39 @@
return 0;
}
+static int cd_profiles_old_mmc(struct udev *udev, int fd)
+{
+ struct scsi_cmd sc;
+ int err;
+
+ unsigned char header[32];
+
+ scsi_cmd_init(udev, &sc, header, sizeof(header));
+ scsi_cmd_set(udev, &sc, 0, 0x51);
+ scsi_cmd_set(udev, &sc, 8, sizeof(header));
+ scsi_cmd_set(udev, &sc, 9, 0);
+ err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
+ if ((err != 0)) {
+ info_scsi_cmd_err(udev, "READ DISC INFORMATION", err);
+ info(udev, "no current profile, assuming no media\n");
+ return -1;
+ };
+
+ cd_media = 1;
+
+ if (header[2] & 16) {
+ cd_media_cd_rw = 1;
+ info(udev, "profile 0x0a media_cd_rw\n");
+ } else if ((header[2] & 3) < 2 && cd_cd_r) {
+ cd_media_cd_r = 1;
+ info(udev, "profile 0x09 media_cd_r\n");
+ } else {
+ cd_media_cd_rom = 1;
+ info(udev, "profile 0x08 media_cd_rom\n");
+ }
+ return 0;
+}
+
static int cd_profiles(struct udev *udev, int fd)
{
struct scsi_cmd sc;
@@ -365,6 +400,12 @@
err = scsi_cmd_run(udev, &sc, fd, features, sizeof(features));
if ((err != 0)) {
info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
+ /* handle pre-MMC2 drives which do not support GET CONFIGURATION */
+ if (SK(err) == 0x5 && ASC(err) == 0x20) {
+ info(udev, "drive is pre-MMC2 and does not support 46h get configuration command\n");
+ info(udev, "trying to work around the problem\n");
+ return cd_profiles_old_mmc(udev, fd);
+ }
return -1;
}
@@ -440,10 +481,16 @@
cd_media_dvd_ram = 1;
break;
case 0x13:
+ info(udev, "profile 0x%02x media_dvd_rw_ro\n", cur_profile);
+ cd_media = 1;
+ cd_media_dvd_rw = 1;
+ cd_media_dvd_rw_ro = 1;
+ break;
case 0x14:
- info(udev, "profile 0x%02x media_dvd_rw\n", cur_profile);
+ info(udev, "profile 0x%02x media_dvd_rw_seq\n", cur_profile);
cd_media = 1;
cd_media_dvd_rw = 1;
+ cd_media_dvd_rw_seq = 1;
break;
case 0x1B:
info(udev, "profile 0x%02x media_dvd_plus_r\n", cur_profile);
@@ -527,12 +574,126 @@
cd_media = 1;
info(udev, "disk type %02x\n", header[8]);
+ info(udev, "hardware reported media status: %s\n", media_status[header[2] & 3]);
/* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */
if (!cd_media_cd_rom)
cd_media_state = media_status[header[2] & 3];
- if ((header[2] & 3) != 2)
+ /* fresh DVD-RW in restricted overwite mode reports itself as
+ * "appendable"; change it to "blank" to make it consistent with what
+ * gets reported after blanking, and what userspace expects */
+ if (cd_media_dvd_rw_ro && (header[2] & 3) == 1)
+ cd_media_state = media_status[0];
+
+ /* DVD+RW discs (and DVD-RW in restricted mode) once formatted are
+ * always "complete", DVD-RAM are "other" or "complete" if the disc is
+ * write protected; we need to check the contents if it is blank */
+ if ((cd_media_dvd_rw_ro || cd_media_dvd_plus_rw || cd_media_dvd_plus_rw_dl || cd_media_dvd_ram) && (header[2] & 3) > 1) {
+ unsigned char buffer[32 * 2048];
+ unsigned char result, len;
+ int block, offset;
+
+ if (cd_media_dvd_ram) {
+ /* a write protected dvd-ram may report "complete" status */
+
+ unsigned char dvdstruct[8];
+ unsigned char format[12];
+
+ scsi_cmd_init(udev, &sc, dvdstruct, sizeof(dvdstruct));
+ scsi_cmd_set(udev, &sc, 0, 0xAD);
+ scsi_cmd_set(udev, &sc, 7, 0xC0);
+ scsi_cmd_set(udev, &sc, 9, sizeof(dvdstruct));
+ scsi_cmd_set(udev, &sc, 11, 0);
+ err = scsi_cmd_run(udev, &sc, fd, dvdstruct, sizeof(dvdstruct));
+ if ((err != 0)) {
+ info_scsi_cmd_err(udev, "READ DVD STRUCTURE", err);
+ return -1;
+ }
+ if (dvdstruct[4] & 0x02) {
+ cd_media_state = media_status[2];
+ info(udev, "write-protected DVD-RAM media inserted\n");
+ goto determined;
+ }
+
+ /* let's make sure we don't try to read unformatted media */
+ scsi_cmd_init(udev, &sc, format, sizeof(format));
+ scsi_cmd_set(udev, &sc, 0, 0x23);
+ scsi_cmd_set(udev, &sc, 8, sizeof(format));
+ scsi_cmd_set(udev, &sc, 9, 0);
+ err = scsi_cmd_run(udev, &sc, fd, format, sizeof(format));
+ if ((err != 0)) {
+ info_scsi_cmd_err(udev, "READ DVD FORMAT CAPACITIES", err);
+ return -1;
+ }
+
+ len = format[3];
+ if (len & 7 || len < 16) {
+ info(udev, "invalid format capacities length\n");
+ return -1;
+ }
+
+ switch(format[8] & 3) {
+ case 1:
+ info(udev, "unformatted DVD-RAM media inserted\n");
+ /* This means that last format was interrupted
+ * or failed, blank dvd-ram discs are factory
+ * formatted. Take no action here as it takes
+ * quite a while to reformat a dvd-ram and it's
+ * not automatically started */
+ goto determined;
+
+ case 2:
+ info(udev, "formatted DVD-RAM media inserted\n");
+ break;
+
+ case 3:
+ cd_media = 0; //return no media
+ info(udev, "format capacities returned no media\n");
+ return -1;
+ }
+ }
+
+ /* Take a closer look at formatted media (unformatted DVD+RW
+ * has "blank" status", DVD-RAM was examined earlier) and check
+ * for ISO and UDF PVDs or a fs superblock presence and do it
+ * in one ioctl (we need just sectors 0 and 16) */
+ scsi_cmd_init(udev, &sc, buffer, sizeof(buffer));
+ scsi_cmd_set(udev, &sc, 0, 0x28);
+ scsi_cmd_set(udev, &sc, 5, 0);
+ scsi_cmd_set(udev, &sc, 8, 32);
+ scsi_cmd_set(udev, &sc, 9, 0);
+ err = scsi_cmd_run(udev, &sc, fd, buffer, sizeof(buffer));
+ if ((err != 0)) {
+ info_scsi_cmd_err(udev, "READ FIRST 32 BLOCKS", err);
+ return -1;
+ }
+
+ /* if any non-zero data is found in sector 16 (iso and udf) or
+ * eventually 0 (fat32 boot sector, ext2 superblock, etc), disc
+ * is assumed non-blank */
+ result = 0;
+
+ for (block = 32768; block >= 0 && !result; block -= 32768) {
+ offset = block;
+ while (offset < (block + 2048) && !result) {
+ result = buffer [offset];
+ offset++;
+ }
+ }
+
+ if (!result) {
+ cd_media_state = media_status[0];
+ info(udev, "no data in blocks 0 or 16, assuming blank\n");
+ } else {
+ info(udev, "data in blocks 0 or 16, assuming complete\n");
+ }
+ }
+
+determined:
+ /* "other" is e. g. DVD-RAM, can't append sessions there; DVDs in
+ * restricted overwrite mode can never append, only in sequential mode */
+ if ((header[2] & 3) < 2 && !cd_media_dvd_rw_ro)
cd_media_session_next = header[10] << 8 | header[5];
cd_media_session_count = header[9] << 8 | header[4];
cd_media_track_count = header[11] << 8 | header[6];
@@ -710,13 +871,11 @@
if (cd_profiles(udev, fd) < 0)
goto print;
- /* get writable media state */
- if (cd_media_info(udev, fd) < 0)
- goto print;
-
/* get session/track info */
- if (cd_media_toc(udev, fd) < 0)
- goto print;
+ cd_media_toc(udev, fd);
+
+ /* get writable media state */
+ cd_media_info(udev, fd);
print:
printf("ID_CDROM=1\n");
@@ -810,14 +969,14 @@
printf("ID_CDROM_MEDIA_SESSION_NEXT=%d\n", cd_media_session_next);
if (cd_media_session_count > 0)
printf("ID_CDROM_MEDIA_SESSION_COUNT=%d\n", cd_media_session_count);
+ if (cd_media_session_count > 1 && cd_media_session_last_offset > 0)
+ printf("ID_CDROM_MEDIA_SESSION_LAST_OFFSET=%llu\n", cd_media_session_last_offset);
if (cd_media_track_count > 0)
printf("ID_CDROM_MEDIA_TRACK_COUNT=%d\n", cd_media_track_count);
if (cd_media_track_count_audio > 0)
printf("ID_CDROM_MEDIA_TRACK_COUNT_AUDIO=%d\n", cd_media_track_count_audio);
if (cd_media_track_count_data > 0)
printf("ID_CDROM_MEDIA_TRACK_COUNT_DATA=%d\n", cd_media_track_count_data);
- if (cd_media_session_last_offset > 0)
- printf("ID_CDROM_MEDIA_SESSION_LAST_OFFSET=%llu\n", cd_media_session_last_offset);
exit:
if (fd >= 0)
close(fd);

25
udev-153-changer.patch Normal file
View file

@ -0,0 +1,25 @@
diff -up udev-153/rules/redhat/40-redhat.rules.changer udev-153/rules/redhat/40-redhat.rules
--- udev-153/rules/redhat/40-redhat.rules.changer 2010-08-04 15:32:00.000000000 +0200
+++ udev-153/rules/redhat/40-redhat.rules 2010-08-04 15:35:27.000000000 +0200
@@ -5,17 +5,17 @@ KERNEL=="hd*[0-9]", ATTRS{media}=="flopp
KERNEL=="fw*", PROGRAM="fw_unit_symlinks.sh %k %n", SYMLINK+="$result"
-ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_device", ATTRS{type}=="3|6", SYMLINK+="scanner scanner-%k", MODE="0660"
+ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_generic", ATTRS{type}=="3|6", SYMLINK+="scanner scanner-%k", MODE="0660"
-ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_device", ATTRS{type}=="8", SYMLINK+="changer changer-%k", MODE="0660", GROUP="disk"
+ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_generic", ATTRS{type}=="8", SYMLINK+="changer changer-%k", MODE="0660", GROUP="disk"
SUBSYSTEM=="usb", KERNEL=="sd*", ATTRS{bInterfaceClass}=="08", ATTRS{bInterfaceSubClass}=="04", GROUP="floppy", MODE="0660", SYMLINK+="floppy floppy-%k"
KERNEL=="fd[0-9]*", SYMLINK+="floppy floppy-%k"
-ACTION=="add", SUBSYSTEM=="scsi_device", ATTRS{type}=="0|7|14", \
+ACTION=="add", SUBSYSTEM=="scsi_generic", ATTRS{type}=="0|7|14", \
RUN+="/sbin/modprobe sd_mod"
-ACTION=="add", SUBSYSTEM=="scsi_device", ATTRS{type}=="[45]", \
+ACTION=="add", SUBSYSTEM=="scsi_generic", ATTRS{type}=="[45]", \
RUN+="/sbin/modprobe sr_mod"
KERNEL=="vcs", OWNER="vcsa", GROUP="tty"

View file

@ -0,0 +1,194 @@
diff -urN udev-153-orig/extras/keymap/95-keyboard-force-release.rules udev-153/extras/keymap/95-keyboard-force-release.rules
--- udev-153-orig/extras/keymap/95-keyboard-force-release.rules 2010-09-21 13:52:31.000000000 +0200
+++ udev-153/extras/keymap/95-keyboard-force-release.rules 2010-08-04 14:23:27.000000000 +0200
@@ -19,7 +19,7 @@
ENV{DMI_VENDOR}="$attr{[dmi/id]sys_vendor}"
-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*N128*|*N130*|*N140*|*N210*|*SR70S/SR71S*|*Q210/P210*", RUN+="keyboard-force-release.sh $devpath samsung-other"
+ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*E252*|*N120*|*N128*|*N130*|*N140*|*N148/N208*|*N150*|*N150/N210/N220*|*N220*|*N308*|*N310*|*N510*|*NB30*|*NC10/N110*|*ND10*|*Q210/P210*|*R410P*|*R425/R525*|*R428/P428*|*R460*|*R463*|*R468/R418*|*R480/R431/R481*|*R509*|*R518*|*R519/R719*|*R520/R522/R620*|*R528/R728*|*R530/R730*|*R530/R730/P590*|*R560*|*R580*|*R580/R590*|*R59/R60/R61*|*R59P/R60P/R61P*|*R710*|*R720*|*R780/R778*|*SR58P*|*SR700*|*SR70S/SR71S*|*SX22S*|*X118*|*X120*|*X460*", RUN+="keyboard-force-release.sh $devpath samsung-other"
ENV{DMI_VENDOR}=="Dell Inc.", ATTR{[dmi/id]product_name}=="Studio 1557|Studio 1558", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
@@ -29,4 +29,10 @@
ENV{DMI_VENDOR}=="MTC", ATTR{[dmi/id]product_version}=="A0", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
+ENV{DMI_VENDOR}=="PEGATRON CORP.", ATTR{[dmi/id]product_name}=="Spring Peak", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
+
+ENV{DMI_VENDOR}=="TOSHIBA", ATTR{[dmi/id]product_name}=="Satellite U300|Satellite Pro U300|Satellite U305", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
+
+ENV{DMI_VENDOR}=="Viooo Corporation", ATTR{[dmi/id]product_name}=="PT17", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
+
LABEL="force_release_end"
diff -urN udev-153-orig/extras/keymap/95-keymap.rules udev-153/extras/keymap/95-keymap.rules
--- udev-153-orig/extras/keymap/95-keymap.rules 2010-09-21 13:52:31.000000000 +0200
+++ udev-153/extras/keymap/95-keymap.rules 2010-09-21 12:02:18.000000000 +0200
@@ -21,7 +21,11 @@
ENV{ID_VENDOR}=="Logitech*", ATTRS{name}=="Logitech USB Multimedia Keyboard", RUN+="keymap $name logitech-wave"
ENV{ID_VENDOR}=="Logitech*", ATTRS{name}=="Logitech USB Receiver", RUN+="keymap $name logitech-wave-cordless"
+# Logitech Cordless Wave Pro looks slightly weird; some hotkeys are coming through the mouse interface
+ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c529", ATTRS{name}=="Logitech USB Receiver", RUN+="keymap $name logitech-wave-pro-cordless"
+
ENV{ID_VENDOR}=="Lite-On_Technology_Corp*", ATTRS{name}=="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint", RUN+="keymap $name lenovo-thinkpad-usb-keyboard-trackpoint"
+ENV{ID_VENDOR_ID}=="04b3", ENV{ID_MODEL_ID}=="301[89]", RUN+="keymap $name ibm-thinkpad-usb-keyboard-trackpoint"
GOTO="keyboard_end"
@@ -37,11 +41,12 @@
ENV{DMI_VENDOR}=="IBM*", KERNELS=="input*", ATTRS{name}=="ThinkPad Extra Buttons", RUN+="keymap $name module-ibm"
ENV{DMI_VENDOR}=="LENOVO*", KERNELS=="input*", ATTRS{name}=="ThinkPad Extra Buttons", RUN+="keymap $name module-lenovo"
+ENV{DMI_VENDOR}=="LENOVO*", KERNELS=="input*", ATTRS{name}=="Lenovo ThinkPad SL Series extra buttons", RUN+="keymap $name 0x0E bluetooth"
ENV{DMI_VENDOR}=="ASUS*", KERNELS=="input*", ATTRS{name}=="Asus Extra Buttons", ATTR{[dmi/id]product_name}=="W3J", RUN+="keymap $name module-asus-w3j"
ENV{DMI_VENDOR}=="Sony*", KERNELS=="input*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony"
# Older Vaios have some different keys
-ENV{DMI_VENDOR}=="Sony*", ATTR{[dmi/id]product_name}=="*PCG-C1*|*PCG-K25*|*PCG-F1*|*PCG-F2*|*PCG-F3*|*PCG-F4*|*PCG-F5*|*PCG-F6*|*PCG-FX*|*PCG-FRV*|*PCG-GR*|*PCG-TR*|*PCG-NV*|*PCG-Z*|*VGN-S360*|*VGN-SZ2HP_B*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony-old"
+ENV{DMI_VENDOR}=="Sony*", ATTR{[dmi/id]product_name}=="*PCG-C1*|*PCG-K25*|*PCG-F1*|*PCG-F2*|*PCG-F3*|*PCG-F4*|*PCG-F5*|*PCG-F6*|*PCG-FX*|*PCG-FRV*|*PCG-GR*|*PCG-TR*|*PCG-NV*|*PCG-Z*|*VGN-S360*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony-old"
#
# The following rules belong to standard i8042 AT keyboard with high key codes.
@@ -53,19 +58,22 @@
LABEL="keyboard_vendorcheck"
ENV{DMI_VENDOR}=="Dell*", RUN+="keymap $name dell"
-ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Inspiron 1011", RUN+="keymap $name 0x84 wlan"
+ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Inspiron 910|Inspiron 1010|Inspiron 1011|Inspiron 1012|Inspiron 1110|Inspiron 1210", RUN+="keymap $name 0x84 wlan"
ENV{DMI_VENDOR}=="Compaq*", ATTR{[dmi/id]product_name}=="*E500*|*Evo N*", RUN+="keymap $name compaq-e_evo"
ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="*3000*", RUN+="keymap $name lenovo-3000"
ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="ThinkPad X6*", ATTR{[dmi/id]product_version}=="* Tablet" RUN+="keymap $name lenovo-thinkpad_x6_tablet"
ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="ThinkPad X200 Tablet*", ATTR{[dmi/id]product_version}=="* Tablet" RUN+="keymap $name lenovo-thinkpad_x200_tablet"
+ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="*IdeaPad*", RUN+="keymap $name lenovo-ideapad"
+ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_name}=="S10-*", RUN+="keymap $name lenovo-ideapad"
+ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*IdeaPad Y550*", RUN+="keymap $name 0x95 media 0xA3 play"
ENV{DMI_VENDOR}=="Hewlett-Packard*", RUN+="keymap $name hewlett-packard"
ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][aA][bB][lL][eE][tT]*", RUN+="keymap $name hewlett-packard-tablet"
ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[pP][aA][vV][iI][lL][iI][oO][nN]*", RUN+="keymap $name hewlett-packard-pavilion"
ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*Compaq*|*EliteBook*|*2230s*", RUN+="keymap $name hewlett-packard-compaq_elitebook"
-ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*2510p*|*2530p*", RUN+="keymap $name hewlett-packard-2510p_2530p"
+ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*2510p*|*2530p*|HP G60 Notebook PC", RUN+="keymap $name hewlett-packard-2510p_2530p"
ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][xX]2*", RUN+="keymap $name hewlett-packard-tx2"
ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="Presario 2100*", RUN+="keymap $name hewlett-packard-presario-2100"
# HP Pavillion dv6315ea has empty DMI_VENDOR
@@ -77,7 +85,8 @@
ENV{DMI_VENDOR}=="Acer*", RUN+="keymap $name acer"
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Extensa*", ATTR{[dmi/id]product_name}=="*5210*|*5220*|*5610*|*5620*|*5720*", RUN+="keymap $name 0xEE screenlock"
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*C300*", RUN+="keymap $name acer-travelmate_c300"
-ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*6292*|TravelMate*8471*|Aspire 1810T*|AO751h|AO531h", RUN+="keymap $name 0xD9 bluetooth"
+ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*6292*|TravelMate*8471*|TravelMate*4720*|Aspire 1810T*|AO751h|AO531h", RUN+="keymap $name 0xD9 bluetooth"
+ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*4720*", RUN+="keymap $name 0xB2 www 0xEE screenlock"
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate 6593|Aspire 1640", RUN+="keymap $name 0xB2 www 0xEE screenlock"
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 6920", RUN+="keymap $name acer-aspire_6920"
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 5920G", RUN+="keymap $name acer-aspire_5920g"
@@ -110,7 +119,7 @@
ENV{DMI_VENDOR}=="MAXDATA", ATTR{[dmi/id]product_name}=="Pro 7000*", RUN+="keymap $name maxdata-pro_7000"
-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*NC10*|*NC20*|*N128*|*N130*|*N210*|*SP55S*|*SQ45S70S*|*SX60P*|*SX22S*|*SX30S*|*R59P/R60P/R61P*|*SR70S/SR71S*|*Q210*|*Q310*|*X05*|*P560*|*R560*", RUN+="keymap $name samsung-other"
+ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", RUN+="keymap $name samsung-other"
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*SX20S*", RUN+="keymap $name samsung-sx20s"
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="SQ1US", RUN+="keymap $name samsung-sq1us"
@@ -120,6 +129,8 @@
ENV{DMI_VENDOR}=="OQO Inc.*", ATTR{[dmi/id]product_name}=="OQO Model 2*", RUN+="keymap $name oqo-model2"
+ENV{DMI_VENDOR}=="ONKYO CORPORATION", ATTR{[dmi/id]product_name}=="ONKYOPC", RUN+="keymap $name onkyo"
+
ENV{DMI_VENDOR}=="ASUS", RUN+="keymap $name asus"
ENV{DMI_VENDOR}=="VIA", ATTR{[dmi/id]product_name}=="K8N800", ATTR{[dmi/id]product_version}=="VT8204B", RUN+="keymap $name 0x81 prog1"
diff -urN udev-153-orig/extras/keymap/findkeyboards udev-153/extras/keymap/findkeyboards
--- udev-153-orig/extras/keymap/findkeyboards 2009-12-15 12:49:25.000000000 +0100
+++ udev-153/extras/keymap/findkeyboards 2010-07-08 11:37:47.000000000 +0200
@@ -34,6 +34,8 @@
# modules
module=`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*Extra Buttons'`
module="$module
+`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*extra buttons'`"
+ module="$module
`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='Sony Vaio Keys'`"
for m in $module; do
evdev=`ls -d $m/event* 2>/dev/null`
diff -urN udev-153-orig/extras/keymap/.gitignore udev-153/extras/keymap/.gitignore
--- udev-153-orig/extras/keymap/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ udev-153/extras/keymap/.gitignore 2010-03-18 16:44:52.000000000 +0100
@@ -0,0 +1,6 @@
+keymap
+keys-from-name.gperf
+keys-from-name.h
+keys-to-name.h
+keys.txt
+
diff -urN udev-153-orig/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint udev-153/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint
--- udev-153-orig/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint 1970-01-01 01:00:00.000000000 +0100
+++ udev-153/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint 2010-07-07 10:58:29.000000000 +0200
@@ -0,0 +1,7 @@
+0x900f0 screenlock
+0x900f1 wlan
+0x900f2 switchvideomode
+0x900f3 suspend
+0x900f4 brightnessup
+0x900f5 brightnessdown
+0x900f8 zoom
diff -urN udev-153-orig/extras/keymap/keymaps/lenovo-ideapad udev-153/extras/keymap/keymaps/lenovo-ideapad
--- udev-153-orig/extras/keymap/keymaps/lenovo-ideapad 1970-01-01 01:00:00.000000000 +0100
+++ udev-153/extras/keymap/keymaps/lenovo-ideapad 2010-08-17 16:31:27.000000000 +0200
@@ -0,0 +1,7 @@
+# Key codes observed on S10-3, assumed valid on other IdeaPad models
+0x81 rfkill # does nothing in BIOS
+0x83 display_off # BIOS toggles screen state
+0xB9 brightnessup # does nothing in BIOS
+0xBA brightnessdown # does nothing in BIOS
+0xF1 camera # BIOS toggles camera power
+0xf2 unknown # trackpad enable/disable (does nothing in BIOS)
diff -urN udev-153-orig/extras/keymap/keymaps/logitech-wave-pro-cordless udev-153/extras/keymap/keymaps/logitech-wave-pro-cordless
--- udev-153-orig/extras/keymap/keymaps/logitech-wave-pro-cordless 1970-01-01 01:00:00.000000000 +0100
+++ udev-153/extras/keymap/keymaps/logitech-wave-pro-cordless 2010-07-07 10:58:29.000000000 +0200
@@ -0,0 +1,12 @@
+0xC01B6 camera
+0xC0183 media
+0xC0184 wordprocessor
+0xC0186 spreadsheet
+0xC018E calendar
+0xC0223 homepage
+0xC01BC messenger
+0xC018A mail
+0xC0221 search
+0xC00B8 ejectcd
+0xC022D zoomin
+0xC022E zoomout
diff -urN udev-153-orig/extras/keymap/keymaps/micro-star udev-153/extras/keymap/keymaps/micro-star
--- udev-153-orig/extras/keymap/keymaps/micro-star 2009-12-03 13:45:03.000000000 +0100
+++ udev-153/extras/keymap/keymaps/micro-star 2010-06-11 10:52:56.000000000 +0200
@@ -6,6 +6,7 @@
0xE2 bluetooth # satellite dish2
0xE4 f22 # Fn-F3 Touchpad disable
0xEC email # envelope button
+0xEE camera # Fn-F6 camera disable
0xF6 wlan # satellite dish1
0xF7 brightnessdown # Fn-F4
0xF8 brightnessup # Fn-F5
diff -urN udev-153-orig/extras/keymap/keymaps/onkyo udev-153/extras/keymap/keymaps/onkyo
--- udev-153-orig/extras/keymap/keymaps/onkyo 1970-01-01 01:00:00.000000000 +0100
+++ udev-153/extras/keymap/keymaps/onkyo 2010-08-31 10:35:41.000000000 +0200
@@ -0,0 +1,14 @@
+0xA0 mute # Fn+D
+0xAE volumedown # Fn+F
+0xB0 volumeup # Fn+G
+0xDF sleep # Fn+W
+0xE0 bluetooth # Fn+H
+0xE2 cyclewindows # Fn+Esc
+0xEE battery # Fn+Q
+0xF0 media # Fn+R
+0xF5 switchvideomode # Fn+E
+0xF6 camera # Fn+T
+0xF7 f22 # Fn+Y (touchpad toggle)
+0xF8 brightnessup # Fn+S
+0xF9 brightnessdown # Fn+A
+0xFB wlan # Fn+J

24
udev-153-n210.patch Normal file
View file

@ -0,0 +1,24 @@
diff -up udev-153/extras/keymap/95-keyboard-force-release.rules.n210 udev-153/extras/keymap/95-keyboard-force-release.rules
--- udev-153/extras/keymap/95-keyboard-force-release.rules.n210 2010-08-04 15:55:56.000000000 +0200
+++ udev-153/extras/keymap/95-keyboard-force-release.rules 2010-08-04 15:57:54.000000000 +0200
@@ -19,7 +19,7 @@ DRIVER!="atkbd", GOTO="force_release_end
ENV{DMI_VENDOR}="$attr{[dmi/id]sys_vendor}"
-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*N130*|*N140*|*SR70S/SR71S*|*Q210/P210*", RUN+="keyboard-force-release.sh $devpath samsung-other"
+ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*N128*|*N130*|*N140*|*N210*|*SR70S/SR71S*|*Q210/P210*", RUN+="keyboard-force-release.sh $devpath samsung-other"
ENV{DMI_VENDOR}=="Dell Inc.", ATTR{[dmi/id]product_name}=="Studio 1557|Studio 1558", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
diff -up udev-153/extras/keymap/95-keymap.rules.n210 udev-153/extras/keymap/95-keymap.rules
--- udev-153/extras/keymap/95-keymap.rules.n210 2010-08-04 15:57:23.000000000 +0200
+++ udev-153/extras/keymap/95-keymap.rules 2010-08-04 15:57:52.000000000 +0200
@@ -110,7 +110,7 @@ ENV{DMI_VENDOR}=="INVENTEC", ATTR{[dmi/i
ENV{DMI_VENDOR}=="MAXDATA", ATTR{[dmi/id]product_name}=="Pro 7000*", RUN+="keymap $name maxdata-pro_7000"
-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*NC10*|*NC20*|*N130*|*SP55S*|*SQ45S70S*|*SX60P*|*SX22S*|*SX30S*|*R59P/R60P/R61P*|*SR70S/SR71S*|*Q210*|*Q310*|*X05*|*P560*|*R560*", RUN+="keymap $name samsung-other"
+ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*NC10*|*NC20*|*N128*|*N130*|*N210*|*SP55S*|*SQ45S70S*|*SX60P*|*SX22S*|*SX30S*|*R59P/R60P/R61P*|*SR70S/SR71S*|*Q210*|*Q310*|*X05*|*P560*|*R560*", RUN+="keymap $name samsung-other"
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*SX20S*", RUN+="keymap $name samsung-sx20s"
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="SQ1US", RUN+="keymap $name samsung-sq1us"

22
udev-153-trigger.patch Normal file
View file

@ -0,0 +1,22 @@
diff --git a/udev/udevadm-trigger.c b/udev/udevadm-trigger.c
index 03aa534..dbcaee3 100644
--- a/udev/udevadm-trigger.c
+++ b/udev/udevadm-trigger.c
@@ -110,7 +110,7 @@ int udevadm_trigger(struct udev *udev, int argc, char *argv[])
TYPE_SUBSYSTEMS,
TYPE_FAILED,
} device_type = TYPE_DEVICES;
- const char *action = "change";
+ const char *action = "add";
struct udev_enumerate *udev_enumerate;
int rc = 0;
@@ -184,7 +184,7 @@ int udevadm_trigger(struct udev *udev, int argc, char *argv[])
" subsystems sys subsystems and drivers\n"
" failed trigger only the events which have been\n"
" marked as failed during a previous run\n"
- " --action=<action> event action value, default is \"change\"\n"
+ " --action=<action> event action value, default is \"add\"\n"
" --subsystem-match=<subsystem> trigger devices from a matching subsystem\n"
" --subsystem-nomatch=<subsystem> exclude devices from a matching subsystem\n"
" --attr-match=<file[=<value>]> trigger devices with a matching attribute\n"

View file

@ -0,0 +1,43 @@
From 86a7a2f853fe6022c5b0c1b415918047b65533be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas@archlinux.org>
Date: Sun, 31 Jan 2010 13:49:02 +0100
Subject: firmware: fix error reporting on missing firmware files
The new firmware loader does not report an error to the kernel if a firmware file
is missing. This results in modprobe stalling for 60 seconds for each firmware
a module tries to load.
---
extras/firmware/firmware.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/extras/firmware/firmware.c b/extras/firmware/firmware.c
index 8f70be4..16455de 100644
--- a/extras/firmware/firmware.c
+++ b/extras/firmware/firmware.c
@@ -149,6 +149,7 @@ int main(int argc, char **argv)
util_path_encode(firmware, fwencpath, sizeof(fwencpath));
util_strscpyl(misspath, sizeof(misspath), udev_get_dev_path(udev), "/.udev/firmware-missing/", fwencpath, NULL);
+ util_strscpyl(loadpath, sizeof(loadpath), udev_get_sys_path(udev), devpath, "/loading", NULL);
if (fwfile == NULL) {
int err;
@@ -166,6 +167,7 @@ int main(int argc, char **argv)
udev_selinux_resetfscreatecon(udev);
} while (err == -ENOENT);
rc = 2;
+ set_loading(udev, loadpath, "-1");
goto exit;
}
@@ -176,7 +178,6 @@ int main(int argc, char **argv)
if (unlink(misspath) == 0)
util_delete_path(udev, misspath);
- util_strscpyl(loadpath, sizeof(loadpath), udev_get_sys_path(udev), devpath, "/loading", NULL);
set_loading(udev, loadpath, "1");
util_strscpyl(datapath, sizeof(datapath), udev_get_sys_path(udev), devpath, "/data", NULL);
--
1.6.6

View file

@ -0,0 +1,27 @@
commit 484e1b2d11b9b89418589d885a625e647881933b
Author: Kay Sievers <kay.sievers@vrfy.org>
Date: Tue May 25 09:54:14 2010 +0200
rules: optical drives - use ID_CDROM_MEDIA_TRACK_COUNT_DATA
We should not access non-data optical media, ans skip things
like blkid. It will cause errors for some drives.
https://bugzilla.kernel.org/show_bug.cgi?id=15757
diff --git a/rules/rules.d/60-persistent-storage.rules b/rules/rules.d/60-persistent-storage.rules
index d9f8003..1f46041 100644
--- a/rules/rules.d/60-persistent-storage.rules
+++ b/rules/rules.d/60-persistent-storage.rules
@@ -52,9 +52,9 @@ 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}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", IMPORT{program}="/sbin/blkid -o udev -p -u noraid -O $env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
+KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", IMPORT{program}="/sbin/blkid -o udev -p -u noraid -O $env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
# single-session CDs do not have ID_CDROM_MEDIA_SESSION_LAST_OFFSET
-KERNEL=="sr*", ENV{ID_CDROM_MEDIA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", IMPORT{program}="/sbin/blkid -o udev -p -u noraid $tempnode"
+KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", IMPORT{program}="/sbin/blkid -o udev -p -u noraid $tempnode"
# probe filesystem metadata of disks
KERNEL!="sr*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode"

96
udev-post.init Normal file
View file

@ -0,0 +1,96 @@
#!/bin/bash
#
# udev-post Post script for udev, after all filesystems are mounted
#
# Authors: Harald Hoyer <harald@redhat.com>
#
# chkconfig: 12345 26 75
# description: Moves the generated persistent udev rules to /etc/udev/rules.d
#
### BEGIN INIT INFO
# Default-Start: 12345
# Default-Stop: 0 6
# Required-Start: $local_fs
# Required-Stop:
# Short-Description: Moves the generated persistent udev rules to /etc/udev/rules.d
# Description: Moves the generated persistent udev rules to /etc/udev/rules.d
# Provides: udev-post
### END INIT INFO
. /etc/rc.d/init.d/functions
. /etc/sysconfig/udev
# See how we were called.
case "$1" in
start|reload)
[ -w /var/lock/subsys ] || exit 4
STRING=$"Retrigger failed udev events"
echo -n $STRING
/sbin/udevadm trigger --type=failed --action=add
success "$STRING"
echo
STRING=$"Adding udev persistent rules"
# copy the rules generated before / was mounted read-write
for file in /dev/.udev/tmp-rules--*; do
dest=${file##*tmp-rules--}
# check, if anything is todo
[ "$dest" = '*' ] && exit 0
echo -n $STRING
cat $file >> /etc/udev/rules.d/$dest
rc=$?
rm -f $file
if [ "$rc" -eq "0" ]; then
success "$STRING"
echo
elif [ "$rc" -eq "1" ]; then
failure "$STRING"
echo
fi
done
touch /var/lock/subsys/udev-post
exit 0
;;
stop)
[ -w /var/lock/subsys ] || exit 4
STRING=$"Generating udev makedev cache file"
MAKEDEV="/sbin/MAKEDEV"
USE_MD5="false"
[[ "$UDEV_USE_MAKEDEV_CACHE" == "yes" && -x /usr/bin/md5sum ]] && USE_MD5="true"
if [[ "$USE_MD5" == "true" && -x "$MAKEDEV" ]]; then
for i in /etc/udev/makedev.d/*.nodes; do
if [ -f "$i" ]; then
# use a little caching to speedup things
md5=$(/usr/bin/md5sum "$i"|(read a b; echo $a))
md5file="/var/lib/udev/makedev.d/${md5}.sh"
if [ ! -f "$md5file" ]; then
echo -n $STRING
( sed -e 's,#.*,,g' "$i" | \
xargs $MAKEDEV -x -a -S ) \
> "$md5file"
rc=$?
if [ "$rc" -eq "0" ]; then
success "$STRING"
echo
elif [ "$rc" -eq "1" ]; then
failure "$STRING"
echo
fi
fi
fi
done
fi
rm -f /var/lock/subsys/udev-post
exit 0
;;
status)
exit 3
;;
*)
echo $"Usage: $0 {start|stop|reload}"
exit 2
esac
exit 0

1551
udev.spec Normal file

File diff suppressed because it is too large Load diff

4
udev.sysconfig Normal file
View file

@ -0,0 +1,4 @@
# If set to "yes", generates cache shell files of what MAKEDEV would do.
# May speedup some systems with slow disks.
# EXPERIMENTAL - use at your own risk
UDEV_USE_MAKEDEV_CACHE="no"

1
upstream Normal file
View file

@ -0,0 +1 @@
udev-145.tar.bz2

54
upstream-key.gpg Normal file
View file

@ -0,0 +1,54 @@
pub 1024D/517D0F0E 2000-10-10 Linux Kernel Archives Verification Key <ftpadmin@kernel.org>
Key fingerprint = C75D C40A 11D7 AF88 9981 ED5B C86B A06A 517D 0F0E
sub 4096g/E50A8F2A 2000-10-10
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.3 (GNU/Linux)
Comment: For info see http://www.gnupg.org
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
=SZZb
-----END PGP PUBLIC KEY BLOCK-----