Quoting Thomas Schmitt (scdbac...@gmx.net): > [I wrote:] > > $ mount /media/cdrom0 > > mount: block device /dev/sr0 is write-protected, mounting read-only > > mount: /dev/sr0 already mounted or /media/cdrom0 busy > > $ mount /media/cdrom0 > > mount: block device /dev/sr0 is write-protected, mounting read-only > > It looks like some process is opening /dev/sr0 (the link target > of /dev/cdrom0) with flag O_EXCL for a short time. > > I can provoke the message by running in one terminal > > cdrskin dev=/dev/sr0 grab_drive_and_wait=60 > > and then trying to mount /dev/sr0 in another terminal. > After the cdrskin run has ended, the next mount attempt > succeeds. > > > I can live with this, but I'm curious to know why. > > btrace(8) might tell something. As superuser in a terminal > > btrace /dev/sr0 2>&1 | tee -i /tmp/btrace.log > > The names of acting processes are told in []-brackets. > E.g. > 11,0 1 16 23.917345909 13645 Q R 4096 + 8 [systemd-udevd] > 11,0 4 11 106.816656855 13652 G N [cdrskin] > > When the interesting event has happened, end the btrace run > by Ctrl+C and read file /tmp/btrace.log from its end. > The numbers "23.917345909" and "106.816656855" are seconds > since btrace start. So you can easily judge which lines > are too old to be related to your invisible drive groper.
Hi, I forgot about this thread and was reminded by your recent post concerning btrace. Thanks for the command. I ran btrace /dev/sr0 2>&1 | tee -i /tmp/btrace.log and then inserted a CD and tried to mount it. To reduce the amount of output I then pressed ^C after about 2 seconds. There are 113 lines of output. A list of unique process names extracted (in alphabetical order) from the brackets is: [0] [2] [ata_id] [cdrom_id] [kworker/0:2] [kworker/1:1] [mount] I then repeated this, but tried the mount command twice, which works of course on the second time. Now I got 652 lines of output and the new list of process names is: [0] [2] [ata_id] [blkid] [cdrom_id] [kworker/0:2] [kworker/1:1] [mount] [(null)] [udisks-part-id] (Note that the null ones all came within the first 54 lines.) I thought for a while, and then remembered that if you look at /dev/disk/by-label you can see a CD before it's ever mounted. So I tried repeating the experiment without trying to mount the CD. The first time, I gave up waiting on btrace before anything appeared in /dev/disk the first time (half a minute or more). So I had another go, and this time btrace spat out 368 lines almost immediately; the CD label appeared too. A third try, was like the first: no lines output and no appearance in /dev/disk/by-label (several minutes). So here's my guess: as soon as I try to mount the CD, a process not under my control pops up (probably it's [cdrom_id]) and fills in /dev/disk/by-label. However, it can't be bothered to do that until I try to mount the CD. (Perhaps it actually did when btrace gave 368 lines.) So my new question is: why doesn't the process that fills /dev/disk/by-label run when I insert the CD, but waits instead for me to try to access it? Cheers, David.