summaryrefslogtreecommitdiff
path: root/udev_remove.c
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@suse.de>2005-07-05 22:40:42 +0200
committerKay Sievers <kay.sievers@suse.de>2005-07-05 22:40:42 +0200
commit25103c4849d3bdee38d22e08c65cd60cf5d5bcc4 (patch)
tree3ad58616f2c8a35ad96075536ebd7a39b5988dfd /udev_remove.c
parent8bd41f36f793f7fc208ef6beb4b2b84e35a5e728 (diff)
create udevdb files only if somehting interesting happened
Device nodes created with the default rule, without any symlink or option are no longer saved to the udevdb. This saves us ~3 MB RAM for pretty much useless files on tmpfs. Note: HAL needs a fix to handle this correctly. It's already available on the list. Signed-off-by: Kay Sievers <kay.sievers@suse.de>
Diffstat (limited to 'udev_remove.c')
-rw-r--r--udev_remove.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/udev_remove.c b/udev_remove.c
index cf28ff37a9..b9a4384ee0 100644
--- a/udev_remove.c
+++ b/udev_remove.c
@@ -143,18 +143,17 @@ int udev_remove_device(struct udevice *udev)
if (udev->type != DEV_BLOCK && udev->type != DEV_CLASS)
return 0;
- /* remove node only if we can find it in our database */
- if (udev_db_get_device(udev, udev->devpath) != 0) {
- dbg("'%s' not found in database, ignore event", udev->name);
- return -1;
- }
- if (udev->ignore_remove) {
- dbg("remove event for '%s' requested to be ignored by rule", udev->name);
- return 0;
+ if (udev_db_get_device(udev, udev->devpath) == 0) {
+ if (udev->ignore_remove) {
+ dbg("remove event for '%s' requested to be ignored by rule", udev->name);
+ return 0;
+ }
+ dbg("remove name='%s'", udev->name);
+ udev_db_delete_device(udev);
+ } else {
+ dbg("'%s' not found in database, using kernel name '%s'", udev->devpath, udev->kernel_name);
+ strlcpy(udev->name, udev->kernel_name, sizeof(udev->name));
}
- dbg("remove name='%s'", udev->name);
- udev_db_delete_device(udev);
-
/* use full path to the environment */
snprintf(udev->devname, sizeof(udev->devname), "%s/%s", udev_root, udev->name);
udev->devname[sizeof(udev->devname)-1] = '\0';