Re: [Rdi1] Re: [PATCH] Add MOUNT_STATUS ioctl to cdrom device

Jens Axboe
2003-08-26T11:36:58Z

On Tue, Aug 26 2003, Samphan Raruenrom wrote:
> >Exactly. You poll media events from the drive, and upon an eject request
> >you try and umount it. If it suceeds, you eject the tray.
>
> No, it seems impossible to sense the eject request (right?). This

No it isn't, in fact there are several ways to do it. Just by searching
this list you should be able to find them.

> is what I really did with the patched kernel and patched magicdev.

magicdev is a piece of crap.

> When, for example:-
>
> - user insert CD
> - magicdev sense the CD, mount /dev/cdrom -> eject is ok
> - user play an mp3 file in the disc
> - magicdev found MOUNT_STATUS=BUSY, lock the drive -> eject disabled
> - user stop using any file on the disc
> - magicdev found MOUNT_STATUS=MOUNTED, unlock the drive -> eject is ok
> - user push the eject button, the disc pop out because it's not locked.
> - magicdev sense empty drive, umount /dev/cdrom

That's not the way to do it. For drives that support media status event
reporting you don't lock the drive, you just intercept the eject
request. And at that time you check if you can umount /cdrom (or
whatever) - if that suceeds, you send an eject request to the drive.
This will work with any drive made in the last few years. You can also
check out MS media status notification, I think you can even find that
document on microsoft.com.

I think you need to spend a little more time thinking/researching this
problem. At least it really looks like you are going about it all wrong.

--
Jens Axboe