Hi, On Thu, Apr 11, 2002 at 11:58:21PM -0400, Douglas Gilbert wrote: > If you open an sg device with O_EXCL and it is already open > then: > - if O_NONBLOCK is also set then the open() will fail > with EBUSY > - otherwise you will wait (interruptible) until the existing > open()s on that device are close()d.
Ok, that sounds reasonable. I was just a bit surprissed because I thought we gor EBUSY until some time ago. > All scsi bus scans done using sg should use O_NONBLOCK else > they run the risk of hanging on somebody else's O_EXCL lock. So we would change sanei_scsi.c line 1113 fd = open (dev, O_RDWR | O_EXCL); to fd = open (dev, O_RDWR | O_EXCL | O_NONBLOCK); ? Does this work with the other operating systems also. Or to be more exact, O_NONBLOCK compiles everywhere? The man page suggests that it's not Linux-specific. Maybe we should also return SANE_STATUS_DEVICE_BUSY on EBUSY. Bye, Henning
