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