[SCSI] fcoe: cleans up fcoe_disable and fcoe_enable
authorVasu Dev <vasu.dev@intel.com>
Tue, 20 Jul 2010 22:19:26 +0000 (15:19 -0700)
committerJames Bottomley <James.Bottomley@suse.de>
Wed, 28 Jul 2010 14:05:46 +0000 (09:05 -0500)
The fc_fabric_logoff and fc_fabric_login are redundant
here after recently added fcoe_ctlr_link_down/up to
these functions, therefore this patch removes logoff
and login to only use link down and up here. This works
best for their current usages with fcoe DCB link down or up.

This also works well to avoid EIO errors when fcoe DCB link
goes down as lport state moves out of ready quickly from
fcoe_ctlr_link_down and that allows re-queuing timed out IOs
for this case also.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/fcoe/fcoe.c

index 44a07593de56020b444ab64c84074b512d07aef9..d340cf2d857a3356ddce61d820c2993aeb29e83d 100644 (file)
@@ -1918,8 +1918,8 @@ static int fcoe_disable(const char *buffer, struct kernel_param *kp)
        rtnl_unlock();
 
        if (fcoe) {
-               fc_fabric_logoff(fcoe->ctlr.lp);
                fcoe_ctlr_link_down(&fcoe->ctlr);
+               fcoe_clean_pending_queue(fcoe->ctlr.lp);
        } else
                rc = -ENODEV;
 
@@ -1972,12 +1972,10 @@ static int fcoe_enable(const char *buffer, struct kernel_param *kp)
        fcoe = fcoe_hostlist_lookup_port(netdev);
        rtnl_unlock();
 
-       if (fcoe) {
-               if (!fcoe_link_ok(fcoe->ctlr.lp))
-                       fcoe_ctlr_link_up(&fcoe->ctlr);
-               rc = fc_fabric_login(fcoe->ctlr.lp);
-       } else
+       if (!fcoe)
                rc = -ENODEV;
+       else if (!fcoe_link_ok(fcoe->ctlr.lp))
+               fcoe_ctlr_link_up(&fcoe->ctlr);
 
        dev_put(netdev);
 out_nodev:
This page took 0.028292 seconds and 5 git commands to generate.