diff mbox

Avoid that reloading a map sporadically triggers I/O errors

Message ID 85315cb2-6908-70c6-78b7-06b6c1071f6b@sandisk.com (mailing list archive)
State Not Applicable, archived
Delegated to: christophe varoqui
Headers show

Commit Message

Bart Van Assche Nov. 18, 2016, 9:33 p.m. UTC
Avoid that reloading a map while there are no paths triggers a flush
and hence unwanted I/O errors if 'queue_if_no_path' is enabled.

Fixes: commit d569988e7528 ("libmultipath: Fixup 'DM_DEVICE_RELOAD' handling")
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: Hannes Reinecke <hare@suse.de>
---
 libmultipath/devmapper.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Mike Snitzer Nov. 18, 2016, 9:43 p.m. UTC | #1
On Fri, Nov 18 2016 at  4:33pm -0500,
Bart Van Assche <bart.vanassche@sandisk.com> wrote:

> Avoid that reloading a map while there are no paths triggers a flush
> and hence unwanted I/O errors if 'queue_if_no_path' is enabled.

I assume you meant: "if 'queue_if_no_path' is _not_ enabled." ?

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
Bart Van Assche Nov. 18, 2016, 9:51 p.m. UTC | #2
On 11/18/2016 01:43 PM, Mike Snitzer wrote:
> On Fri, Nov 18 2016 at  4:33pm -0500,
> Bart Van Assche <bart.vanassche@sandisk.com> wrote:
>> Avoid that reloading a map while there are no paths triggers a flush
>> and hence unwanted I/O errors if 'queue_if_no_path' is enabled.
>
> I assume you meant: "if 'queue_if_no_path' is _not_ enabled." ?

No. Only with 'queue_if_no_path' enabled reporting an I/O error because 
no paths are available is undesired.

Bart.

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
Bart Van Assche Dec. 7, 2016, 11:37 p.m. UTC | #3
Christophe and Hannes, do you want to comment on this patch?

Thanks,

Bart.

On 11/18/2016 01:33 PM, Bart Van Assche wrote:
> Avoid that reloading a map while there are no paths triggers a flush
> and hence unwanted I/O errors if 'queue_if_no_path' is enabled.
>
> Fixes: commit d569988e7528 ("libmultipath: Fixup 'DM_DEVICE_RELOAD' handling")
> Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
> Cc: Hannes Reinecke <hare@suse.de>
> ---
>  libmultipath/devmapper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
> index f92ebce..31f1962 100644
> --- a/libmultipath/devmapper.c
> +++ b/libmultipath/devmapper.c
> @@ -390,7 +390,7 @@ int dm_addmap_reload(struct multipath *mpp, char *params, int flush)
>  			      params, ADDMAP_RO, SKIP_KPARTX_OFF);
>  	}
>  	if (r)
> -		r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, flush,
> +		r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, !flush,
>  				 1, udev_flags, 0);
>  	return r;
>  }
>

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
Benjamin Marzinski Jan. 4, 2017, 7:56 p.m. UTC | #4
On Wed, Dec 07, 2016 at 03:37:44PM -0800, Bart Van Assche wrote:

ACK

-Ben

> Christophe and Hannes, do you want to comment on this patch?
> 
> Thanks,
> 
> Bart.
> 
> On 11/18/2016 01:33 PM, Bart Van Assche wrote:
> >Avoid that reloading a map while there are no paths triggers a flush
> >and hence unwanted I/O errors if 'queue_if_no_path' is enabled.
> >
> >Fixes: commit d569988e7528 ("libmultipath: Fixup 'DM_DEVICE_RELOAD' handling")
> >Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
> >Cc: Hannes Reinecke <hare@suse.de>
> >---
> > libmultipath/devmapper.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> >diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
> >index f92ebce..31f1962 100644
> >--- a/libmultipath/devmapper.c
> >+++ b/libmultipath/devmapper.c
> >@@ -390,7 +390,7 @@ int dm_addmap_reload(struct multipath *mpp, char *params, int flush)
> > 			      params, ADDMAP_RO, SKIP_KPARTX_OFF);
> > 	}
> > 	if (r)
> >-		r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, flush,
> >+		r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, !flush,
> > 				 1, udev_flags, 0);
> > 	return r;
> > }
> >
> 
> --
> 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
Bart Van Assche Feb. 27, 2017, 3:18 p.m. UTC | #5
Hello Christophe,

