Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Aug 2005 21:41:30 +0300
From:      victor cruceru <victor.cruceru@gmail.com>
To:        ticso@cicely.de
Cc:        Marc Olzheim <marcolz@stack.nl>, freebsd-hackers@freebsd.org
Subject:   Re: O_NONBLOCK for devices with removable media
Message-ID:  <4940255050801114161c1cea3@mail.gmail.com>
In-Reply-To: <20050801173047.GC26656@cicely12.cicely.de>
References:  <494025505080104427c3f91f6@mail.gmail.com> <20050801130502.GA39470@stack.nl> <494025505080106336a329bb@mail.gmail.com> <20050801173047.GC26656@cicely12.cicely.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Well, if you are doing this from a daemon (multiplexing a lot of events)=20
which is blocked in this open syscall, even 1 second is not reasonable. In=
=20
my case it is something more than 30 of seconds (again, on a 5.4 box). I'll=
=20
give it a try on FreeBSD 6. I'm currently investigating if there is=20
something like TEST_UNIT_READY (for both ATAPI and SCSI) which can be issue=
d=20
on a control device (i.e. /dev/ata)
BR,=20
Victor Cruceru

On 8/1/05, Bernd Walter <ticso@cicely12.cicely.de> wrote:
>=20
> On Mon, Aug 01, 2005 at 04:33:23PM +0300, victor cruceru wrote:
> > Hi Marc,
> > Thanks for the info. Here it is one my situation. I have a CF reader=20
> (fully
> > detected by the USB subsystem) with two slots
> > (one with a media and one without any media). An open with O_NONBLOCK o=
n=20
> the
> > empty slot (/dev/da1) is blocking me.
>=20
> It should not block for a long time since the device should directly
> reply with either ready or no media.
>=20
> > Is this OK?
>=20
> No, but it is a broken device if you don't get back in a resonable
> time.
> I don't think that O_NONBLOCK is ment to never block for a short time.
> In case of disks you have to ask the device for ready state, if you
> don't allow blocking you can't do that and therefor never successfull
> open a disk.
> The intention should read more in the sense of, don't wait for a disk
> to spin up, but even this is problematic to implement correct with many
> devices.
>=20
> > On 8/1/05, Marc Olzheim <marcolz@stack.nl> wrote:
> > >
> > > On Mon, Aug 01, 2005 at 02:42:21PM +0300, victor cruceru wrote:
> > > > Hi all,
> > > > I'm just wondering if it's OK for an open syscall on such a device =
(
> i.e.
> > > > /dev/acd0 or /dev/da1 with a CF reader attached) to block till the=
=20
> media
> > > is
> > > > ready or a timeout occurs.
> > >
> > > I'd say that depends completely on whether you supply O_NONBLOCK or=
=20
> not,
> > > so yes.
> > >
> > > Quoted from a sound driver discussion at:
> > > http://sourceforge.net/mailarchive/message.php?msg_id=3D10011826
> > >
> > >
> > > On block devices, O_NONBLOCK also is a way to say "don't try to do an=
y
> > > device discovery", ie you can do a O_NONBLOCK open on a removable dis=
k
> > > that doesn"t even have any media in it. Again, this has _nothing_ to=
=20
> do
> > > with whether the device is "busy" or not.
> > >
> > > ...
> > >
> > > Short summary:
> > >
> > > - O_NONBLOCK should generally be seen as just setting the O_NONBLOCK=
=20
> flag
> > > "early" (ie it"s conceptually equivalent to doing a "F_SETFL" fcntl
> > > before the open. It _may_ affect the open itself, but when it does, i=
t
> > > is generally considered to mean that you can open something that isn'=
t
> > > even _reachable_.
> > >
> > > - POSIX doesn't say anything much about its behaviour, except for=20
> named
> > > pipes, where it says the total reverse of what ALSA does. But that
> > > doesn't actually mean anything, because even that is very much define=
d
> > > as a special case by POSIX.
>=20
> --
> B.Walter BWCT http://www.bwct.de
> bernd@bwct.de info@bwct.de
>=20
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4940255050801114161c1cea3>