I found out that the recently added read-timeout doesn’t work good at all…

A timeout of 1 second in ow_server.c is too low… Don’t know exactly why, but I end up with EIO errors when reading temperatures very often.

 

Host1:            owserver –d /dev/tty/1 (Slow Linksys router with 1-wire adapter connected.)

                      owfs (connecting to host1)

                      temploggerd (frequently writing 1 to /simultaneous/temperature and reading temperatures and full scandir() in /uncached)

 

Host2:

                      owfs (connecting to host1)

                      temploggerd (frequently writing 1 to /simultaneous/temperature and reading temperatures and full scandir() in /uncached)

 

 

Host3:            owfs

                      cat /mnt/1wire/uncached/10.*/temperatures   (fails _very_ often with EIO errors)

 

 

A command like “ls –l /1wire/uncached/” takes some time to execute, and that blocks the owserver for some time.

If somebody else try to do a full scandir or using the 1-wire devices, the 1-second timeout is exceeded very easy.

 

When I raised it to 10 seconds, it was 100% stable again. But is this enough for all situations? What happens if you have 1000 1-wire devices and 2 hosts try to do a full scandir() ?

 

 

I think it’s important to protect the connect() in ow_net.c:ClientConnect() too… connect() could hang for minutes if you don’t get any packets back from the server.

 

 

Any ideas?

 

/Christian

 

Reply via email to