All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Christie <michaelc@cs.wisc.edu>
To: Robert Love <robert.w.love@intel.com>
Cc: James.Bottomley@suse.de, linux-scsi@vger.kernel.org,
	Vasu Dev <vasu.dev@intel.com>
Subject: Re: [PATCH 03/28] libfc: IO errors on link down due to cable unplug
Date: Tue, 20 Jul 2010 22:29:10 -0500	[thread overview]
Message-ID: <4C466986.5040801@cs.wisc.edu> (raw)
In-Reply-To: <20100720221920.17116.59505.stgit@localhost.localdomain>

On 07/20/2010 05:19 PM, Robert Love wrote:
> From: Vasu Dev<vasu.dev@intel.com>
>
> In this case, sync IO fails with EIO(5) errors as:-
>
> "Thread:1 System call error:5 - Input/output error (::pwrite() failed)".
>
> This is due to IO time out while libfc doing link down processing
> to block all rports and if timed out IO was at last retry
> attempt then it fails to user with EIO error followed by
> these log messages.
>
> [77848.612169] host2: rport bf0015: Delete port
> [77848.612221] host2: rport e10aef: work delete
> [77848.612232] host2: rport e10002: work event 3
> [77848.612422] sd 2:0:1:1: [sdi] Unhandled error code
> [77848.612426] sd 2:0:1:1: [sdi] Result: hostbyte=DID_ERROR
> driverbyte=DRIVER_OK
> [77848.612431] sd 2:0:1:1: [sdi] CDB: Write(10): 2a 00 00 00 11 20 00 00 20 00
> [77848.612445] end_request: I/O error, dev sdi, sector 4384
> [77848.612553] sd 2:0:1:2: [sdj] Unhandled error code
>
> To fix these EIO errors, such timed out incomplete IOs needs
> to be re-queued without counting retry attempt and this patch
> does that using DID_REQUEUE scsi code.
>
> Signed-off-by: Vasu Dev<vasu.dev@intel.com>
> Signed-off-by: Robert Love<robert.w.love@intel.com>
> ---
>   drivers/scsi/libfc/fc_fcp.c |    5 +++++
>   1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c
> index a0a3ae7..61a1297 100644
> --- a/drivers/scsi/libfc/fc_fcp.c
> +++ b/drivers/scsi/libfc/fc_fcp.c
> @@ -1971,6 +1971,11 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp)
>   		break;
>   	}
>
> +	if (lport->state != LPORT_ST_READY&&  fsp->status_code != FC_COMPLETE) {
> +		sc_cmd->result = (DID_REQUEUE<<  16);
> +		FC_FCP_DBG(fsp, "Returning DID_REQUEUE to scsi-ml\n");
> +	}
> +

If it is a tape command, you do not want to use DID_REQUEUE do you?

You are using the fc class API to delete the rport in this scenario, 
right? If so normally I think you would use DID_TRANSPORT_DISRUPTED. 
This is going to give you an error if it is the last retry like 
DID_ERROR though.

It seems weird to try and work around the IO erorr in this case because 
it is the last retry so it should fail. If the port keeps going down and 
up, then with your patch you could keep retrying the IO forever.

This isn't one of those races where you are blocking the rport, but the 
IO keeps coming around so the retries are used really quickly right (the 
driver looks like it has the fc class and internal state checks to 
prevent this but I wanted to make sure).

  reply	other threads:[~2010-07-21  3:25 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-20 22:19 [PATCH 00/28] libfc, libfcoe and fcoe updates for scsi-misc Robert Love
2010-07-20 22:19 ` [PATCH 01/28] libfc: fix slowpath error from WARN_ON in fc_fcp_send_data Robert Love
2010-07-20 22:19 ` [PATCH 02/28] fcoe: make it possible to verify fcoe with sparse Robert Love
2010-07-20 22:19 ` [PATCH 03/28] libfc: IO errors on link down due to cable unplug Robert Love
2010-07-21  3:29   ` Mike Christie [this message]
2010-07-27 21:32     ` Vasu Dev
2010-07-27 22:08       ` Mike Christie
2010-07-28  7:32       ` Mike Christie
2010-07-30 20:34         ` Vasu Dev
2010-07-20 22:19 ` [PATCH 04/28] fcoe: cleans up fcoe_disable and fcoe_enable Robert Love
2010-07-20 22:19 ` [PATCH 05/28] fcoe: adds src and dest mac address checking for fcoe frames Robert Love
2010-07-20 22:19 ` [PATCH 06/28] libfc: convert rport lookup to be RCU safe Robert Love
2010-07-20 22:19 ` [PATCH 07/28] libfc: provide space for LLD after remote port structure Robert Love
2010-07-20 22:19 ` [PATCH 08/28] libfcoe: convert FIP to lock with mutex instead of spin lock Robert Love
2010-07-20 22:19 ` [PATCH 09/28] libfc: add discovery-private pointer for LLD Robert Love
2010-07-20 22:19 ` [PATCH 10/28] libfcoe: fcoe: fnic: change fcoe_ctlr_init interface to specify mode Robert Love
2010-07-20 22:20 ` [PATCH 11/28] libfc: Add local port point-to-multipoint flag Robert Love
2010-07-20 22:20 ` [PATCH 12/28] libfc: add FLOGI state to rport for VN2VN Robert Love
2010-07-20 22:20 ` [PATCH 13/28] libfc: track FIP exchanges Robert Love
2010-07-20 22:20 ` [PATCH 14/28] libfcoe: add protocol description of FIP VN2VN mode Robert Love
2010-07-20 22:20 ` [PATCH 15/28] libfcoe: add state change debugging Robert Love
2010-07-20 22:20 ` [PATCH 16/28] libfcoe: fcoe: fnic: add FIP VN2VN point-to-multipoint support Robert Love
2010-07-20 22:20 ` [PATCH 17/28] libfcoe: Fix FIP ELS encapsulation details for FLOGI responses Robert Love
2010-07-20 22:20 ` [PATCH 18/28] fcoe libfcoe: use correct FC-MAP for VN2VN mode Robert Love
2010-07-20 22:20 ` [PATCH 19/28] fcoe: config via separate create_vn2vn module parameter Robert Love
2010-07-20 22:20 ` [PATCH 20/28] libfc: eliminate rport LOGO state Robert Love
2010-07-20 22:20 ` [PATCH 21/28] libfc: add fc_frame_sid() and fc_frame_did() functions Robert Love
2010-07-20 22:21 ` [PATCH 22/28] libfc: add fc_fill_reply_hdr() and fc_fill_hdr() Robert Love
2010-07-20 22:21 ` [PATCH 23/28] libfc: add interface to allocate a sequence for incoming requests Robert Love
2010-07-20 22:21 ` [PATCH 24/28] libfc: don't require a local exchange " Robert Love
2010-07-20 22:21 ` [PATCH 25/28] fcoe: fix offload feature flag change from netdev Robert Love
2010-07-20 22:21 ` [PATCH 26/28] Revert "[SCSI] fcoe: Fix using VLAN ID in creating lport's WWWN/WWPN" Robert Love
2010-07-20 22:21 ` [PATCH 27/28] libfc: Add retry logic to lport state machine when receiving LS_RJT Robert Love
2010-07-20 22:21 ` [PATCH 28/28] fcoe: remove check for zero fabric name Robert Love

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=4C466986.5040801@cs.wisc.edu \
    --to=michaelc@cs.wisc.edu \
    --cc=James.Bottomley@suse.de \
    --cc=linux-scsi@vger.kernel.org \
    --cc=robert.w.love@intel.com \
    --cc=vasu.dev@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.