On Fri, May 26, 2017 at 03:50:42PM +0000, Bart Van Assche wrote: > On Fri, 2017-05-26 at 08:08 +0200, Christoph Hellwig wrote: > > On Thu, May 25, 2017 at 11:43:13AM -0700, Bart Van Assche wrote: > > > Since the cdrom driver only supports request queues for which > > > struct scsi_request is the first member of their private request > > > data, refuse to register block layer queues for which this is > > > not the case. > > > > Hmm. I think we have a deeper issue there. The cdrom layer usually > > sends packets commands through the cdrom ops ->generic_packet > > method, but one function (cdrom_read_cdda_bpc) seems to directly > > send a scsi passthrough request. It is only used if the cdda_method > > is not CDDA_OLD, which is set if the cdrom_device_info structure > > does not have a gendisk pointer hanging off it. It seems like > > the legacy cdrom drivers fall into that category and would be > > broken by this change. > > Hello Christoph, > > How about moving the check into cdrom_read_cdda_bpc()? As far as I can see > that function is only called if a CDROMREADAUDIO ioctl is submitted. Although > Documentation/cdrom/cdrom-standard.tex mentions that that ioctl is unsupported > applications like cdparanoia use it. I guess that's fine for now. In the long run we can probably replace the current users of generic_packet method with direct scsi passthrough requests, but that can be left for later.