Re: cd-tray immediately closed after it has been opened

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Kay,

Kay Sievers wrote:
On Mon, Jul 28, 2008 at 10:48, Christian Krause <chkr@xxxxxxxxxxx> wrote:
David Zeuthen wrote:
On Sun, 2008-07-27 at 21:19 +0200, Christian Krause wrote:

Before this checkin, vol_id was only called for partitioned devices and
so the CD tray stayed open.

Probably vol_id needs to use O_NONBLOCK when opening sr devices. Does
that fix it?

Yes, indeed using a patch like this:

diff --git a/extras/volume_id/vol_id.c b/extras/volume_id/vol_id.c
index 5c4e05d..3dc9f95 100644
--- a/extras/volume_id/vol_id.c
+++ b/extras/volume_id/vol_id.c
@@ -224,7 +224,7 @@ int main(int argc, char *argv[])
              goto exit;
      }

-       fd = open(node, O_RDONLY);
+       fd = open(node, O_RDONLY | O_NONBLOCK);
      if (fd < 0) {
              fprintf(stderr, "%s: error opening volume\n", node);
              rc = 2;

fixes the problem, too. But it looks like that this is discouraged:

http://gitweb.freedesktop.org/?p=hal.git;a=commit;h=2dab6d1b27a160895e99f3a7111a78aff68baff3

Just to check if its the kernel that closes the tray on open(), can you set:
  /proc/sys/dev/cdrom/autoclose
to "0" and try again?
I've tried it out with a small test program which just does an open("/dev/sr0", O_RDONLY)
and additionally with the complete udev/hal/... stack:

If autoclose = 0 then the tray is not closed otherwise it is (without O_NONBLOCK). If O_NONBLOCK is used, the tray is not closed, even if autoclose = 0. So yes, it is the kernel which closes the tray.


Best regards,
Christian
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Linux DVB]     [Asterisk Internet PBX]     [DCCP]     [Netdev]     [X.org]     [Util Linux NG]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux