Linux - SoftwareThis forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
A couple of years ago I wrote a small utility (in C) to read CDs and DVDs, and index their contents. It just mounts the disk, reads the filenames, and ejects the disk.
With a recent update of the OS, I increasingly experience problems. The program irregularly couldn't mount the disk, or ejected it too soon. According to what I read in several threads, the problem is probably
with udev, which seems to automount (and then unmount) the drive.
The problem also exists if just running 'mount /mnt/dvd' if the disk has just been inserted. If I wait a considerable time, the mount command does work. I suspect one of the problems is that udev only assigns device names after the disk has been detected?
Finally the Question:
What is the correct way to mount/unmount a (removable) disk by software?
- Do I have to retry till mount works correctly?
- Do I need to talk to udev/hal directly?
- any other solution/pointer/suggestion?
I'm running Slackware64 13.1, kernel is updated to 2.6.36.1.
I suspect one of the problems is that udev only assigns device names after the disk has been detected?
In the distros I've used which use udev, that's the default behavior. You may, if you choose to do so, write a custom udev rule to change that behavior. Do some research on writing udev rules via www.google.com/linux.
Quote:
What is the correct way to mount/unmount a (removable) disk by software?
- Do I have to retry till mount works correctly?
- Do I need to talk to udev/hal directly?
- any other solution/pointer/suggestion?
First, you have to distinguish between data disk and non-data disk (such as music, video, etc). You can mount a data disk to read files, but a non-data disk may be accessed as soon as udev creates the mount point in /media or /mnt (non-data disks are not mounted).
To eject a non-data disk, simply use the eject command from the command line.
To eject a data disk, you must first unmount the device or the mount point (umount /dev/hdc or umount /mnt/cdrom for example) before you can eject the disk.
Quote:
I suspect one of the problems is that udev only assigns device names after the disk has been detected?
In the distros I've used which use udev, that's the default behavior. You may, if you choose to do so, write a custom udev rule to change that behavior. Do some research on writing udev rules via www.google.com/linux.
Hi bigrigdriver
There are strange things though: With a data disk in the drive:
- I (previously) set fstab to noauto, so it should not mount automatically.
- Still, udev does something with the drive this makes a too-fast mount command fail with 'no media'
till after about 30 seconds, when it mounts correctly.
- If I remove the mount point (/mnt/dvd), mount complains with 'No mount point' - it doesn't generate
a mount point automatically.
- Even though /media has /dvd, /dvd0, /dvd1 the dvd is not mounted under any of those either, and those
points are not generated dynamically either.
First, you have to distinguish between data disk and non-data disk (such as music, video, etc). You can mount a data disk to read files, but a non-data disk may be accessed as soon as udev creates the mount point in /media or /mnt (non-data disks are not mounted).
Pure data...
Quote:
To eject a non-data disk, simply use the eject command from the command line.
To eject a data disk, you must first unmount the device or the mount point (umount /dev/hdc or umount /mnt/cdrom for example) before you can eject the disk.
I believe the eject command automatically issues an umount too, so that wouldn't be necessary.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.