Lines 246-256
acd_geom_ioctl(struct g_provider *pp, u_
Link Here
|
246 |
break; |
246 |
break; |
247 |
|
247 |
|
248 |
case CDIOCALLOW: |
248 |
case CDIOCALLOW: |
|
|
249 |
if (cdp->gnp != 1 || pp->acr != 1) { |
250 |
error = EBUSY; |
251 |
break; |
252 |
} |
249 |
error = acd_prevent_allow(dev, 0); |
253 |
error = acd_prevent_allow(dev, 0); |
250 |
cdp->flags &= ~F_LOCKED; |
254 |
cdp->flags &= ~F_LOCKED; |
251 |
break; |
255 |
break; |
252 |
|
256 |
|
253 |
case CDIOCPREVENT: |
257 |
case CDIOCPREVENT: |
|
|
258 |
if (cdp->gnp != 1 || pp->acr != 1) { |
259 |
error = EBUSY; |
260 |
break; |
261 |
} |
254 |
error = acd_prevent_allow(dev, 1); |
262 |
error = acd_prevent_allow(dev, 1); |
255 |
cdp->flags |= F_LOCKED; |
263 |
cdp->flags |= F_LOCKED; |
256 |
break; |
264 |
break; |
Lines 266-272
acd_geom_ioctl(struct g_provider *pp, u_
Link Here
|
266 |
break; |
274 |
break; |
267 |
|
275 |
|
268 |
case CDIOCEJECT: |
276 |
case CDIOCEJECT: |
269 |
if (pp->acr != 1) { |
277 |
if (cdp->gnp != 1 || pp->acr != 1) { |
270 |
error = EBUSY; |
278 |
error = EBUSY; |
271 |
break; |
279 |
break; |
272 |
} |
280 |
} |
Lines 274-280
acd_geom_ioctl(struct g_provider *pp, u_
Link Here
|
274 |
break; |
282 |
break; |
275 |
|
283 |
|
276 |
case CDIOCCLOSE: |
284 |
case CDIOCCLOSE: |
277 |
if (pp->acr != 1) |
285 |
if (cdp->gnp != 1 || pp->acr != 1) |
278 |
break; |
286 |
break; |
279 |
error = acd_tray(dev, 1); |
287 |
error = acd_tray(dev, 1); |
280 |
break; |
288 |
break; |
Lines 713-724
acd_geom_access(struct g_provider *pp, i
Link Here
|
713 |
ata_free_request(request); |
721 |
ata_free_request(request); |
714 |
|
722 |
|
715 |
if (pp->acr == 0) { |
723 |
if (pp->acr == 0) { |
|
|
724 |
cdp->gnp++; |
716 |
acd_prevent_allow(dev, 1); |
725 |
acd_prevent_allow(dev, 1); |
717 |
cdp->flags |= F_LOCKED; |
726 |
cdp->flags |= F_LOCKED; |
718 |
acd_read_toc(dev); |
727 |
acd_read_toc(dev); |
719 |
} |
728 |
} |
720 |
|
729 |
|
721 |
if (dr + pp->acr == 0) { |
730 |
if (dr + pp->acr == 0) |
|
|
731 |
cdp->gnp--; |
732 |
|
733 |
if (cdp->gnp == 0) { |
722 |
acd_prevent_allow(dev, 0); |
734 |
acd_prevent_allow(dev, 0); |
723 |
cdp->flags &= ~F_LOCKED; |
735 |
cdp->flags &= ~F_LOCKED; |
724 |
} |
736 |
} |