Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Jun 2001 18:47:20 +0100
From:      j mckitrick <jcm@FreeBSD-uk.eu.org>
To:        freebsd-scsi@freebsd.org
Subject:   how to invalidate scsi connection to driver module
Message-ID:  <20010622184720.B60256@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-scsi" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010622184720.B60256>