]>
err.no Git - systemd/log
Alan Jenkins [Tue, 28 Oct 2008 08:58:18 +0000 (08:58 +0000)]
udevd: simplify rules execution loop
cur can't become NULL, and the check for TK_END
can be folded into the switch statement.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Kay Sievers [Tue, 28 Oct 2008 01:26:35 +0000 (02:26 +0100)]
update NEWS
Alan Jenkins [Sun, 26 Oct 2008 14:48:48 +0000 (14:48 +0000)]
kerneldoc comment fixes
s/ressources/resources/
Also reduce commas per sentence and add a possessive apostrophe.
Kay Sievers [Sun, 26 Oct 2008 13:31:46 +0000 (14:31 +0100)]
libudev: device - allocate envp array only once
Kay Sievers [Sun, 26 Oct 2008 03:35:32 +0000 (04:35 +0100)]
test: add RUN+="socket: ..." to a test to run monitor code
Kay Sievers [Sun, 26 Oct 2008 02:39:41 +0000 (03:39 +0100)]
libudev: device - fill envp array while composing monitor buffer
Thanks to Alan Jenkins, for the idea.
Kay Sievers [Sun, 26 Oct 2008 01:48:14 +0000 (02:48 +0100)]
fix $attr{[<subsystem>/<sysname>]<attribute>} substitution
Kay Sievers [Sun, 26 Oct 2008 01:31:54 +0000 (02:31 +0100)]
do not init string arrays, just clear first byte
Kay Sievers [Sun, 26 Oct 2008 01:16:54 +0000 (02:16 +0100)]
match_attr() - copy attr value only when needed
Alan Jenkins [Sat, 25 Oct 2008 14:51:19 +0000 (15:51 +0100)]
udevd: avoid implicit memset in match_attr()
Initializing a char array to "" is equivalent to a memset()
call - which is exactly what it gets compiled to.
Fixing this one callsite reduced memset() _user_ cpu cycles
from 2-4% to 0.05% on the EeePC.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Alan Jenkins [Sat, 25 Oct 2008 16:01:21 +0000 (17:01 +0100)]
udevd: use a tighter loop for compare_devpath()
This crops up in my threaded udevd profiles from time to time.
It's not consistent - probably due to variations in the number
of concurrent events - but it can hit 4% user time and higher.
The change halves the user time spent in compare_devpath().
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Alan Jenkins [Sat, 25 Oct 2008 13:19:48 +0000 (15:19 +0200)]
fix handling of string_escape option
Kay Sievers [Sat, 25 Oct 2008 01:00:03 +0000 (03:00 +0200)]
match KEY="A|B" without temporary string copy
Kay Sievers [Fri, 24 Oct 2008 16:09:13 +0000 (18:09 +0200)]
remove debug printf
Kay Sievers [Fri, 24 Oct 2008 15:42:31 +0000 (17:42 +0200)]
fix "unused" warnings
Kay Sievers [Fri, 24 Oct 2008 14:36:27 +0000 (16:36 +0200)]
libudev: monitor - cache result of monitor send buffer
Kay Sievers [Fri, 24 Oct 2008 13:09:43 +0000 (15:09 +0200)]
libudev: monitor - replace far too expensive snprintf() with strlcpy()
Kay Sievers [Fri, 24 Oct 2008 12:19:42 +0000 (14:19 +0200)]
special-case "?*" match to skip fnmatch()
Kay Sievers [Fri, 24 Oct 2008 11:32:32 +0000 (13:32 +0200)]
determine at rule parse time if we need to call fnmatch()
This cuts down the large rule set's 120.000 calls to fnmatch() to
51.000, and we can just call strcmp for the simple matches.
Kay Sievers [Fri, 24 Oct 2008 09:38:05 +0000 (11:38 +0200)]
distinguish "match" from "assign" by (op < OP_MATCH_MAX)
Kay Sievers [Fri, 24 Oct 2008 08:51:04 +0000 (10:51 +0200)]
cache uid/gid during rule parsing
This cuts down the number of parsing /etc/group from ~700 to 11,
with some large rule files installed.
Kay Sievers [Fri, 24 Oct 2008 07:37:37 +0000 (09:37 +0200)]
fix uninitialized variable warnings
Kay Sievers [Fri, 24 Oct 2008 06:07:37 +0000 (08:07 +0200)]
rules: let empty strings added to buffer always return offset 0
Kay Sievers [Thu, 23 Oct 2008 19:42:23 +0000 (21:42 +0200)]
skip SYMLINK rules for devices without a device node
Alan Jenkins [Thu, 23 Oct 2008 18:37:30 +0000 (19:37 +0100)]
udevd: fix WAIT_FOR_SYSFS execution order
The wait should be ordered after matching KERNEL, ENV, etc.
but before ATTR.
Without this, WAIT_FOR_SYSFS rules will be applied unconditionally
to all events.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Kay Sievers [Thu, 23 Oct 2008 13:44:34 +0000 (15:44 +0200)]
rule_generator: fix netif NAME= value extraction regex
$ sed -n -r \
-e 's/^#.*//' \
-e 's/[[:space:],]NAME="(eth[0-9]*)"[[:space:]]*(,.*|\\|)$/\1/p' \
/dev/null /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:41:e2:8d:c7", ATTR{type}=="1", KERNEL=="eth*",eth4
$ sed -n -r \
-e 's/^#.*//' \
-e 's/.*[[:space:],]NAME="(eth[0-9]*)".*/\1/p' \
/dev/null /etc/udev/rules.d/70-persistent-net.rules
eth4
Alan Jenkins [Thu, 23 Oct 2008 09:27:36 +0000 (10:27 +0100)]
udevd: fix memory leak
Re:
b99028c96307e729303be8f6750418979a7488b9 shrink struct udev_event
TEST 136: test multi matches 2
device '/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0' expecting node 'right'
==15011==
==15011== 7 bytes in 1 blocks are definitely lost in loss record 1 of 1
==15011== at 0x47F9AB8: malloc (vg_replace_malloc.c:207)
==15011== by 0x489CB5F: strdup (in /lib32/libc-2.7.so)
==15011== by 0x8050F40: udev_rules_apply_to_event (udev-rules.c:1973)
==15011== by 0x804A658: udev_event_execute_rules (udev-event.c:549)
==15011== by 0x805A636: main (test-udev.c:100)
add: ok
==15012==
==15012== 7 bytes in 1 blocks are definitely lost in loss record 1 of 1
==15012== at 0x47F1AB8: malloc (vg_replace_malloc.c:207)
==15012== by 0x4898B5F: strdup (in /lib32/libc-2.7.so)
==15012== by 0x8050F40: udev_rules_apply_to_event (udev-rules.c:1973)
==15012== by 0x804A9DF: udev_event_execute_rules (udev-event.c:658)
==15012== by 0x805A636: main (test-udev.c:100)
remove: ok
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Kay Sievers [Thu, 23 Oct 2008 00:57:08 +0000 (02:57 +0200)]
shrink struct udev_event
Kay Sievers [Thu, 23 Oct 2008 00:34:22 +0000 (02:34 +0200)]
shrink struct udev_event
Kay Sievers [Wed, 22 Oct 2008 23:13:52 +0000 (01:13 +0200)]
do not create temporary node ($tempnode) if node already exists
Kay Sievers [Wed, 22 Oct 2008 22:13:59 +0000 (00:13 +0200)]
replace in-memory rules array with match/action token list
The in-memory rule array of a common desktop distro install took:
1151088 bytes
with the token list:
109232 bytes tokens (6827 * 16 bytes), 71302 bytes buffer
Kay Sievers [Wed, 22 Oct 2008 21:59:53 +0000 (23:59 +0200)]
handle numerical owner/group string in lookup_user/group()
Alan Jenkins [Wed, 22 Oct 2008 14:13:08 +0000 (15:13 +0100)]
use re-entrant variants of getpwnam and getgrnam
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Kay Sievers [Wed, 22 Oct 2008 16:03:38 +0000 (18:03 +0200)]
add util_resolve_subsys_kernel()
Matthias Koenig [Wed, 22 Oct 2008 09:45:27 +0000 (11:45 +0200)]
volume_id: swap - larger PAGE_SIZE support
Alan Jenkins [Tue, 21 Oct 2008 21:42:15 +0000 (22:42 +0100)]
replace strncpy() with strlcpy()
The problem was strncpy() doesn't stop after writing the terminating
NUL; by definition it goes on to zero the entire buffer.
I spy another use of strncpy in udev_device_add_property_from_string(),
which is responsible for another ~1% user cpu time...
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Kay Sievers [Tue, 21 Oct 2008 11:58:19 +0000 (13:58 +0200)]
libudev: device - 128 -> ENVP_SIZE
Alan Jenkins [Tue, 21 Oct 2008 10:11:41 +0000 (11:11 +0100)]
libudev: allocate udev_device->envp[] dynamically
Measured 2% _user_ cpu time reduction on EeePC coldplug.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Alan Jenkins [Tue, 21 Oct 2008 10:12:57 +0000 (11:12 +0100)]
libudev: util - optimize path_encode()
Since we already know the length, use memcpy() instead.
Measured 2% _user_ cpu time reduction on EeePC coldplug.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Alan Jenkins [Tue, 21 Oct 2008 10:10:32 +0000 (11:10 +0100)]
use more appropriate alternatives to malloc()
Use calloc to request cleared memory instead.
Kernel and libc conspire to make this more efficient.
Also, replace one malloc() + strcpy() with strdup().
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Kay Sievers [Tue, 21 Oct 2008 10:45:54 +0000 (12:45 +0200)]
do not use the new work-in-progress parser rule matcher
Kay Sievers [Tue, 21 Oct 2008 10:43:07 +0000 (12:43 +0200)]
add "root" == 0 shortcuts to lookup_user/group()
Kay Sievers [Tue, 21 Oct 2008 10:42:13 +0000 (12:42 +0200)]
replace missing get_attr_value() -> get_sysattr_value()
Kay Sievers [Tue, 21 Oct 2008 10:40:47 +0000 (12:40 +0200)]
cdrom_id: remove ARRAY_SIZE() declaration
Kay Sievers [Mon, 20 Oct 2008 16:12:36 +0000 (18:12 +0200)]
libudev: device - get_attr_value() -> get_sysattr_value()
Kay Sievers [Sat, 18 Oct 2008 18:33:06 +0000 (20:33 +0200)]
pass make distcheck
Kay Sievers [Sat, 18 Oct 2008 18:12:55 +0000 (20:12 +0200)]
prefix udev-util.c functions with util_*
Kay Sievers [Sat, 18 Oct 2008 17:30:42 +0000 (19:30 +0200)]
selinux_init(udev) -> udev_selinux_init(udev)
Kay Sievers [Sat, 18 Oct 2008 17:27:38 +0000 (19:27 +0200)]
udev_list_cleanup() -> udev_list_cleanup_entries()
Kay Sievers [Sat, 18 Oct 2008 17:19:56 +0000 (19:19 +0200)]
move udev_rules_apply_format() to udev-event.c
Kay Sievers [Sat, 18 Oct 2008 13:50:16 +0000 (15:50 +0200)]
udev_rules_run() -> udev_event_execute_run();
Kay Sievers [Sat, 18 Oct 2008 13:46:55 +0000 (15:46 +0200)]
udev_event_run() -> udev_event_execute_rules()
Alan Jenkins [Sat, 18 Oct 2008 12:39:04 +0000 (13:39 +0100)]
udevd: avoid overhead of calling rmdir on non-empty directories
Unfortunately the linux rmdir implementation unhashes the dentry
even when the directory is not removed. This is apparently by
design (for filesystems that don't allow deleting open files).
Results from time(1) and oprofile follow.
Before:
0.35user 0.90system
samples % image name symbol name
608 9.6738 vmlinux shrink_dcache_parent
293 4.6619 vmlinux copy_page_c
271 4.3119 vmlinux copy_page_range
257 4.0891 udevd udev_rules_iter_next
After:
0.31user 0.67system
samples % image name symbol name
361 5.0419 vmlinux copy_page_range
322 4.4972 udevd udev_rules_iter_next
300 4.1899 vmlinux copy_page_c
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Kay Sievers [Sat, 18 Oct 2008 13:25:05 +0000 (15:25 +0200)]
move run_program to util
Kay Sievers [Sat, 18 Oct 2008 13:02:01 +0000 (15:02 +0200)]
make struct udev_rules opaque
Kay Sievers [Sat, 18 Oct 2008 12:33:37 +0000 (14:33 +0200)]
merge udev-rules.c and udev-rules-parse.c
Kay Sievers [Fri, 17 Oct 2008 17:29:57 +0000 (19:29 +0200)]
delete list.h
Kay Sievers [Fri, 17 Oct 2008 17:29:02 +0000 (19:29 +0200)]
collect: use udev_list
Kay Sievers [Fri, 17 Oct 2008 16:59:27 +0000 (18:59 +0200)]
udevd: use udev_list_node
Kay Sievers [Fri, 17 Oct 2008 16:59:08 +0000 (18:59 +0200)]
libudev: make list_node functions available
Kay Sievers [Fri, 17 Oct 2008 15:32:17 +0000 (17:32 +0200)]
libudev: ctrl - change magic to integer
Kay Sievers [Fri, 17 Oct 2008 14:49:27 +0000 (16:49 +0200)]
libudev: monitor - add set_receive_buffer_size()
Kay Sievers [Fri, 17 Oct 2008 11:54:50 +0000 (13:54 +0200)]
test: fix a few unintentially wrongly written rules which cause parse errors
Kay Sievers [Fri, 17 Oct 2008 11:54:14 +0000 (13:54 +0200)]
libudev: add sysnum to test program
Alan Jenkins [Fri, 17 Oct 2008 11:19:54 +0000 (13:19 +0200)]
libudev: fix sysnum logic for digit-only device names
Kay Sievers [Thu, 16 Oct 2008 23:39:10 +0000 (01:39 +0200)]
libudev: list - prepend udev_* to all functions
Kay Sievers [Thu, 16 Oct 2008 22:42:48 +0000 (00:42 +0200)]
delete udev-util-file.c
Kay Sievers [Thu, 16 Oct 2008 22:40:03 +0000 (00:40 +0200)]
update rules file parsing
Kay Sievers [Thu, 16 Oct 2008 20:41:52 +0000 (22:41 +0200)]
update IMPORT= file/stdout property parsing
Kay Sievers [Thu, 16 Oct 2008 19:35:11 +0000 (21:35 +0200)]
run_program: prevent empty last argv entry
Kay Sievers [Thu, 16 Oct 2008 19:12:08 +0000 (21:12 +0200)]
fix sorting of rules files
Kay Sievers [Thu, 16 Oct 2008 18:23:56 +0000 (20:23 +0200)]
delete name_list, move common file functions
Kay Sievers [Thu, 16 Oct 2008 18:12:16 +0000 (20:12 +0200)]
udev-rules-parse: name_list -> udev_list
Kay Sievers [Thu, 16 Oct 2008 17:23:07 +0000 (19:23 +0200)]
udev-node: name_list -> udev_list
Kay Sievers [Thu, 16 Oct 2008 16:56:19 +0000 (18:56 +0200)]
libudev: monitor - export MAJOR/MINOR only if available
Kay Sievers [Thu, 16 Oct 2008 16:51:05 +0000 (18:51 +0200)]
libudev: always add UDEV_LOG
Kay Sievers [Thu, 16 Oct 2008 16:13:48 +0000 (18:13 +0200)]
rename udev source files
Kay Sievers [Thu, 16 Oct 2008 15:30:06 +0000 (17:30 +0200)]
move udev_device_db to libudev
Kay Sievers [Thu, 16 Oct 2008 15:16:58 +0000 (17:16 +0200)]
udevd: use libudev
Kay Sievers [Thu, 16 Oct 2008 15:10:47 +0000 (17:10 +0200)]
volume_id: btrfs - update magic to latest disk format
Kay Sievers [Thu, 16 Oct 2008 11:53:16 +0000 (13:53 +0200)]
libudev: device - copy global properties, unset empty properties
Kay Sievers [Thu, 16 Oct 2008 11:51:29 +0000 (13:51 +0200)]
libudev: add global property list
Kay Sievers [Thu, 16 Oct 2008 11:34:11 +0000 (13:34 +0200)]
libudev: ctrl - fix typo in set_env()
Kay Sievers [Thu, 16 Oct 2008 11:33:13 +0000 (13:33 +0200)]
libudev: list - handle update of key with NULL value
Kay Sievers [Thu, 16 Oct 2008 09:37:22 +0000 (11:37 +0200)]
libudev: device - export properties when values are set
Kay Sievers [Wed, 15 Oct 2008 16:34:14 +0000 (18:34 +0200)]
libudev: device - lookup "subsystem" and "driver" only once
Kay Sievers [Wed, 15 Oct 2008 14:56:06 +0000 (16:56 +0200)]
libudev: update DEVLINKS property when properties are read
Kay Sievers [Wed, 15 Oct 2008 14:55:04 +0000 (16:55 +0200)]
libudev: monitor - do not mangle DEVLINKS property
Kay Sievers [Wed, 15 Oct 2008 14:54:06 +0000 (16:54 +0200)]
libudev: do not include ctrl in libudev.so
Kay Sievers [Wed, 15 Oct 2008 12:21:33 +0000 (14:21 +0200)]
libudev: device - add get_envp() to construct envp from property list
Kay Sievers [Wed, 15 Oct 2008 12:20:27 +0000 (14:20 +0200)]
libudev: monitor - fix send_device() property copying
Kay Sievers [Tue, 14 Oct 2008 17:55:57 +0000 (19:55 +0200)]
test: move global ENV{ENV_KEY_TEST}="test" to local rule
Kay Sievers [Tue, 14 Oct 2008 17:55:22 +0000 (19:55 +0200)]
delete simple-build-check.sh
Kay Sievers [Tue, 14 Oct 2008 17:53:47 +0000 (19:53 +0200)]
libudev: handle ! in sysname, add sysnum, return allocated list_entry on add
Kay Sievers [Mon, 13 Oct 2008 01:34:37 +0000 (03:34 +0200)]
vol_id: update README
Steven Whitehouse [Fri, 10 Oct 2008 10:54:46 +0000 (11:54 +0100)]
volume_id: support for GFS2 UUIDs
Kay Sievers [Sat, 11 Oct 2008 16:40:33 +0000 (18:40 +0200)]
libudev: device - generate DEVNAME and DEVLINKS properties
Kay Sievers [Sat, 11 Oct 2008 16:40:04 +0000 (18:40 +0200)]
libudev: list - add flag
Kay Sievers [Thu, 9 Oct 2008 21:38:30 +0000 (23:38 +0200)]
libudev: add udev_monitor_send_device()
Kay Sievers [Thu, 9 Oct 2008 20:24:43 +0000 (22:24 +0200)]
libudev: also prefix non-exported functions with udev_*