lkml.org 
[lkml]   [2003]   [Dec]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: Can't eject a previously mounted CD?
In your patch here i think the person who made the code originally 
confused or got wrong the conditions of success for opening the cdrom
drive. This is in the same function as the patch applies to.

if ((fp->f_flags & O_NONBLOCK) && (cdi->options &
CDO_USE_FFLAGS))
ret = cdi->ops->open(cdi, 1);

else

ret = open_for_data(cdi);



if (!ret) cdi->use_count++;

Here we see that if the open fails we incriment our use_count. But this
doesn't make sense. We increment the use_count at the beginning of the
function as a "lock" so that we can't do anything while the open
function is executing like rmmod the cdrom (supposedly?). Now removing
the if(!ret) line makes sense. Under the out: label, if the open fails,
then we close our makeshift lock on the device because our function is
done. If it succeeded, then the use_count stays at 1 we go along our
merry way.

> -Walt
>
> --- /usr/src/linux/drivers/cdrom/cdrom.c 2003-12-25 09:53:59.000000000 -0800
> +++ linux-2.6.0-mm1/drivers/cdrom/cdrom.c 2003-12-28 19:42:04.174098225 -0800
> @@ -744,4 +744,7 @@
> }
>
> + if (cdi->use_count > 0)
> + cdi->use_count--;
> +
> /* if this was a O_NONBLOCK open and we should honor the flags,
> * do a quick open without drive/disc integrity checks. */
> @@ -931,5 +934,5 @@
> struct cdrom_device_ops *cdo = cdi->ops;
>
> - cdinfo(CD_CLOSE, "entering cdrom_release\n");
> + cdinfo(CD_CLOSE, "entering cdrom_release\n");
>
> if (cdi->use_count > 0)
>
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:59    [W:0.057 / U:0.288 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site