diff mbox

multipathd: fail path when path check timeout

Message ID OF8F7422C1.AAA99072-ON48258049.002567ED-48258049.00258956@zte.com.cn (mailing list archive)
State Not Applicable, archived
Delegated to: Mike Snitzer
Headers show

Commit Message

tang.junhui@zte.com.cn Oct. 11, 2016, 6:50 a.m. UTC
Please have a review for this patch, any comment will be highly 
appreciated.




发件人:         tang.junhui@zte.com.cn
收件人:         christophe varoqui <christophe.varoqui@free.fr>, 
抄送:   dm-devel@redhat.com, zhang.kai16@zte.com.cn, "tang.junhui" 
<tang.junhui@zte.com.cn>
日期:   2016/08/10 16:11
主题:   [PATCH] multipathd: fail path when path check timeout



From: "tang.junhui" <tang.junhui@zte.com.cn>


path should be failed when path status is PATH_TIMEOUT after check,
otherwise, the valid number of paths in the map would be increased when
the path status is PATH_UP after the next turn check, which would cause
the valid number of paths exceeding the total number of paths in the map.

Signed-off-by: tang.junhui <tang.junhui@zte.com.cn>

---
 multipathd/main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

                                                 /*
                                                  * proactively fail path 
in the DM
                                                  */
-- 
2.8.1.windows.1
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Comments

Christophe Varoqui Oct. 11, 2016, 6:55 a.m. UTC | #1
Merged.
Thanks.

On Tue, Oct 11, 2016 at 8:50 AM, <tang.junhui@zte.com.cn> wrote:

