diff mbox series

scsi: sr: Fix some cdroms automatically ejected when booting into the system

Message ID 20220427090906.2257940-1-jinxiaobo@uniontech.com
State New
Headers show
Series scsi: sr: Fix some cdroms automatically ejected when booting into the system | expand

Commit Message

job jin April 27, 2022, 9:09 a.m. UTC
sr_get_events() has been called before udev starts when SCSI CDROM is
built-in and AHCI SATA is bulit-in,so sr events propagated to 
user space are not handled.
if both is loadable, udev will handle sr events, some cdroms may eject.
We need call sr_get_events() once before device_add_disk() 
to keep the same result, whether both are built-in or loadable.

Signed-off-by: jinxiaobo <jinxiaobo@uniontech.com>
---
 drivers/scsi/sr.c | 1 +
 1 file changed, 1 insertion(+)

Comments

job jin May 5, 2022, 3:01 a.m. UTC | #1
Hi Martin K. Petersen!

As things stand, we cannot guarantee that all events will be propagated
 to udev. So I think, we don't need to ensure that all events are received
 by udev, we only need to ensure that events after sr probe can be received
 by udev and actively discard events before sr probe.



>
>
> Hi jinxiaobo!
>
> > sr_get_events() has been called before udev starts when SCSI CDROM is
> > built-in and AHCI SATA is bulit-in,so sr events propagated to user
> > space are not handled.  if both is loadable, udev will handle sr
> > events, some cdroms may eject.  We need call sr_get_events() once
> > before device_add_disk() to keep the same result, whether both are
> > built-in or loadable.
>
> I am not sure how calling sr_get_events() and throwing away the result
> ensures that events get propagated to udev. Isn't this just changing
> timing slightly?
>
> --
> Martin K. Petersen      Oracle Linux Engineering
>
diff mbox series

Patch

diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index cbd92891a762..043b3ab72d7a 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -676,6 +676,7 @@  static int sr_probe(struct device *dev)
 	set_capacity(disk, cd->capacity);
 	disk->private_data = cd;
 
+	sr_get_events(sdev);
 	if (register_cdrom(disk, &cd->cdi))
 		goto fail_minor;