• Rob Love's avatar
    [SCSI] fcoe: Only rmmod fcoe.ko if there are no active connections · 6409ea65
    Rob Love authored
    Currently we're gracefully tearing down each active connection
    when fcoe.ko is removed. We shouldn't allow the user to destroy
    connections by removing the module. We should force the user to
    destroy each connection and then the module can be removed.
    
    This patch makes it so a refrerence count on the module is taken
    each time a fcoe_interface is created. The reference count
    is dropped when the fcoe_interface is destroyed. This makes it
    so that module_exit() doesn't get called unless all fcoe_interfaces
    have been destroyed.
    
    This patch leaves the removal of interfaces in the module_exit
    routine so that if the user does a 'rmmod -f' we'll clean everything
    up before removing the module.
    
    The module_put line was put before the out_putdev goto line because
    we should only be decrementing the reference count if a
    fcoe_interface is actually destroyed. If we can't find the netdev
    or the fcoe_interface then it's assumed that something else has
    destroyed the fcoe_interface and it would have decremented the
    reference count at that time.
    Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    6409ea65
fcoe.c 69.2 KB