public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Mike Christie <michaelc@cs.wisc.edu>
To: James.Smart@Emulex.Com
Cc: devel@open-fcoe.org, linux-scsi@vger.kernel.org
Subject: Re: [Open-FCoE] [PATCH 1/1] libfc: fix queue command rport checks
Date: Wed, 16 Jul 2008 15:49:26 -0500	[thread overview]
Message-ID: <487E5ED6.9040302@cs.wisc.edu> (raw)
In-Reply-To: <D1D4C3FF75F9354393DB8314DF43DEF2E7F025@xbl3.ma.emulex.com>

James.Smart@Emulex.Com wrote:
>  
> 
>> -----Original Message-----
>> From: Mike Christie [mailto:michaelc@cs.wisc.edu] 
>>
>>> So during a clean shutdown are drivers supposed to remove 
>> the targets by 
>>> calling scsi_remove_target to remove the devices, then 
>> remove the rports 
>>> through the class?
>> Or for the case where we are stopping a host (rmmod or single 
>> host stop 
>> like with fcoe), should drivers call
> 
> Yes - the steps below is what the drivers do today.  And this does all
> work without failing the cache sync (unless something's changed recently
> in the midlayer above us).

You mean if I do rmmod lpfc it should work today? I do not think it 
works anymore because in fc_remove_host we do this:

fc_remove_host()

         /* Remove any remote ports */
         list_for_each_entry_safe(rport, next_rport,
                         &fc_host->rports, peers) {
                 list_del(&rport->peers);
                 rport->port_state = FC_PORTSTATE_DELETED;
                 fc_queue_work(shost, &rport->rport_delete_work);
         }


We set the rport->port_state to deleted before removing the target, so 
when the cache sync is sent later as a result of fc_rport_final_delete 
calling scsi_remove_target, the fc_remote_port_chkready checks in lpfc 
or qla2xxx or mpt's queeucommand will fail the command with 
DID_NO_CONNECT (fc_remote_port_chkready will

> 
>> 1. fc_remove_host()
>> 	This could be modified to cleanup shutdown targets then 
>> remove rports. 
>> We could then have a rport shutdown callback which the class 
>> could call 
>> and drivers could cleanup and shutdown the rport here before 
>> it is freed.
> 
> Is this related to your new scsi-target block code ?

No. It is unrelated. The block code patch is just to handle the case 
where when fc_timeout_fail_rport_io calls terminate_rport_io, and we 
will fail IO in the driver, but if there is IO in the blocked request 
queues we will just queue that back up until dev loss tmo fires. The 
problem there is because the fc_remote_port_chkready calls in the LLDs 
queuecommand will see the rport is blocked with a dev loss pending they 
will return DID_IMM_RETRY.

So if you have fast io fail tmo at 3 seconds and dev loss tmo at 120 
seconds, we could get initial IO errors after 3 seconds, but IO in the 
blocked queue will not be sent upwards until 120 seconds later. With the 
block patches all the IO will be sent upwards after 3 seconds.


> Yes - agree with your comment - we can change it so that it cleansup
> the blocked target, then terminates the rport.
>> 2. scsi_remove_host()
>>
>> 3. cleanup internal host resources.
>>
>> 4. scsi_put_host().
>>
> 
> 
> -- james
> 
> 
> 


  reply	other threads:[~2008-07-16 20:49 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-16 18:50 [PATCH 1/1] libfc: fix queue command rport checks michaelc-hcNo3dDEHLuVc3sceRu5cw
     [not found] ` <1216234249-10812-1-git-send-email-michaelc-hcNo3dDEHLuVc3sceRu5cw@public.gmane.org>
2008-07-16 18:56   ` Mike Christie
2008-07-16 19:08     ` James.Smart
     [not found]       ` <D1D4C3FF75F9354393DB8314DF43DEF2E7F01C-0GoafHKvaWWVoqRKY1PiFtBPR1lH4CV8@public.gmane.org>
2008-07-16 19:36         ` Mike Christie
2008-07-16 19:45           ` [Open-FCoE] " Mike Christie
2008-07-16 19:51             ` Mike Christie
2008-07-16 21:11               ` James.Smart-iH1Dq9VlAzfQT0dZR+AlfA
2008-07-16 21:22                 ` [Open-FCoE] " Mike Christie
2008-07-17 13:43                   ` James.Smart-iH1Dq9VlAzfQT0dZR+AlfA
2008-07-16 20:07             ` James.Smart-iH1Dq9VlAzfQT0dZR+AlfA
2008-07-16 20:49               ` Mike Christie [this message]
     [not found]                 ` <487E5ED6.9040302-hcNo3dDEHLuVc3sceRu5cw@public.gmane.org>
2008-07-16 20:55                   ` Mike Christie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=487E5ED6.9040302@cs.wisc.edu \
    --to=michaelc@cs.wisc.edu \
    --cc=James.Smart@Emulex.Com \
    --cc=devel@open-fcoe.org \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox