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 |
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 --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;
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(+)