The patch below was posted more than three months ago but has not yet 
received any feedback from you. Had I sent this patch to the right 
person? Do you perhaps want me to repost it?

Bart.

On 01/04/17 11:56, Benjamin Marzinski wrote:
> On Wed, Dec 07, 2016 at 03:37:44PM -0800, Bart Van Assche wrote:
>
> ACK
>
> -Ben
>
>> Christophe and Hannes, do you want to comment on this patch?
>>
>> Thanks,
>>
>> Bart.
>>
>> On 11/18/2016 01:33 PM, Bart Van Assche wrote:
>>> Avoid that reloading a map while there are no paths triggers a flush
>>> and hence unwanted I/O errors if 'queue_if_no_path' is enabled.
>>>
>>> Fixes: commit d569988e7528 ("libmultipath: Fixup 'DM_DEVICE_RELOAD' handling")
>>> Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
>>> Cc: Hannes Reinecke <hare@suse.de>
>>> ---
>>> libmultipath/devmapper.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
>>> index f92ebce..31f1962 100644
>>> --- a/libmultipath/devmapper.c
>>> +++ b/libmultipath/devmapper.c
>>> @@ -390,7 +390,7 @@ int dm_addmap_reload(struct multipath *mpp, char *params, int flush)
>>> 			      params, ADDMAP_RO, SKIP_KPARTX_OFF);
>>> 	}
>>> 	if (r)
>>> -		r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, flush,
>>> +		r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, !flush,
>>> 				 1, udev_flags, 0);
>>> 	return r;
>>> }

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
Christophe Varoqui Feb. 27, 2017, 9:06 p.m. UTC | #6
Oh yes, sorry, this patch slipped past my cursor.

This patch highlights the lack of consistency in function prototypes in
devmapper.c : some using "no_flush", others using "flush".

Anyway, your patch is now applied.
Thanks.

On Mon, Feb 27, 2017 at 4:18 PM, Bart Van Assche <bart.vanassche@sandisk.com
> wrote:

> Hello Christophe,
>
> The patch below was posted more than three months ago but has not yet
> received any feedback from you. Had I sent this patch to the right person?
> Do you perhaps want me to repost it?
>
> Bart.
>
>
> On 01/04/17 11:56, Benjamin Marzinski wrote:
>
>> On Wed, Dec 07, 2016 at 03:37:44PM -0800, Bart Van Assche wrote:
>>
>> ACK
>>
>> -Ben
>>
>> Christophe and Hannes, do you want to comment on this patch?
>>>
>>> Thanks,
>>>
>>> Bart.
>>>
>>> On 11/18/2016 01:33 PM, Bart Van Assche wrote:
>>>
>>>> Avoid that reloading a map while there are no paths triggers a flush
>>>> and hence unwanted I/O errors if 'queue_if_no_path' is enabled.
>>>>
>>>> Fixes: commit d569988e7528 ("libmultipath: Fixup 'DM_DEVICE_RELOAD'
>>>> handling")
>>>> Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
>>>> Cc: Hannes Reinecke <hare@suse.de>
>>>> ---
>>>> libmultipath/devmapper.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
>>>> index f92ebce..31f1962 100644
>>>> --- a/libmultipath/devmapper.c
>>>> +++ b/libmultipath/devmapper.c
>>>> @@ -390,7 +390,7 @@ int dm_addmap_reload(struct multipath *mpp, char
>>>> *params, int flush)
>>>>                               params, ADDMAP_RO, SKIP_KPARTX_OFF);
>>>>         }
>>>>         if (r)
>>>> -               r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, flush,
>>>> +               r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, !flush,
>>>>                                  1, udev_flags, 0);
>>>>         return r;
>>>> }
>>>>
>>>
>
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
diff mbox

Patch

diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
index f92ebce..31f1962 100644
--- a/libmultipath/devmapper.c
+++ b/libmultipath/devmapper.c
@@ -390,7 +390,7 @@  int dm_addmap_reload(struct multipath *mpp, char *params, int flush)
 			      params, ADDMAP_RO, SKIP_KPARTX_OFF);
 	}
 	if (r)
-		r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, flush,
+		r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, !flush,
 				 1, udev_flags, 0);
 	return r;
 }