Message ID | 42c05eb47f17a2942cb107b5ddb2a6bd402b76e7.1516985620.git.msuchanek@suse.de (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On Fri, 2018-01-26 at 17:58 +0100, Michal Suchanek wrote: > When the drive closes it can take tens of seconds until the disc is > analyzed. Wait for the drive to become ready or report an error. > > Signed-off-by: Michal Suchanek <msuchanek@suse.de> > --- > drivers/cdrom/cdrom.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c > index 69e85c902373..9994441f5041 100644 > --- a/drivers/cdrom/cdrom.c > +++ b/drivers/cdrom/cdrom.c > @@ -1087,6 +1087,15 @@ int open_for_common(struct cdrom_device_info *cdi, tracktype *tracks) > } > cd_dbg(CD_OPEN, "the tray is now closed\n"); > } > + /* the door should be closed now, check for the disc */ > + if (ret == CDS_DRIVE_NOT_READY) { > + int poll_res = poll_event_interruptible( > + CDS_DRIVE_NOT_READY != > + (ret = cdo->drive_status(cdi, CDSL_CURRENT)), > + 500); > + if (poll_res == -ERESTARTSYS) > + return poll_res; > + } > if (ret != CDS_DISC_OK) > return -ENOMEDIUM; > } Same comment here as for a previous patch: although interruptible by a signal, I'm not sure potentially infinite loops inside the kernel are really welcome. Thanks, Bart.
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c index 69e85c902373..9994441f5041 100644 --- a/drivers/cdrom/cdrom.c +++ b/drivers/cdrom/cdrom.c @@ -1087,6 +1087,15 @@ int open_for_common(struct cdrom_device_info *cdi, tracktype *tracks) } cd_dbg(CD_OPEN, "the tray is now closed\n"); } + /* the door should be closed now, check for the disc */ + if (ret == CDS_DRIVE_NOT_READY) { + int poll_res = poll_event_interruptible( + CDS_DRIVE_NOT_READY != + (ret = cdo->drive_status(cdi, CDSL_CURRENT)), + 500); + if (poll_res == -ERESTARTSYS) + return poll_res; + } if (ret != CDS_DISC_OK) return -ENOMEDIUM; }
When the drive closes it can take tens of seconds until the disc is analyzed. Wait for the drive to become ready or report an error. Signed-off-by: Michal Suchanek <msuchanek@suse.de> --- drivers/cdrom/cdrom.c | 9 +++++++++ 1 file changed, 9 insertions(+)