[devel] баги в tmpfs: hasher ... и ттеперь udev

Anton Farygin =?iso-8859-1?q?rider_=CE=C1_altlinux=2Ecom?=
Вт Май 16 12:23:37 MSD 2006


Привет.

Совсем недавно обсуждалась проблема, которая вылезала при работе 
hasher'а на tmpfs.

Так вот оказывается, что мы её словили на udev-091-alt2.

workaround я нашёл судя по всему, но зато теперь появился testcase, 
который с большой вероятностью позволит воспроизводить эту проблему.

Вот такой код в udevd:
static void export_initial_seqnum(void)
{
         char filename[PATH_SIZE];
         int fd;
         char seqnum[32];
         ssize_t len = 0;

         strlcpy(filename, sysfs_path, sizeof(filename));
         strlcat(filename, "/kernel/uevent_seqnum", sizeof(filename));
         fd = open(filename, O_RDONLY);
         if (fd >= 0) {
                 len = read(fd, seqnum, sizeof(seqnum)-1);
                 close(fd);
         }
         if (len <= 0) {
                 strcpy(seqnum, "0\n");
                 len = 3;
         }
         strlcpy(filename, udev_root, sizeof(filename));
         strlcat(filename, "/" EVENT_SEQNUM, sizeof(filename));
         create_path(filename);
         fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
         if (fd >= 0) {
                 write(fd, seqnum, len);
                 close(fd);
         }
}

приводил к тому, что файл /dev/.udevd/uevent_seqnum на некоторых машинах 
  появлялся с очень большой задержкой (большое 0.5 секунды), что 
естественно приводило к проблемам.

По моему это явно можно интерпретировать как проблему tmpfs.

Конечно надо ещё поэкпериментировать и написать более внятный testcase..

Но всё-таки это уже не hasher ;)

Rgds,
Rider



Подробная информация о списке рассылки Devel