From: Mauro Carvalho Chehab <mchehab@redhat.com>
To: Andreas Oberritter <obi@linuxtv.org>
Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>, HoP <jpetrous@gmail.com>,
Florian Fainelli <f.fainelli@gmail.com>,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC] vtunerc: virtual DVB device - is it ok to NACK driver because of worrying about possible misusage?
Date: Tue, 06 Dec 2011 12:13:04 -0200 [thread overview]
Message-ID: <4EDE22F0.30909@redhat.com> (raw)
In-Reply-To: <4EDE1A06.1060108@linuxtv.org>
On 06-12-2011 11:35, Andreas Oberritter wrote:
> On 06.12.2011 14:10, Mauro Carvalho Chehab wrote:
>> On 06-12-2011 10:01, Andreas Oberritter wrote:
>>> On 06.12.2011 12:18, Mark Brown wrote:
>>>> On Mon, Dec 05, 2011 at 10:20:03PM +0100, Andreas Oberritter wrote:
>>>>> On 05.12.2011 21:55, Alan Cox wrote:
>>>>>> The USB case is quite different because your latency is very tightly
>>>>>> bounded, your dead device state is rigidly defined, and your loss of
>>>>>> device is accurately and immediately signalled.
>>>>
>>>>>> Quite different.
>>>>
>>>>> How can usbip work if networking and usb are so different and what's so
>>>>> different between vtunerc and usbip, that made it possible to put usbip
>>>>> into drivers/staging?
>>>>
>>>> USB-IP is a hack that will only work well on a tightly bounded set of
>>>> networks - if you run it over a lightly loaded local network it can
>>>> work adequately. This starts to break down as you vary the network
>>>> configuration.
>>>
>>> I see. So it has problems that vtunerc doesn't have.
>>
>> The vtunerc has the same issues. High latency (due to high loads, high
>> latency links or whatever) affects it badly, and may cause application
>> breakages if if the device is opened are using O_NONBLOCK mode [1].
>
> O_NONBLOCK doesn't mean that an ioctl must consume zero time. It just
> means that it should return instead of waiting for (more) data to become
> available or writeable.
O_NONBLOCK means (http://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html#tag_16_412):
O_NONBLOCK
When opening a FIFO with O_RDONLY or O_WRONLY set:
If O_NONBLOCK is set, an open() for reading-only shall return without delay. An open() for writing-only shall return an error if no process currently has the file open for reading.
If O_NONBLOCK is clear, an open() for reading-only shall block the calling thread until a thread opens the file for writing. An open() for writing-only shall block the calling thread until a thread opens the file for reading.
When opening a block special or character special file that supports non-blocking opens:
If O_NONBLOCK is set, the open() function shall return without blocking for the device to be ready or available. Subsequent behavior of the device is device-specific.
If O_NONBLOCK is clear, the open() function shall block the calling thread until the device is ready or available before returning.
Otherwise, the behavior of O_NONBLOCK is unspecified.
Basically, syscall should not block waiting for some data to be read (or written).
The ioctl definition defines [EAGAIN] error code, if, for any reason, an
ioctl would block.
Btw, the vtunerc doesn't handle O_NONBLOCK flag. For each DVB ioctl, for example
read_snr[1], it calls wait_event_interruptible()[2], even if the application opens
it with O_NONBLOCK flag. So, it is likely that non-blocking-mode applications
will break.
[1] http://code.google.com/p/vtuner/source/browse/vtunerc_proxyfe.c?repo=linux-driver#75
[2] http://code.google.com/p/vtuner/source/browse/vtunerc_ctrldev.c?repo=linux-driver#420
> Mauro, if the network is broken, any application using the network will
> break. No specially designed protocol will fix that.
A high delay network (even a congested one) is not broken, if it can
still provide the throughput required by the application, and a latency/QoS
that would fit.
> If you want to enforce strict maximum latencies, you can do that in the
> userspace daemon using the vtunerc interface. It has all imaginable
> possibilities to control data flow over the network and to return errors
> to vtunerc.
Yes, you can do anything you want at the userspace daemon, but the
non-userspace daemon aware applications will know nothing about it, and
this is the flaw on this design: Applications can't negotiate what network
parameters are ok or not for its usecase.
> For a DVB API application it doesn't matter whether a tuning
> request fails with EIO because a USB device has been removed, a PCI
> device encountered an I2C error or because the vtuner userspace daemon
> returned an error.
When you go to network, there are several errors that are transitory. For example,
a dropped link may cause the routing protocol (RIP, BGP or whatever) to re-direct
several routes (or, on a LAN, a spanning-tree re-negotiation), causing a temporary
failure to deliver a few packets. All network-based application are written
to consider temporary failures.
This is fundamentally different than an application designed to talk directly with
the hardware, where an error is generally fatal.
>> [1] Btw, if some DVB ioctl currently waits in O_NONBLOCK, this is a POSIX
>> violation that needs to be fixed.
>
> To the best of my knowledge, this doesn't happen.
>
> I think we all realized some days ago that the code is not going to be
> merged upstream anytime in the foreseeable future. You can stop using
> such pointless arguments.
Agreed.
Regards,
Mauro
next prev parent reply other threads:[~2011-12-06 14:13 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-30 21:38 [RFC] vtunerc: virtual DVB device - is it ok to NACK driver because of worrying about possible misusage? HoP
2011-11-30 21:52 ` Michael Krufky
2011-12-01 0:09 ` Andreas Oberritter
2011-12-01 11:04 ` Mauro Carvalho Chehab
2011-12-01 14:58 ` HoP
2011-12-01 17:38 ` Mauro Carvalho Chehab
2011-12-01 19:59 ` HoP
2011-12-01 20:38 ` Mauro Carvalho Chehab
2011-12-01 22:55 ` Andreas Oberritter
2011-12-02 11:14 ` Mauro Carvalho Chehab
2011-12-02 11:40 ` Rémi Denis-Courmont
2011-12-02 11:48 ` Andreas Oberritter
2011-12-02 12:05 ` Rémi Denis-Courmont
2011-12-02 11:57 ` HoP
2011-12-02 17:33 ` Mauro Carvalho Chehab
[not found] ` <3D233F78EE854A4BA3D34C11AD4FAC1FDD141F@nasanexd01b.na.qualcomm.com>
2011-12-05 18:16 ` V4L2 driver node directory structure under /video directory Mauro Carvalho Chehab
2011-12-02 17:49 ` [RFC] vtunerc: virtual DVB device - is it ok to NACK driver because of worrying about possible misusage? Rémi Denis-Courmont
2011-12-02 18:16 ` Andreas Oberritter
2011-12-02 18:28 ` Andreas Oberritter
2011-12-02 23:19 ` Alan Cox
2011-12-03 0:37 ` HoP
2011-12-05 10:21 ` Florian Fainelli
2011-12-05 14:28 ` HoP
2011-12-05 15:16 ` Alan Cox
2011-12-05 15:18 ` Michael Krufky
2011-12-06 0:16 ` HoP
2011-12-05 17:39 ` Mauro Carvalho Chehab
2011-12-05 20:41 ` Andreas Oberritter
2011-12-05 20:55 ` Alan Cox
2011-12-05 21:20 ` Andreas Oberritter
2011-12-05 21:54 ` Alan Cox
2011-12-06 11:18 ` Mark Brown
2011-12-06 12:01 ` Andreas Oberritter
2011-12-06 13:10 ` Mauro Carvalho Chehab
2011-12-06 13:35 ` Andreas Oberritter
2011-12-06 14:13 ` Mauro Carvalho Chehab [this message]
2011-12-06 14:38 ` Andreas Oberritter
2011-12-06 15:06 ` Mauro Carvalho Chehab
2011-12-06 15:36 ` Manu Abraham
2011-12-06 11:21 ` Mark Brown
2011-12-06 12:01 ` Andreas Oberritter
2011-12-06 14:19 ` Mark Brown
2011-12-06 14:48 ` Andreas Oberritter
2011-12-07 13:49 ` Mark Brown
2011-12-07 14:01 ` Andreas Oberritter
2011-12-07 16:10 ` Mark Brown
2011-12-07 16:56 ` Andreas Oberritter
2011-12-07 16:58 ` Andreas Oberritter
2011-12-07 21:48 ` Patrick Dickey
2011-12-07 22:53 ` Honza Petrouš
2011-12-07 23:24 ` Peter Kolta
2011-12-07 23:55 ` Andreas Oberritter
2011-12-11 18:45 ` Peter martin
2011-12-12 10:31 ` Alan Cox
2011-12-06 17:19 ` Manu Abraham
2011-12-06 0:07 ` HoP
2011-12-06 13:22 ` Mauro Carvalho Chehab
2011-12-06 13:49 ` Andreas Oberritter
2011-12-06 14:19 ` Rémi Denis-Courmont
2011-12-06 15:05 ` Andreas Oberritter
2011-12-06 14:20 ` Mauro Carvalho Chehab
2011-12-06 15:00 ` Andreas Oberritter
2011-12-06 17:35 ` HoP
2011-12-03 16:13 ` Andreas Oberritter
2011-12-03 16:42 ` Alan Cox
2011-12-03 17:38 ` Andreas Oberritter
2011-12-03 17:21 ` VDR User
2011-12-03 17:42 ` Alan Cox
2011-12-03 17:48 ` Devin Heitmueller
2011-12-04 23:54 ` HoP
2011-12-03 18:13 ` Hans Petter Selasky
2011-12-05 0:05 ` HoP
2011-12-03 18:17 ` Andreas Oberritter
2011-12-03 23:30 ` Walter Van Eetvelt
2011-12-04 0:14 ` VDR User
2011-12-04 14:44 ` Alan Cox
2011-12-04 23:22 ` HoP
2011-12-05 1:45 ` VDR User
2011-12-05 6:20 ` HoP
2011-12-01 11:50 ` Communication misunderstanding? (was: Re: [RFC] vtunerc: virtual DVB device - is it ok to NACK driver because of worrying about possible misusage?) Patrick Boettcher
2011-12-01 12:33 ` [RFC] vtunerc: virtual DVB device Rémi Denis-Courmont
2011-12-01 14:39 ` HoP
2011-12-02 18:32 ` [RFC] vtunerc: virtual DVB device - is it ok to NACK driver because of worrying about possible misusage? VDR User
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EDE22F0.30909@redhat.com \
--to=mchehab@redhat.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=f.fainelli@gmail.com \
--cc=jpetrous@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=obi@linuxtv.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.