Date: Fri, 22 Jun 2001 18:39:09 +0100 From: j mckitrick <jcm@FreeBSD-uk.eu.org> To: freebsd-hackers@freebsd.org Subject: how to invalidate scsi connection to driver module Message-ID: <20010622183909.A60256@dogma.freebsd-uk.eu.org>
next in thread | raw e-mail | index | archive | help
Here is the code for a scsi removable media drive. If this is to become a module, the cam/scsi attachment must be removed. I have tried calling cam_sim_free() and xpt_bus_deregister() but when the module is reloaded, the cam system assigns the next higher minor device number, and then crashes when accessed. Any ideas here how to reset cam to a state where it knows nothing about the device? /* ** Now tell the generic SCSI layer ** about our bus. */ devq = cam_simq_alloc(/*maxopenings*/1); /* XXX What about low-level detach on error? */ if (devq == NULL) return (ENXIO); vpo->sim = cam_sim_alloc(vpo_action, vpo_poll, "vpo", vpo, device_get_unit(dev), /*untagged*/1, /*tagged*/0, devq); if (vpo->sim == NULL) { cam_simq_free(devq); return (ENXIO); } if (xpt_bus_register(vpo->sim, /*bus*/0) != CAM_SUCCESS) { cam_sim_free(vpo->sim, /*free_devq*/TRUE); return (ENXIO); } /* all went ok */ vpo_cam_rescan(vpo); /* have CAM rescan the bus */ return (0); Jonathon -- Microsoft complaining about the source license used by Linux is like the event horizon calling the kettle black. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010622183909.A60256>