[sane-devel] SCSI problems with avision backend
Henning Meier-Geinitz
henning at meier-geinitz.de
Fri Apr 12 17:06:03 BST 2002
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
More information about the sane-devel
mailing list