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 <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;
>       }

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.N�����r��y����b�X��ǧv�^�)޺{.n�+����{�v�"��^n�r���z���h�����&���G���h�(�階�ݢj"���m������z�ޖ���f���h���~�m�

Reply via email to