> Please have a review for this patch, any comment will be highly
> appreciated.
>
>
>
>
> 发件人:         tang.junhui@zte.com.cn
> 收件人:         christophe varoqui <christophe.varoqui@free.fr>,
> 抄送:        dm-devel@redhat.com, zhang.kai16@zte.com.cn, "tang.junhui" <
> tang.junhui@zte.com.cn>
> 日期:         2016/08/10 16:11
> 主题:        [PATCH] multipathd: fail path when path check timeout
> ------------------------------
>
>
>
> From: "tang.junhui" <tang.junhui@zte.com.cn>
>
> path should be failed when path status is PATH_TIMEOUT after check,
> otherwise, the valid number of paths in the map would be increased when
> the path status is PATH_UP after the next turn check, which would cause
> the valid number of paths exceeding the total number of paths in the map.
>
> Signed-off-by: tang.junhui <tang.junhui@zte.com.cn>
> ---
> multipathd/main.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/multipathd/main.c b/multipathd/main.c
> index f5e9a01..01f1e58 100644
> --- a/multipathd/main.c
> +++ b/multipathd/main.c
> @@ -1585,7 +1585,7 @@ check_path (struct vectors * vecs, struct path * pp,
> int ticks)
>                                   pp->checkint = conf->checkint;
>                                   put_multipath_config(conf);
>
> -                                  if (newstate == PATH_DOWN || newstate
> == PATH_SHAKY) {
> +                                  if (newstate == PATH_DOWN || newstate
> == PATH_SHAKY || newstate == PATH_TIMEOUT) {
>                                                    /*
>                                                     * proactively fail
> path in the DM
>                                                     */
> --
> 2.8.1.windows.1
>
>
>
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
Benjamin Marzinski Oct. 12, 2016, 2:54 a.m. UTC | #2
On Tue, Oct 11, 2016 at 02:50:00PM +0800, tang.junhui@zte.com.cn wrote:
>    Please have a review for this patch, any comment will be highly
>    appreciated.

This is clearly correct. I suspect that there will be other places where
we need to also check for PATH_TIMEOUT, since it is basically the same
as PATH_DOWN, except with a different state name. For instance, we
only log error messages on repeated checks for (newstate == PATH_DOWN),
and we should probably do that for PATH_TIMEOUT as well. There are
probably more instances outside of check_path.

-Ben

> 
>    ������:         tang.junhui@zte.com.cn
>    �ռ���:         christophe varoqui <christophe.varoqui@free.fr>,
>    ����:        dm-devel@redhat.com, zhang.kai16@zte.com.cn, "tang.junhui"
>    <tang.junhui@zte.com.cn>
>    ����:         2016/08/10 16:11
>    ����:        [PATCH] multipathd: fail path when path check timeout
> 
>    --------------------------------------------------------------------------
> 
>    From: "tang.junhui" <tang.junhui@zte.com.cn>
> 
>    path should be failed when path status is PATH_TIMEOUT after check,
>    otherwise, the valid number of paths in the map would be increased when
>    the path status is PATH_UP after the next turn check, which would cause
>    the valid number of paths exceeding the total number of paths in the map.
> 
>    Signed-off-by: tang.junhui <tang.junhui@zte.com.cn>
>    ---
>    multipathd/main.c | 2 +-
>    1 file changed, 1 insertion(+), 1 deletion(-)
> 
>    diff --git a/multipathd/main.c b/multipathd/main.c
>    index f5e9a01..01f1e58 100644
>    --- a/multipathd/main.c
>    +++ b/multipathd/main.c
>    @@ -1585,7 +1585,7 @@ check_path (struct vectors * vecs, struct path * pp,
>    int ticks)
>                                      pp->checkint = conf->checkint;
>                                      put_multipath_config(conf);
> 
>    -                                  if (newstate == PATH_DOWN || newstate
>    == PATH_SHAKY) {
>    +                                  if (newstate == PATH_DOWN || newstate
>    == PATH_SHAKY || newstate == PATH_TIMEOUT) {
>                                                       /*
>                                                        * proactively fail
>    path in the DM
>                                                        */
>    --
>    2.8.1.windows.1

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
tang.junhui@zte.com.cn Oct. 12, 2016, 3:20 a.m. UTC | #3
Hello, Ben

Thanks for your review,
This problem is found by our automatic testing,
I will spend more time to correct other similar bugs in the next patch。

Cheers,
Tang



发件人:         "Benjamin Marzinski" <bmarzins@redhat.com>
收件人:         tang.junhui@zte.com.cn, 
抄送:   dm-devel@redhat.com, zhang.kai16@zte.com.cn, 
bart.vanassche@sandisk.com
日期:   2016/10/12 11:02
主题:   Re: [dm-devel] [PATCH] multipathd: fail path when path check 
timeout
发件人: dm-devel-bounces@redhat.com



On Tue, Oct 11, 2016 at 02:50:00PM +0800, tang.junhui@zte.com.cn wrote:
>    Please have a review for this patch, any comment will be highly

>    appreciated.


This is clearly correct. I suspect that there will be other places where
we need to also check for PATH_TIMEOUT, since it is basically the same
as PATH_DOWN, except with a different state name. For instance, we
only log error messages on repeated checks for (newstate == PATH_DOWN),
and we should probably do that for PATH_TIMEOUT as well. There are
probably more instances outside of check_path.

-Ben

> 

>    ������:         tang.junhui@zte.com.cn

>    �ռ���:         christophe varoqui <christophe.varoqui@free.fr>,

>    ����:        dm-devel@redhat.com, zhang.kai16@zte.com.cn, 

"tang.junhui"
>    <tang.junhui@zte.com.cn>

>    ����:         2016/08/10 16:11

>    ����:        [PATCH] multipathd: fail path when path check 

timeout
> 

> 

--------------------------------------------------------------------------
> 

>    From: "tang.junhui" <tang.junhui@zte.com.cn>

> 

>    path should be failed when path status is PATH_TIMEOUT after check,

>    otherwise, the valid number of paths in the map would be increased 

when
>    the path status is PATH_UP after the next turn check, which would 

cause
>    the valid number of paths exceeding the total number of paths in the 

map.
> 

>    Signed-off-by: tang.junhui <tang.junhui@zte.com.cn>

>    ---

>    multipathd/main.c | 2 +-

>    1 file changed, 1 insertion(+), 1 deletion(-)

> 

>    diff --git a/multipathd/main.c b/multipathd/main.c

>    index f5e9a01..01f1e58 100644

>    --- a/multipathd/main.c

>    +++ b/multipathd/main.c

>    @@ -1585,7 +1585,7 @@ check_path (struct vectors * vecs, struct path 

* pp,
>    int ticks)

>                                      pp->checkint = conf->checkint;

>                                      put_multipath_config(conf);

> 

>    -                                  if (newstate == PATH_DOWN || 

newstate
>    == PATH_SHAKY) {

>    +                                  if (newstate == PATH_DOWN || 

newstate
>    == PATH_SHAKY || newstate == PATH_TIMEOUT) {

>                                                       /*

>                                                        * proactively 

fail
>    path in the DM

>                                                        */

>    --

>    2.8.1.windows.1


--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
diff mbox

Patch

diff --git a/multipathd/main.c b/multipathd/main.c
index f5e9a01..01f1e58 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -1585,7 +1585,7 @@  check_path (struct vectors * vecs, struct path * pp, 
int ticks)
                                 pp->checkint = conf->checkint;
                                 put_multipath_config(conf);
 
-                                if (newstate == PATH_DOWN || newstate == 
PATH_SHAKY) {
+                                if (newstate == PATH_DOWN || newstate == 
PATH_SHAKY || newstate == PATH_TIMEOUT) {