The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Maxim Levitsky <maximlevitsky@gmail.com>
To: Florian Mickler <florian@mickler.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>, Tejun Heo <tj@kernel.org>,
	Henrique de Moraes Holschuh <hmh@hmh.eng.br>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Jens Axboe <axboe@kernel.dk>
Subject: Re: [REGRESSION] cdrom drive doesn't detect removal
Date: Thu, 30 Sep 2010 16:17:32 +0200	[thread overview]
Message-ID: <1285856252.26846.12.camel@maxim-laptop> (raw)
In-Reply-To: <20100930133823.39353d23@schatten.dmk.lab>

On Thu, 2010-09-30 at 13:38 +0200, Florian Mickler wrote:
> On Thu, 30 Sep 2010 09:48:50 +0200
> Kay Sievers <kay.sievers@vrfy.org> wrote:
> > >
> > > So, is the $subject problem solved now? Normally, we shouldn't break
> > > stuff with new kernels... If this is only a temporary breakage on
> > > the other hand, we should keep track of it...
> > > I ask, because this is listed as https://bugzilla.kernel.org/show_bug.cgi?id=18522.
> > > If it should stay listed, we may need an ETA for the fix...
> > 
> > Hmm, I still don't think that's a bug or regression.
> > 
> > Optical drives are not supposed to report media changes without
> > constantly being polled. Why Tejun's seems to have an influence in
> > Maxim's setup, is likely more a timing-related issue, or some other
> > thing, we never really got an idea why it could change anything.
> > 
> > The current behavior is the expected and correct behavior, and for me
> > also the older kernels behave like this.
> > 
> > Kay
> 
> So I'm gonna close this as invalid then. Please shout, if that's
> not ok.
Its not invalid at all.

Let me explain again the problem:

Indeed cdrom drivers need to be polled.
And yes, both udisks and hal _do_ poll the drive.

However, udisks uses O_EXCL, when it opens the drive, and that fails s
soon as filesystem is mounted, therefore effectively, as soon as disk is
inserted, polling stops.

Without the bisected commit, O_EXCL would still fail, however due to the
bug that commit fixed, the drive will still be polled.

Hal also polls the drive, but it has a workaround, that is if open with
O_EXCL fails, it retries the open without it.

This is pretty much all, there are no unknowns left.


However the reason behind O_EXCL is that we don't want polling while a
disk is being written (burned), but we do want polling while disk is
mounted.

So just 'fixing' udisk to not take O_EXCL will bring us to square one,
as well as reverting the commit.

Therefore this problem doesn't have a simple solution.
I think that the best solution is to move polling to the kernel, and
introduce a way for burning application to take absolute exclusive
access to the device and as a part of that disable that in-kernel
polling.
A new ioctl will suffice, or the meaning of O_EXCL can be changed for
cdrom driver only (if somebody has it open with O_EXCL, fail all opens,
including the ones that don't have O_EXCL).


Best regards,
	Maxim Levitsky


  reply	other threads:[~2010-09-30 14:17 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-12  9:49 [REGRESSION] cdrom drive doesn't detect removal Maxim Levitsky
2010-09-14  1:27 ` Maxim Levitsky
2010-09-14  7:39   ` Tejun Heo
2010-09-14  8:07     ` Kay Sievers
2010-09-14 23:38       ` Maxim Levitsky
2010-09-14 23:49         ` Kay Sievers
2010-09-15  0:37           ` Maxim Levitsky
2010-09-15  1:01             ` Kay Sievers
2010-09-15 13:27               ` Henrique de Moraes Holschuh
2010-09-15 13:44                 ` Kay Sievers
2010-09-15 22:20                   ` Maxim Levitsky
2010-09-16  6:51                     ` Kay Sievers
2010-09-21 11:42                       ` Maxim Levitsky
2010-09-21 23:09                         ` Maxim Levitsky
2010-09-22  7:38                           ` Tejun Heo
2010-09-22 13:41                             ` Maxim Levitsky
2010-09-22 13:58                               ` Maxim Levitsky
2010-09-23  8:47                                 ` Tejun Heo
2010-09-23  9:21                                   ` Kay Sievers
2010-09-30  6:30                                     ` Florian Mickler
2010-09-30  7:48                                       ` Kay Sievers
2010-09-30 11:38                                         ` Florian Mickler
2010-09-30 14:17                                           ` Maxim Levitsky [this message]
2010-09-30 14:49                                             ` Florian Mickler
2010-09-30 19:27                                               ` Kay Sievers
2010-09-30 20:14                                                 ` Florian Mickler
2010-09-30 20:32                                                   ` Kay Sievers
2010-09-30 20:47                                                     ` Florian Mickler
2010-09-30 20:57                                                       ` Kay Sievers
2010-10-01  5:55                                               ` Tejun Heo
2010-10-01  7:54                                                 ` Florian Mickler

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=1285856252.26846.12.camel@maxim-laptop \
    --to=maximlevitsky@gmail.com \
    --cc=axboe@kernel.dk \
    --cc=florian@mickler.org \
    --cc=hmh@hmh.eng.br \
    --cc=kay.sievers@vrfy.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox