Why upstream udisks authors refuse integrating theses important patches?
Without them, udisks never works with some devices.
When you open a decice with O_EXECL and it's mounted, you'll get EBUSY error.
So when we get EBUSY, we check if it's mounted. If it is, we open it without
O_EXECL.
Otherwise, that means other programs, such as cd burner, are using the device
and we shouldn't touch it.
That's basically why is_mounted() is called here.
Personally, I think the correct way to integrate these two patches is
like this:
In the original patch, you can find this:
} else if (errno == EBUSY && device->is_ide_cdrom) {
// TODO: check if media is mounted
// in that case mounting with O_EXCL should be safe
fd = open (device->dev_path, O_RDONLY | O_NONBLOCK);
if (fd != -1) {
poller_check_ide_cdrom (fd, device);
close (fd);
}
}
change it to:
} else if (errno == EBUSY) { // no need to check for
ide_cd here
+ /* From hal/hald/linux/addons/addon-storage.c: */
+ /* this means the disc is mounted or some other app,
+ * like a cd burner, has already opened O_EXCL */
+
+ /* HOWEVER, when starting hald, a disc may be
+ * mounted; so check /etc/mtab to see if it
+ * actually is mounted. If it is we retry to open
+ * without O_EXCL
+ */
+ if (is_mounted (device->dev_path))
+ {
+ fd = open (device->dev_path, O_RDONLY | O_NONBLOCK);
+ }
if (fd != -1 && device->is_ide_cdrom) {
// only IDE cd needs this.
poller_check_ide_cdrom (fd, device);
close (fd);
}
}
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/711549
Title:
pressing physical eject button on CD/DVD drive causes icon to remain
on desktop after eject
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs