The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Maxim Levitsky <maximlevitsky@gmail.com>
To: Tejun Heo <tj@kernel.org>
Cc: Kay Sievers <kay.sievers@vrfy.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: Wed, 22 Sep 2010 15:58:31 +0200	[thread overview]
Message-ID: <1285163911.3159.5.camel@maxim-laptop> (raw)
In-Reply-To: <1285162900.3335.15.camel@maxim-laptop>

On Wed, 2010-09-22 at 15:41 +0200, Maxim Levitsky wrote: 
> On Wed, 2010-09-22 at 09:38 +0200, Tejun Heo wrote: 
> > Hello,
> > 
> > On 09/22/2010 01:09 AM, Maxim Levitsky wrote:
> > > I just did a strace on udisks, and it is pretty much self explanatory.
> > > (While CD is mounted).
> > > 
> > > open("/dev/sr0", O_RDONLY|O_EXCL|O_NONBLOCK) = -1 EBUSY (Device or resource busy)
> > > poll([{fd=5, events=POLLIN}, {fd=3, events=POLLIN}], 2, 1997) = 0 (Timeout)
> > > open("/dev/sr0", O_RDONLY|O_EXCL|O_NONBLOCK) = -1 EBUSY (Device or resource busy)
> > > poll([{fd=5, events=POLLIN}, {fd=3, events=POLLIN}], 2, 1997) = 0 (Timeout)
> > > open("/dev/sr0", O_RDONLY|O_EXCL|O_NONBLOCK) = -1 EBUSY (Device or resource busy)
> > > poll([{fd=5, events=POLLIN}, {fd=3, events=POLLIN}], 2, 1997) = 0 (Timeout)
> > > open("/dev/sr0", O_RDONLY|O_EXCL|O_NONBLOCK) = -1 EBUSY (Device or resource busy)
> > > 
> > > Sure, a filesystem is mounted, so exclusive access fails...
> > > 
> > > So, we end up with impossible to solve problem.  We want on one hand
> > > to guard the burner against polling programs that disturb it, but
> > > one the other hand we must do polling to check CD status.
> > >
> > > Unless the kernel does the polling, but then we also must stop it
> > > when burning is done.  I think that we need new ioctl in the CD
> > > driver that would give absolute access to the burning application,
> > > and lock it fully.
> > 
> > One thing I don't get is why the behavior changed after the claiming
> > block patch.  Can you please trace udisks from a previous working
> > kernel?
> 
> It shows pretty much same output.
> The difference here is, even though open fails, it still has a side
> effect of polling the driver, a bug that bisected commit fixed.
> 
> So problem is clear, but how to fix it, I don't know...
> 
> Also about the exclusive mode, how exactly is it defined?
> open manpage is somewhat sparse about it.
> 
> Regardless of the above a complete solution is:
> 
> 1. Make exclusive opens really exclusive.
> That is if someone opens a device with exclusive access, no more opens
> will succeed.
And as a follow-up, indeed hal first tries exclusive open, and if it
fails, it retries with non-exclusive open, and it succeeds.
And that somewhat makes me think that exclusive open is pretty much
useless.
Look if it fails. sure the device is open, but if doesn't fail, nothing
prevents a bit less honest clients (that don't use exclusive open) to
open the device. How exclusive such an open is then?

So I mean exclusive open should really block _all_ following opens of
the device, exclusive or not.
Btw I had few failed dual layer disk burns that failed just after write
of few MBs. I wouldn't be surprised if this was the cause.


> 
> 2. Add in-kernel polling, and stop it as as soon as an exclusive open is
> done.
> 
> 3. Make sure that userspace doesn't touch the cdrom device anymore.
> Few patches to udisks and hal will do.
> 

Best regards,
	Maxim Levitsky



  reply	other threads:[~2010-09-22 14:08 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 [this message]
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
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=1285163911.3159.5.camel@maxim-laptop \
    --to=maximlevitsky@gmail.com \
    --cc=axboe@kernel.dk \
    --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