diff mbox

[1/1] multipath-tools: Change path checker for IBM IPR devices

Message ID 20140924195752.289011902@linux.vnet.ibm.com (mailing list archive)
State Not Applicable, archived
Delegated to: Mike Snitzer
Headers show

Commit Message

wenxiong@linux.vnet.ibm.com Sept. 24, 2014, 7:57 p.m. UTC
We would like to change path checker to directio for IBM IPR devices.

Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>
---
 libmultipath/hwtable.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Hannes Reinecke Sept. 25, 2014, 6:29 a.m. UTC | #1
On 09/24/2014 09:57 PM, wenxiong@linux.vnet.ibm.com wrote:
> We would like to change path checker to directio for IBM IPR devices.
> 
> Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>
> ---
>  libmultipath/hwtable.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Index: b/libmultipath/hwtable.c
> ===================================================================
> --- a/libmultipath/hwtable.c	2014-09-23 17:39:27.000000000 -0500
> +++ b/libmultipath/hwtable.c	2014-09-23 17:40:31.419667000 -0500
> @@ -630,7 +630,7 @@ static struct hwentry default_hw[] = {
>  		.pgfailback    = -FAILBACK_IMMEDIATE,
>  		.rr_weight     = RR_WEIGHT_NONE,
>  		.no_path_retry = NO_PATH_RETRY_UNDEF,
> -		.checker_name  = TUR,
> +		.checker_name  = DIRECTIO,
>  		.prio_name     = PRIO_ALUA,
>  		.prio_args     = NULL,
>  	},
> 
> -- -- dm-devel mailing list dm-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
Any particular reason for doing so?

Using 'directio' has the drawback that it might stall under higher
load, as it's being added to the _tail_ of the request queue.
TUR is using the 'SG_IO' ioctl, which is added to the head of the
request_queue and hence won't be stalled ...

Cheers,

Hannes
Brian King Sept. 25, 2014, 4:47 p.m. UTC | #2
On 09/25/2014 01:29 AM, Hannes Reinecke wrote:
> On 09/24/2014 09:57 PM, wenxiong@linux.vnet.ibm.com wrote:
>> We would like to change path checker to directio for IBM IPR devices.
>>
>> Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>
>> ---
>>  libmultipath/hwtable.c |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> Index: b/libmultipath/hwtable.c
>> ===================================================================
>> --- a/libmultipath/hwtable.c	2014-09-23 17:39:27.000000000 -0500
>> +++ b/libmultipath/hwtable.c	2014-09-23 17:40:31.419667000 -0500
>> @@ -630,7 +630,7 @@ static struct hwentry default_hw[] = {
>>  		.pgfailback    = -FAILBACK_IMMEDIATE,
>>  		.rr_weight     = RR_WEIGHT_NONE,
>>  		.no_path_retry = NO_PATH_RETRY_UNDEF,
>> -		.checker_name  = TUR,
>> +		.checker_name  = DIRECTIO,
>>  		.prio_name     = PRIO_ALUA,
>>  		.prio_args     = NULL,
>>  	},
>>
>> -- -- dm-devel mailing list dm-devel@redhat.com
>> https://www.redhat.com/mailman/listinfo/dm-devel
> Any particular reason for doing so?
> 
> Using 'directio' has the drawback that it might stall under higher
> load, as it's being added to the _tail_ of the request queue.
> TUR is using the 'SG_IO' ioctl, which is added to the head of the
> request_queue and hence won't be stalled ...

The issue we've run into started when this patch started making its
way into distros:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/scsi/scsi_error.c?id=14216561e164671ce147458653b1fea06a4ada1e

That changed the behaviour for user initiated TUR commands. After an ipr
adapter gets reset, all disk array devices require a start unit command
to be issued to them before they will accept commands. So, with the SCSI
EH change, we now end up in a scenario with dual ipr adapters where the
TUR getting issued from the health checker returns with a Not Ready response
and since SCSI EH no longer triggers the Start Unit in this scenario,
the path never recovers.

The alternative solution would be to change the TUR path checker in multipath-tools
to issue a Start Unit if it sees a 02/04/02.

Thanks,

Brian
diff mbox

Patch

Index: b/libmultipath/hwtable.c
===================================================================
--- a/libmultipath/hwtable.c	2014-09-23 17:39:27.000000000 -0500
+++ b/libmultipath/hwtable.c	2014-09-23 17:40:31.419667000 -0500
@@ -630,7 +630,7 @@  static struct hwentry default_hw[] = {
 		.pgfailback    = -FAILBACK_IMMEDIATE,
 		.rr_weight     = RR_WEIGHT_NONE,
 		.no_path_retry = NO_PATH_RETRY_UNDEF,
-		.checker_name  = TUR,
+		.checker_name  = DIRECTIO,
 		.prio_name     = PRIO_ALUA,
 		.prio_args     = NULL,
 	},