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

jinxiaobo posted 1 patch 4 years ago
drivers/scsi/sr.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] scsi: sr: Fix some cdroms automatically ejected when booting into the system
Posted by jinxiaobo 4 years ago
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(+)

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;
 
-- 
2.20.1
Re: [PATCH] scsi: sr: Fix some cdroms automatically ejected when booting into the system
Posted by Martin K. Petersen 4 years ago
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
Re: [PATCH] scsi: sr: Fix some cdroms automatically ejected when booting into the system
Posted by job jin 4 years ago
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
>