mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-07 13:43:51 +00:00
cdrom: track if a cdrom_device_info was opened for data
Set a flag when a cdrom_device_info is opened for writing, instead of trying to figure out this at release time. This will allow to eventually remove the mode argument to the ->release block_device_operation as nothing but the CDROM drivers uses that argument. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Phillip Potter <phil@philpotter.co.uk> Acked-by: Christian Brauner <brauner@kernel.org> Reviewed-by: Hannes Reinecke <hare@suse.de> Link: https://lore.kernel.org/r/20230608110258.189493-6-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
a4cec8bc14
commit
8cdf433e2b
@ -1172,6 +1172,7 @@ int cdrom_open(struct cdrom_device_info *cdi, fmode_t mode)
|
||||
ret = 0;
|
||||
cdi->media_written = 0;
|
||||
}
|
||||
cdi->opened_for_data = true;
|
||||
}
|
||||
|
||||
if (ret)
|
||||
@ -1252,7 +1253,6 @@ static int check_for_audio_disc(struct cdrom_device_info *cdi,
|
||||
void cdrom_release(struct cdrom_device_info *cdi, fmode_t mode)
|
||||
{
|
||||
const struct cdrom_device_ops *cdo = cdi->ops;
|
||||
int opened_for_data;
|
||||
|
||||
cd_dbg(CD_CLOSE, "entering cdrom_release\n");
|
||||
|
||||
@ -1270,14 +1270,12 @@ void cdrom_release(struct cdrom_device_info *cdi, fmode_t mode)
|
||||
}
|
||||
}
|
||||
|
||||
opened_for_data = !(cdi->options & CDO_USE_FFLAGS) ||
|
||||
!(mode & FMODE_NDELAY);
|
||||
|
||||
cdo->release(cdi);
|
||||
if (cdi->use_count == 0) { /* last process that closes dev*/
|
||||
if (opened_for_data &&
|
||||
cdi->options & CDO_AUTO_EJECT && CDROM_CAN(CDC_OPEN_TRAY))
|
||||
|
||||
if (cdi->use_count == 0 && cdi->opened_for_data) {
|
||||
if (cdi->options & CDO_AUTO_EJECT && CDROM_CAN(CDC_OPEN_TRAY))
|
||||
cdo->tray_move(cdi, 1);
|
||||
cdi->opened_for_data = false;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(cdrom_release);
|
||||
|
@ -63,6 +63,7 @@ struct cdrom_device_info {
|
||||
unsigned short mmc3_profile; /* current MMC3 profile */
|
||||
int (*exit)(struct cdrom_device_info *);
|
||||
int mrw_mode_page;
|
||||
bool opened_for_data;
|
||||
__s64 last_media_change_ms;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user