mirror of
https://github.com/systemd/systemd.git
synced 2026-07-24 16:25:52 +00:00
udevsettle: read udev not kernel seqnum first
This commit is contained in:
committed by
Kay Sievers
parent
d2c9a56e0e
commit
4e2b290821
28
udevsettle.c
28
udevsettle.c
@@ -110,20 +110,6 @@ int main(int argc, char *argv[], char *envp[])
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* read current kernel seqnum */
|
||||
strlcpy(filename, sysfs_path, sizeof(filename));
|
||||
strlcat(filename, "/kernel/uevent_seqnum", sizeof(filename));
|
||||
fd = open(filename, O_RDONLY);
|
||||
if (fd < 0)
|
||||
goto exit;
|
||||
len = read(fd, seqnum, sizeof(seqnum)-1);
|
||||
close(fd);
|
||||
if (len <= 0)
|
||||
goto exit;
|
||||
seqnum[len] = '\0';
|
||||
seq_kernel = strtoull(seqnum, NULL, 10);
|
||||
info("kernel seqnum = %llu", seq_kernel);
|
||||
|
||||
/* read current udev seqnum */
|
||||
strlcpy(filename, udev_root, sizeof(filename));
|
||||
strlcat(filename, "/" EVENT_SEQNUM, sizeof(filename));
|
||||
@@ -138,6 +124,20 @@ int main(int argc, char *argv[], char *envp[])
|
||||
seq_udev = strtoull(seqnum, NULL, 10);
|
||||
info("udev seqnum = %llu", seq_udev);
|
||||
|
||||
/* read current kernel seqnum */
|
||||
strlcpy(filename, sysfs_path, sizeof(filename));
|
||||
strlcat(filename, "/kernel/uevent_seqnum", sizeof(filename));
|
||||
fd = open(filename, O_RDONLY);
|
||||
if (fd < 0)
|
||||
goto exit;
|
||||
len = read(fd, seqnum, sizeof(seqnum)-1);
|
||||
close(fd);
|
||||
if (len <= 0)
|
||||
goto exit;
|
||||
seqnum[len] = '\0';
|
||||
seq_kernel = strtoull(seqnum, NULL, 10);
|
||||
info("kernel seqnum = %llu", seq_kernel);
|
||||
|
||||
/* make sure all kernel events have arrived in the queue */
|
||||
if (seq_udev >= seq_kernel) {
|
||||
info("queue is empty and no pending events left");
|
||||
|
||||
Reference in New Issue
Block a user