mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-10-30 23:21:08 +03:00
let SYSFS{} look at the device, not only the parent device
The stricter parent logic broke: BUS=="ide", SYSFS{removable}=="1", ... cause removable is on the block device, which isn't a ide device. Just look for matching attributes at the device and the selected parent device at the same time now. Signed-off-by: Kay Sievers <kay.sievers@suse.de>
This commit is contained in:
parent
34f55103c5
commit
9538b16d8b
@ -348,14 +348,14 @@ static int wait_for_sysfs(struct udevice *udev, const char *file, int timeout)
|
|||||||
|
|
||||||
snprintf(filename, sizeof(filename), "%s%s/%s", sysfs_path, udev->dev->devpath, file);
|
snprintf(filename, sizeof(filename), "%s%s/%s", sysfs_path, udev->dev->devpath, file);
|
||||||
filename[sizeof(filename)-1] = '\0';
|
filename[sizeof(filename)-1] = '\0';
|
||||||
dbg("wait %i sec for '%s'", timeout, filename);
|
dbg("will wait %i sec for '%s'", timeout, filename);
|
||||||
|
|
||||||
while (--loop) {
|
while (--loop) {
|
||||||
if (stat(filename, &stats) == 0) {
|
if (stat(filename, &stats) == 0) {
|
||||||
info("file '%s' appeared after %i loops", filename, (timeout * WAIT_LOOP_PER_SECOND) - loop-1);
|
info("file '%s' appeared after %i loops", filename, (timeout * WAIT_LOOP_PER_SECOND) - loop-1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
info("wait for %i mseconds", 1000 / WAIT_LOOP_PER_SECOND);
|
info("wait for '%s' for %i mseconds", filename, 1000 / WAIT_LOOP_PER_SECOND);
|
||||||
usleep(1000 * 1000 / WAIT_LOOP_PER_SECOND);
|
usleep(1000 * 1000 / WAIT_LOOP_PER_SECOND);
|
||||||
}
|
}
|
||||||
err("waiting for '%s' failed", filename);
|
err("waiting for '%s' failed", filename);
|
||||||
@ -781,6 +781,8 @@ static int match_rule(struct udevice *udev, struct udev_rule *rule)
|
|||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
value = sysfs_attr_get_value(udev->dev_parent->devpath, key_name);
|
value = sysfs_attr_get_value(udev->dev_parent->devpath, key_name);
|
||||||
|
if (value == NULL)
|
||||||
|
value = sysfs_attr_get_value(udev->dev->devpath, key_name);
|
||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
goto try_parent;
|
goto try_parent;
|
||||||
strlcpy(val, value, sizeof(val));
|
strlcpy(val, value, sizeof(val));
|
||||||
|
Loading…
Reference in New Issue
Block a user