On Mon, Jun 13, 2016 at 04:45:26PM +0200, Christoph Hellwig wrote: > @@ -107,10 +108,19 @@ struct nvme_ctrl { > u8 event_limit; > u8 vwc; > u32 vs; > + u32 sgls; > bool subsystem; > unsigned long quirks; > struct work_struct scan_work; > struct work_struct async_event_work; > + > + /* Fabrics only */ > + u16 sqsize; > + u32 ioccsz; > + u32 iorcsz; > + u16 icdoff; > + u16 maxcmd; > + struct nvmf_ctrl_options *opts; > }; The pci only stuff goes in 'struct nvme_dev' and embeds 'struct nvme_ctrl', but fabrics gets to use nvme_ctrl directly? If we need transport specifics for anything, like you have during nvme_init_identify, I think we should add function callbacks to nvme_ctrl_ops to set up those specifics, then we don't need 'is_fabrics' checks. -- To unsubscribe from this list: send the line "unsubscribe linux-block" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html