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 <msucha...@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;
        }
-- 
2.13.6

Reply via email to