Re: [PATCH 5/7] hfsplus: stop using ioctl_by_bdev

From: Christoph Hellwig
Date: Mon May 04 2020 - 12:21:20 EST


On Mon, May 04, 2020 at 10:16:40AM -0600, Jens Axboe wrote:
> On 4/25/20 1:57 AM, Christoph Hellwig wrote:
> > if (HFSPLUS_SB(sb)->session >= 0) {
> > + struct cdrom_tocentry te;
> > +
> > + if (!cdi)
> > + return -EINVAL;
> > +
> > te.cdte_track = HFSPLUS_SB(sb)->session;
> > te.cdte_format = CDROM_LBA;
> > - res = ioctl_by_bdev(sb->s_bdev,
> > - CDROMREADTOCENTRY, (unsigned long)&te);
> > - if (!res && (te.cdte_ctrl & CDROM_DATA_TRACK) == 4) {
> > - *start = (sector_t)te.cdte_addr.lba << 2;
> > - return 0;
> > + if (cdrom_read_tocentry(cdi, &te) ||
> > + (te.cdte_ctrl & CDROM_DATA_TRACK) != 4) {
> > + pr_err("invalid session number or type of track\n");
> > + return -EINVAL;
> > }
>
> I must be missing something obvious from just looking over the patches,
> but how does this work if cdrom is modular and hfsplus is builtin?

In that case disk_to_cdi will return NULL as it uses IS_REACHABLE
and the file systems won't query the CD-ROM specific information.